Question

Nous exigeons que toutes les demandes de téléchargement aient un identifiant de connexion valide (non http) et nous générons des tickets de transaction pour chaque téléchargement. Si vous deviez accéder à l’un des liens de téléchargement et tenter de "rejouer" Lors de la transaction, nous utilisons des codes HTTP pour vous transférer afin d’obtenir un nouveau ticket de transaction. Cela fonctionne très bien pour la majorité des utilisateurs. Cependant, un petit sous-ensemble utilise des accélérateurs de téléchargement qui tentent simplement de rejouer le ticket de transaction plusieurs fois.

Ainsi, afin de déterminer si nous voulons ou même pouvons prendre en charge les accélérateurs de téléchargement, nous essayons de comprendre leur fonctionnement.

Comment le fait d’avoir une deuxième, troisième, voire quatrième connexion simultanée au serveur Web fournissant un fichier statique accélère-t-il le processus de téléchargement?

Que fait le programme d'accélérateur?

Était-ce utile?

La solution

Vous obtiendrez un aperçu plus complet des accélérateurs de téléchargement à l'adresse wikipedia .

L'accélération comporte plusieurs facettes

premier

L’avantage principal des téléchargements gérés / accélérés est que l’outil en question garde en mémoire les décalages de démarrage / arrêt transférés et utilise le paramètre "partiel". et les en-têtes "range" pour demander des parties du fichier au lieu de tout.

Cela signifie que si quelque chose meurt en cours de transaction (par exemple: délai d'attente TCP), il se reconnecte à l'endroit où il s'est arrêté et vous n'avez pas à recommencer à zéro.

Ainsi, si vous avez une connexion intermittente, le temps de transfert total est considérablement réduit.

Deuxième

Les accélérateurs de téléchargement aiment séparer un seul transfert en plusieurs segments plus petits de taille égale, en utilisant les mêmes mécanismes de début de plage, et les exécuter en parallèle, ce qui améliore considérablement le temps de transfert sur des réseaux lents.

Il y a cette chose agaçante appelée bandwidth-delay-product où la taille des tampons TCP à l'une des extrémités fait des calculs en conjonction avec le temps de ping pour obtenir la vitesse réelle expérimentée, ce qui dans la pratique signifie que de longs temps de ping limiteront votre vitesse quel que soit le nombre de mégabits / s de toutes les connexions provisoires.

Toutefois, cette limitation semble être "par connexion", de sorte que plusieurs connexions TCP à un seul serveur peuvent aider à atténuer les conséquences du temps de ping de latence élevée sur les performances.

Par conséquent, les personnes vivant à proximité ne sont pas aussi susceptibles de faire un transfert segmenté, mais les personnes résidant dans des régions éloignées ont plus de chances de tirer le meilleur parti de la folie avec leur segmentation.

Troisièmement

Dans certains cas, il est possible de trouver plusieurs serveurs fournissant la même ressource, parfois une seule adresse DNS alternée à plusieurs adresses IP ou un serveur faisant partie d'un réseau en miroir. Et les gestionnaires de téléchargement / accélérateurs peuvent le détecter et appliquer la technique de transfert segmenté sur plusieurs serveurs, permettant ainsi au téléchargeur de bénéficier de davantage de bande passante collective.

Assistance

Soutenir le premier type d'accélération est ce que je suggère personnellement comme un "minimum". pour le soutien. Généralement, cela simplifie la vie des utilisateurs et réduit la quantité de transfert de données globale que vous devez fournir car les utilisateurs n'ont pas à récupérer le même contenu à plusieurs reprises.

Et pour vous faciliter la tâche, il vous est recommandé de calculer le montant de leur transfert et l’expiration du ticket tant qu’ils ne sont pas "finis". (tout en liant le trafic à la première adresse IP qui a utilisé le ticket), ou un temps "raisonnable" donné pour le télécharger est écoulé. C'est-à-dire: donnez-leur une fenêtre de grâce avant de demander un nouveau ticket.

Les deuxième et troisième soutiens vous rapportent des points de bonus, et les utilisateurs le souhaitent généralement au moins pour le second, principalement parce que les clients internationaux n’aiment pas être traités comme des clients de deuxième classe simplement parce consomme objectivement plus de bande passante dans tous les sens qui comptent. Le pire qui puisse arriver est qu’ils pourraient rendre votre débit total indésirable pour le fonctionnement de votre service.

Il est assez simple de fournir le premier type d’avantage sans permettre le second en limitant simplement le nombre de transferts simultanés à partir d’un seul ticket.

Autres conseils

Je pense que l’idée est que de nombreux serveurs limitent ou distribuent uniformément la bande passante sur les connexions. En ayant plusieurs connexions, vous trompez ce système et obtenez plus que votre "équitable". part de la bande passante.

Il s’agit de la loi de Little . Plus précisément, chaque flux sur le serveur Web voit une certaine quantité de latence TCP et ne transportera donc qu'une quantité de données aussi importante. Des astuces comme augmenter la taille de la fenêtre TCP et mettre en œuvre des acks sélectifs aident, mais sont mal implémentées et posent généralement plus de problèmes qu'elles n'en résolvent.

La présence de plusieurs flux signifie que la latence observée par chaque flux est moins importante car le débit global augmente globalement.

Un autre avantage clé d'un accélérateur de téléchargement, même avec un seul thread, est qu'il est généralement meilleur que d'utiliser les navigateurs Web intégrés à l'outil de téléchargement. Par exemple, si le navigateur Web décide de mourir, l'outil de téléchargement continuera. Et l'outil de téléchargement peut prendre en charge des fonctionnalités telles que la pause / la reprise que le navigateur intégré ne permet pas.

D'après ce que j'ai compris, les accélérateurs de téléchargement utilisent une méthode en ouvrant de nombreuses connexions TCP parallèles - chaque connexion TCP ne peut aller que très vite et est souvent limitée côté serveur.

TCP est implémenté de telle sorte que si un délai d’expiration survient, le délai d’expiration est augmenté. Ceci est très efficace pour éviter les surcharges réseau, au détriment de la rapidité des connexions TCP individuelles.

Les accélérateurs de téléchargement peuvent résoudre ce problème en ouvrant des dizaines de connexions TCP et en abandonnant celles qui ralentissent au-dessous d’un certain seuil, puis en ouvrant de nouvelles pour remplacer les connexions lentes.

Bien que efficace pour un seul utilisateur, je pense que c’est une mauvaise étiquette en général.

L'accélérateur de téléchargement tente de s'authentifier à nouveau à l'aide du même ticket de transaction. Je vous conseillerais donc de ne pas tenir compte de ces requêtes.

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

Citation: Le moyen le plus courant d’accélérer les téléchargements est d’ouvrir des téléchargements parallèles. De nombreux serveurs limitent la bande passante d'une connexion, de sorte que plus nous ouvrons en parallèle, plus le débit augmente. Cela fonctionne en spécifiant un décalage au début du téléchargement qui est pris en charge pour HTTP et FTP.

Bien sûr, ce mode d’accélération est tout à fait "non social". La limitation de la bande passante est implémentée pour pouvoir desservir un nombre plus élevé de clients. L'utilisation de cette technique réduit donc le nombre maximal de pairs pouvant être téléchargés. C'est la raison pour laquelle de nombreux serveurs limitent le nombre de connexions parallèles (reconnues par IP), par exemple. Pour ce faire, de nombreux serveurs FTP vous posent des problèmes si vous téléchargez un fichier et essayez de continuer à naviguer à l'aide de votre navigateur. Techniquement, ce sont deux connexions parallèles.

Une autre technique permettant d’augmenter le débit de téléchargement est l’utilisation d’un réseau peer-to-peer-peer où différentes sources, par exemple. Un nombre limité de connexions asynchrones est utilisé pour le téléchargement.

La plupart des accélérateurs de téléchargement n'accélèrent vraiment rien du tout. Ce qu’ils savent faire, c’est encombrer le trafic réseau, cogner votre serveur et casser des scripts personnalisés comme vous l’avez vu. En gros, au lieu de faire une requête et de télécharger le fichier du début à la fin, quatre requêtes sont demandées ... la première se télécharge entre 0 et 25%, la seconde entre 25 et 50%, etc. et cela les rend tous en même temps. Le seul cas particulier où cela n’aide en rien est que si leur fournisseur de services Internet ou leur pare-feu modifie le trafic de manière à limiter la vitesse de téléchargement à une vitesse inférieure à la vitesse de téléchargement totale.

Personnellement, si cela vous pose problème, je dirais simplement de signaler que les accélérateurs de téléchargement ne sont pas pris en charge et que les utilisateurs les téléchargent normalement, ou n'utilisent qu'un seul thread.

Ils ne le font généralement pas.

Pour répondre à l'essentiel de votre question, il est supposé que le serveur limite le débit de téléchargement, connexion par connexion. Par conséquent, le téléchargement simultané de plusieurs fragments permettra à l'utilisateur de tirer le meilleur parti de la bande passante disponible.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top