Предположим, что люди хотят ограничить загрузку HTTP до 40% пропускной способности интернет-соединения, чтобы не блокировать другой трафик.
Мы говорим «это не поддерживается в вашем брандмауэре», и они говорят неизбежную строчку «мы привыкли делать это с помощью нашего Netgear / DLink / DrayTek».
Думая об этом, загрузка выглядит так:
HTTP GET request
Server sends file data as TCP packets
Client acknowledges receipt of TCP packets
Repeat until download finished.
Скорость определяется тем, насколько быстро сервер отправляет вам данные и как быстро вы их подтверждаете.
Итак, чтобы ограничить скорость загрузки, у вас есть два варианта:
1) Проинструктируйте сервер отправлять вам данные медленнее - и я не думаю, что есть какая-либо функция протокола, чтобы запросить это в TCP или HTTP.
2) Медленнее распознавайте пакеты, ограничивая скорость загрузки, а также снижайте скорость загрузки.
Как устройства делают это ограничение? Есть ли стандартный способ?
источник
Ответы:
Сам TCP реализует управление перегрузкой.
Эти ограничители скорости просто выбрасывают пакеты сверх лимита. TCP обрабатывает это, гарантируя, что все пакеты прибывают и все прибывают в порядке; клиент не ACK для отброшенных пакетов, и они повторно отправляются сервером.
Стек TCP сервера будет повторно посылать пакеты, и он также будет немного набирать скорость передачи, поскольку он обнаруживает, что между ним и клиентом существует перегрузка. Он будет ускоряться до тех пор, пока ограничитель скорости не отбросит пакеты снова, и так далее.
источник
Лучшее описание, которое я когда-либо слышал, в котором содержался смысл встроенного в TCP метода регулирования, было из недавнего подкаста Security Now . Процитирую Стива Гибсона:
источник
3) Ваше устройство маршрутизатора / брандмауэра помещает входящие данные в корзину QoS и очищает эту корзину только с запрошенной вами скоростью. Входящие данные будут адаптироваться к этой скорости, так как компьютеры внутри будут видеть только подтверждение получения с этой скоростью. Кроме того, случайный (целенаправленно) отброшенный пакет работает очень хорошо для замедления соединения.
При попытке найти устройство, которое обрабатывает это, ищите QoS (Качество обслуживания) в конфигурации / документации. Linux (или BSD) коробки также удобны для этого.
источник
Вы используете брандмауэр или устройство, которое поддерживает ограничение QoS (качество обслуживания).
Вы можете создать систему Linux, которая будет действовать как офисный шлюз, и использовать ее для формирования трафика. Просто нужно установить несколько сетевых карт, и каждая машина указывает на это как шлюз.
В качестве бонуса вы можете настроить прокси-сервер на нем, чтобы облегчить трафик тоже. Что-то вроде кальмара. Там могут быть дистрибутивы устройства маршрутизации под ключ, которые могут сделать это тоже.
источник
Протокол HTTP не предоставляет средств для ограничения используемой полосы пропускания, и даже если бы это было так, это было бы установкой на стороне клиента, над которой сетевые администраторы не могли иметь никакого контроля.
Ограничение пропускной способности (также известное как «Качество обслуживания») обычно управляется на маршрутизаторах / брандмауэрах, которые обрабатывают весь входящий и исходящий трафик в / из сети; те, которые поддерживают это, обычно позволяют настраивать политики, такие как «разрешить любому клиентскому компьютеру использовать не более 10% всей доступной пропускной способности» или «отдавать приоритет SMTP над FTP, чтобы сообщения электронной почты могли передаваться даже при интенсивной загрузке». ».
Как именно это будет сделано, зависит от используемого маршрутизатора / брандмауэра, но самый простой способ - просто выбросить пакеты, которые превышают настроенные пределы; TCP обеспечит их повторную передачу и в конечном итоге сможет пройти через узкое место.
источник