ДЛЯ УСТРОЕННОГО УСТРОЙСТВА
(скопировано из ответа Мансура на этот пост )
Оформить заказ BradyBound . Это общесистемный формирователь / ограничитель скорости загрузки. Несколько вещей, чтобы отметить:
- Приложение требует root-доступа.
- Это работает, отбрасывая пакеты, используя
iptables
. Это приводит к потере некоторого трафика - насколько это зависит от типа трафика (например, длительная загрузка, просмотр веб-страниц).
- Измерение скорости выполняется по количеству пакетов вместо байтов, поэтому ограничение скорости не будет точным.
- Это ограничивает только TCP-трафик (нет смысла отбрасывать UDP-пакеты).
Обратите внимание, что я являюсь автором этого приложения.
Редактировать № 1:
Объяснение:
Данные делятся на небольшие части, называемые пакетами, для передачи по сети.
Он может быть передан с использованием TCP (протокол управления передачей) или UDP (протокол дейтаграмм пользователя)
Давайте возьмем пример:
Предположим, что вы - сервер, а я - хост, и я хочу загрузить файл, поэтому сначала я отправлю вам запрос на него, после чего вы обработаете его, и вместо отправки всего файла вы разделите большой файл на маленькие пакеты.
Теперь каждый созданный пакет будет содержать такую информацию, как IP-адрес источника (ваш) и IP-адрес назначения (мой), а также некоторые дополнительные данные (номер последовательности, размер данных, время жизни и т. Д.)
Вы отправите эти пакеты, и они могут связаться со мной через маршрутизаторы.
Не обязательно, чтобы все пакеты приходили ко мне по одному и тому же маршруту. Они могут прийти ко мне по различным доступным маршрутам.
Когда они достигают меня, появляется TCP / UDP.
Если вы использовали TCP для передачи, когда пакет достигает меня, вам отправляется подтверждение о том, что пакет достиг меня.
Эта функция отсутствует в UDP. Если вы использовали UDP, в отличие от TCP, он не отправляет вам подтверждения. Это означает, что вы, как сервер, понятия не имеете, достигают ли меня пакеты или нет. В случае, если он потерян в передаче, он потерян навсегда.
Падающие пакеты
Отбрасывание пакетов означает отбрасывание пакетов. Поэтому, в принципе, когда я отброшу отправленный вами пакет, вам будет отправлено подтверждение (в случае TCP), что пакет был потерян при передаче, поэтому вам придется отправить его снова.
Таким образом, это тратит трафик и ограничивает скорость, в то же время я получаю весь файл.
Если я отброшу UDP-пакеты, я не получу весь файл. По этой причине приложение не контролирует трафик UDP.
И да, привилегия root является обязательной, поскольку доступ к iptable возможен только с правами суперпользователя.