Domanda

Richiediamo che tutte le richieste di download abbiano un accesso valido (non http) e generiamo ticket di transazione per ogni download.Se dovessi accedere a uno dei collegamenti di download e tentare di "ripetere" la transazione, utilizziamo i codici HTTP per inoltrarti la richiesta di ottenere un nuovo ticket di transazione.Funziona bene per la maggior parte degli utenti.Esiste tuttavia un piccolo sottoinsieme che utilizza acceleratori di download che tentano semplicemente di riprodurre più volte il ticket di transazione.

Quindi, per determinare se lo vogliamo o addirittura Potere supportino o meno gli acceleratori di download, stiamo cercando di capire come funzionano.

In che modo avere una seconda, terza o addirittura quarta connessione simultanea al server Web che fornisce un file statico accelera il processo di download?

Cosa fa il programma di accelerazione?

È stato utile?

Soluzione

Troverai una panoramica più completa degli acceleratori di download su Wikipedia.

L’accelerazione ha molteplici sfaccettature

Primo

Un vantaggio sostanziale dei download gestiti/accelerati è che lo strumento in questione ricorda gli offset Start/Stop trasferiti e utilizza intestazioni "parziali" e "intervallo" per richiedere parti del file anziché tutto.

Ciò significa che se qualcosa muore durante la transazione (ad esempio:TCP Timeout) si riconnette semplicemente da dove si era interrotto e non è necessario ricominciare da zero.

Pertanto, se si dispone di una connessione intermittente, il tempo di trasferimento aggregato viene notevolmente ridotto.

Secondo

Agli acceleratori di download piace suddividere un singolo trasferimento in diversi segmenti più piccoli di uguali dimensioni, utilizzando la stessa meccanica di avvio-intervallo-arresto, ed eseguirli in parallelo, il che migliora notevolmente il tempo di trasferimento su reti lente.

C'è questa cosa fastidiosa chiamata prodotto di ritardo della larghezza di banda in cui la dimensione dei buffer TCP alle due estremità esegue alcuni calcoli matematici insieme al tempo di ping per ottenere la velocità effettiva sperimentata, e questo in pratica significa che tempi di ping elevati limiteranno la tua velocità indipendentemente da come molti megabit/sec hanno tutte le connessioni provvisorie.

Tuttavia, questa limitazione sembra essere "per connessione", quindi più connessioni TCP a un singolo server possono aiutare a mitigare il calo delle prestazioni dovuto al tempo di ping a latenza elevata.

Pertanto, è meno probabile che le persone che vivono nelle vicinanze abbiano bisogno di effettuare un trasferimento segmentato, ma le persone che vivono in luoghi lontani hanno maggiori probabilità di trarre vantaggio dall'impazzire con la loro segmentazione.

In terzo luogo

In alcuni casi è possibile trovare più server che forniscono la stessa risorsa, a volte un singolo indirizzo DNS si collega a diversi indirizzi IP, oppure un server fa parte di una rete mirror di qualche tipo.E i gestori/acceleratori di download possono rilevarlo e applicare la tecnica di trasferimento segmentato su più server, consentendo al downloader di ottenere una maggiore larghezza di banda collettiva.

Supporto

Sostenere il primo tipo di accelerazione è ciò che personalmente suggerisco come "minimo" di supporto.Principalmente perché semplifica la vita degli utenti e riduce la quantità di trasferimento di dati aggregati che devi fornire poiché gli utenti non devono recuperare ripetutamente lo stesso contenuto.

E per facilitare questo, ti consigliamo di calcolare quanto hanno trasferito e di non far scadere il ticket finché non sembra "finito" (legando il traffico al primo IP che ha utilizzato il ticket), o un dato tempo "ragionevole" per scaricarlo è passato.cioè:dare loro una finestra di grazia prima di chiedere loro di ottenere un nuovo biglietto.

Supportare il secondo e il terzo ti dà punti bonus, e gli utenti generalmente lo desiderano almeno il secondo, soprattutto perché ai clienti internazionali non piace essere trattati come clienti di seconda classe semplicemente a causa del tempo di ping maggiore, e non consuma oggettivamente di più larghezza di banda in ogni senso che conta.La cosa peggiore che accade è che potrebbero rendere il throughput totale indesiderabile per il funzionamento del tuo servizio.

È ragionevolmente semplice offrire il primo tipo di vantaggio senza consentire il secondo, semplicemente limitando il numero di trasferimenti simultanei da un singolo biglietto.

Altri suggerimenti

Credo che l'idea sia che molti server limitino o distribuiscano uniformemente la larghezza di banda tra le connessioni.Avendo più connessioni, stai ingannando quel sistema e ottieni più della tua "giusta" quota di larghezza di banda.

È tutta una questione di Legge di Little.Nello specifico, ogni flusso al server Web vede una certa quantità di latenza TCP e quindi trasporterà solo una certa quantità di dati.Trucchi come aumentare la dimensione della finestra TCP e implementare acks selettivi aiutano, ma sono scarsamente implementati e generalmente causano più problemi di quanti ne risolvono.

Avere più flussi significa che la latenza osservata da ciascun flusso è meno importante man mano che il throughput globale aumenta complessivamente.

Un altro vantaggio chiave di un acceleratore di download anche quando si utilizza un singolo thread è che è generalmente migliore rispetto all'utilizzo dello strumento di download integrato nel browser Web.Ad esempio, se il browser Web decide di morire, lo strumento di download continuerà.E lo strumento di download potrebbe supportare funzionalità come la pausa/ripresa che il browser integrato non supporta.

Da quanto ho capito, un metodo utilizzato dagli acceleratori di download è l'apertura di molte connessioni TCP parallele: ciascuna connessione TCP può andare solo così velocemente ed è spesso limitata sul lato server.

TCP è implementato in modo tale che, se si verifica un timeout, il periodo di timeout viene aumentato.Ciò è molto efficace nel prevenire sovraccarichi di rete, a scapito della velocità sulle singole connessioni TCP.

Gli acceleratori di download possono aggirare questo problema aprendo dozzine di connessioni TCP e lasciando quelle che rallentano al di sotto di una certa soglia, quindi aprendone di nuove per sostituire le connessioni lente.

Sebbene efficace per un singolo utente, credo che sia una cattiva etichetta in generale.

Stai vedendo l'acceleratore di download che tenta di ri-autenticarsi utilizzando lo stesso ticket di transazione: ti consiglio di ignorare queste richieste.

Da: http://askville.amazon.com/download-accelerator-protocol-work-advantages-benefits-application-area-scope-plz-suggest-URLs/AnswerViewer.do?requestId=9337813

Citazione:Il modo più comune per accelerare i download è aprire download paralleli.Molti server limitano la larghezza di banda di una connessione, quindi aprirne di più in parallelo aumenta la velocità.Funziona specificando un offset che dovrebbe iniziare un download che è supportato sia per HTTP che per FTP.

Naturalmente questo modo di accelerare è abbastanza "antisociale".La limitazione della larghezza di banda è implementata per poter servire un numero maggiore di client, quindi l'utilizzo di questa tecnica riduce il numero massimo di peer che possono scaricare.Questo è il motivo per cui molti server limitano il numero di connessioni parallele (riconosciute dall'IP), ad es.molti server FTP lo fanno, quindi potresti riscontrare problemi se scarichi un file e provi a continuare a navigare utilizzando il browser.Tecnicamente si tratta di due connessioni parallele.

Un'altra tecnica per aumentare la velocità di download è una rete peer-to-peer in cui diverse fonti, ad es.limitati dal DSL asincrono sul lato upload vengono utilizzati per il download.

La maggior parte degli "acceleratori" di download in realtà non accelerano nulla.Ciò che sono bravi a fare è congestionare il traffico di rete, martellare il tuo server e rompere script personalizzati come hai visto.Fondamentalmente funziona così: invece di fare una richiesta e scaricare il file dall'inizio alla fine, fa diciamo quattro richieste... la prima viene scaricata dallo 0 al 25%, la seconda dal 25 al 50% e così via, e li fa tutti allo stesso tempo.L'unico caso particolare in cui questo aiuta qualcuno è se il loro ISP o firewall esegue una sorta di modellamento del traffico in modo tale che la velocità di download di un individuo sia limitata a un valore inferiore alla velocità di download totale.

Personalmente, se ti causa problemi, direi semplicemente di mettere un avviso che gli acceleratori di download non sono supportati e di chiedere agli utenti di scaricarli normalmente o utilizzando solo un singolo thread.

In genere non lo fanno.

Per rispondere alla sostanza della tua domanda, il presupposto è che il server limiti la velocità di download in base alla connessione, quindi il download simultaneo di più blocchi consentirà all'utente di sfruttare al massimo la larghezza di banda disponibile alla sua fine.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top