Вопрос

Мы требуем, чтобы все запросы на загрузку имели действительный логин (не HTTP), и мы генерируем билеты транзакций для каждой загрузки.Если вы перейдете по одной из ссылок для скачивания и попытаетесь «воспроизвести» транзакцию, мы используем HTTP-коды, чтобы перенаправить вас для получения нового билета транзакции.Это отлично работает для большинства пользователей.Однако существует небольшая группа пользователей, использующих ускорители загрузки, которые просто пытаются воспроизвести билет транзакции несколько раз.

Итак, чтобы определить, хотим ли мы этого или даже может поддерживают ускорители загрузки или нет, мы пытаемся понять, как они работают.

Как наличие второго, третьего или даже четвертого одновременного подключения к веб-серверу, доставляющего статический файл, ускоряет процесс загрузки?

Что дает программа акселератора?

Это было полезно?

Решение

Более полный обзор ускорителей загрузки можно найти на странице Википедия.

Ускорение многогранно

Первый

Существенным преимуществом управляемых/ускоренных загрузок является то, что рассматриваемый инструмент запоминает переданные смещения начала/остановки и использует заголовки «частично» и «диапазон» для запроса частей файла, а не всего его.

Это означает, что если что-то умирает в середине транзакции (т.е.:TCP Time-out) он просто повторно подключается с того места, где остановился, и вам не нужно начинать с нуля.

Таким образом, если у вас прерывистое соединение, совокупное время передачи значительно сокращается.

Второй

Ускорители загрузки любят разбивать одну передачу на несколько более мелких сегментов одинакового размера, используя одну и ту же механику запуска-диапазона-остановки, и выполнять их параллельно, что значительно сокращает время передачи в медленных сетях.

Есть такая раздражающая вещь, называемая произведением задержки полосы пропускания, когда размер TCP-буферов на обоих концах выполняет некоторые математические действия в сочетании со временем пинга, чтобы получить фактическую скорость, и на практике это означает, что большое время пинга будет ограничивать вашу скорость независимо от того, как многие мегабит/сек имеют все промежуточные соединения.

Однако это ограничение действует «на каждое соединение», поэтому несколько TCP-подключений к одному серверу могут помочь смягчить снижение производительности из-за высокой задержки пинга.

Следовательно, людям, живущим поблизости, вряд ли понадобится сегментированный перенос, но люди, живущие в далеких местах, с большей вероятностью выиграют от безумия со своей сегментацией.

в-третьих

В некоторых случаях можно найти несколько серверов, которые предоставляют один и тот же ресурс, иногда один DNS-адрес циклически распределяется по нескольким IP-адресам, или сервер является частью какой-либо зеркальной сети.Менеджеры/ускорители загрузок могут обнаружить это и применить метод сегментированной передачи между несколькими серверами, позволяя загрузчику получить большую коллективную пропускную способность, предоставляемую им.

Поддерживать

Поддержка первого вида ускорения — это то, что лично я предлагаю как «минимум» поддержки.Главным образом потому, что это облегчает жизнь пользователям и уменьшает объем совокупной передачи данных, которую вы должны обеспечить, поскольку пользователям не нужно повторно получать один и тот же контент.

И чтобы облегчить это, вам рекомендуется вычислить, сколько они перевели, и не истечь срок действия билета, пока они не будут выглядеть «завершенными» (привязывая трафик к первому IP-адресу, который использовал билет), или до заданного «разумного» времени для загрузка прошла.то есть:дайте им отсрочку, прежде чем требовать новый билет.

Поддержка второго и третьего дает вам бонусные баллы, и пользователи обычно желают хотя бы второго, главным образом потому, что международные клиенты не любят, когда к ним относятся как к клиентам второго класса просто из-за большего времени пинга, и это объективно не потребляет больше пропускная способность в любом смысле, который имеет значение.Худшее, что может случиться, это то, что общая пропускная способность может стать нежелательной для работы вашего сервиса.

Достаточно просто обеспечить первый вид выгоды, не допуская второго, просто ограничив количество одновременных переводов по одному билету.

Другие советы

Я считаю, что идея заключается в том, что многие серверы ограничивают или равномерно распределяют пропускную способность между соединениями.Имея несколько подключений, вы обманываете эту систему и получаете больше, чем ваша «справедливая» доля пропускной способности.

Это все о Закон Литтла.В частности, каждый поток, поступающий на веб-сервер, имеет определенную задержку TCP и поэтому будет передавать только определенный объем данных.Такие приемы, как увеличение размера окна TCP и реализация выборочных подтверждений, помогают, но плохо реализованы и обычно вызывают больше проблем, чем решают.

Наличие нескольких потоков означает, что задержка, наблюдаемая для каждого потока, менее важна, поскольку глобальная пропускная способность в целом увеличивается.

Еще одним ключевым преимуществом ускорителя загрузки даже при использовании одного потока является то, что он обычно лучше, чем использование встроенного в веб-браузер инструмента загрузки.Например, если веб-браузер решит выйти из строя, инструмент загрузки продолжит работу.Инструмент загрузки может поддерживать такие функции, как приостановка/возобновление, которых нет у встроенного браузера.

Насколько я понимаю, ускорители загрузки используют один из методов - открытие множества параллельных TCP-соединений - каждое TCP-соединение может работать только с определенной скоростью и часто ограничивается на стороне сервера.

TCP реализован таким образом, что при возникновении таймаута период таймаута увеличивается.Это очень эффективно предотвращает перегрузку сети за счет скорости отдельных TCP-соединений.

Ускорители загрузки могут обойти эту проблему, открыв десятки TCP-соединений и отключив медленные соединения ниже определенного порога, а затем открыв новые для замены медленных соединений.

Хотя это эффективно для одного пользователя, я считаю, что это плохой этикет в целом.

Вы видите, что ускоритель загрузки пытается повторно пройти аутентификацию, используя тот же билет транзакции. Я бы рекомендовал игнорировать эти запросы.

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

Цитировать:Самый распространенный способ ускорить загрузку — открыть параллельную загрузку.Многие серверы ограничивают пропускную способность одного соединения, поэтому параллельное открытие большего количества увеличивает скорость.Это работает путем указания смещения, с которого должна начаться загрузка, что поддерживается как для HTTP, так и для FTP.

Конечно, такой способ ускорения весьма «асоциален».Ограничение пропускной способности реализовано для того, чтобы иметь возможность обслуживать большее количество клиентов, поэтому использование этого метода снижает максимальное количество одноранговых узлов, которые могут загружать.По этой причине многие серверы ограничивают количество параллельных соединений (распознаваемых по IP), например.многие FTP-серверы делают это, поэтому у вас могут возникнуть проблемы, если вы загрузите файл и попытаетесь продолжить просмотр с помощью браузера.Технически это два параллельных соединения.

Другой метод увеличения скорости загрузки — это одноранговая сеть, в которой разные источники, например.ограниченные асинхронным DSL на стороне загрузки, используются для загрузки.

Большинство «ускорителей» загрузки на самом деле вообще ничего не ускоряют.Что они умеют делать хорошо, так это перегружать сетевой трафик, забивать ваш сервер и взламывать пользовательские сценарии, как вы видели.По сути, это работает так: вместо того, чтобы делать один запрос и загружать файл от начала до конца, он делает, скажем, четыре запроса... первый загружает от 0 до 25%, второй от 25 до 50% и так далее. и это делает их все одновременно.Единственный частный случай, когда это кому-то помогает, — это если их интернет-провайдер или брандмауэр каким-то образом формирует трафик, так что индивидуальная скорость загрузки ограничивается меньшей, чем их общая скорость загрузки.

Лично, если это вызывает у вас какие-либо проблемы, я бы посоветовал просто разместить уведомление о том, что ускорители загрузки не поддерживаются, и попросить пользователей загружать их в обычном режиме или только с использованием одного потока.

Обычно они этого не делают.

Чтобы ответить по существу вашего вопроса, предполагается, что сервер ограничивает скорость загрузки для каждого соединения, поэтому одновременная загрузка нескольких фрагментов позволит пользователю максимально эффективно использовать полосу пропускания, доступную на их конце.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top