PARA DISPOSITIVO ROOTED
(copiado da resposta de Mansour nesta postagem )
Caixa BradyBound . É um modelador / limitador de velocidade de download em todo o sistema. Algumas coisas a serem observadas:
- O aplicativo requer acesso root.
- Ele funciona descartando pacotes usando
iptables
. Isso desperdiça algum tráfego - quanto depende do tipo de tráfego (por exemplo, downloads de longa execução, navegação na web).
- A medição da taxa é feita pelo número de pacotes em vez de bytes, para que o limite de velocidade não seja preciso.
- Isso limita apenas o tráfego TCP (não faz sentido descartar pacotes UDP).
Observe também que sou o autor deste aplicativo.
Edição nº 1:
Explicação:
Os dados são divididos em pequenas partes, chamadas pacotes, a serem transmitidas pela rede.
Pode ser transmitido usando TCP (Transmission Control Protocol) ou UDP (User Datagram Protocol)
Vamos dar um exemplo:
Suponha que você seja o servidor e eu sou o host e desejo fazer o download de um arquivo. Primeiro, enviarei uma solicitação, após o que você processará e, em vez de enviar o arquivo inteiro, dividirá o arquivo grande em pacotes pequenos.
Agora, cada pacote criado conterá informações como IP de origem (seu) e IP de destino (meu), juntamente com alguns dados adicionais (número de sequência, tamanho dos dados, tempo de vida, etc.)
Você vai enviar esses pacotes e eles podem me alcançar através de roteadores.
Não é necessário que todos os pacotes tenham que chegar até mim pela mesma rota. Eles podem vir até mim através de diferentes rotas disponíveis.
Quando eles me alcançam, o TCP / UDP aparece em cena.
Se você usou o TCP para transmissão, quando um pacote chega até mim, uma confirmação informando que o pacote chegou até mim é enviada de volta para você.
Este recurso está ausente no UDP. Se você usou o UDP, diferentemente do TCP, ele não envia confirmações para você. Isso significa que você, como servidor, não tem idéia se os pacotes estão chegando ou não. No caso de se perder na transmissão, se perde para sempre.
Descartando pacotes
Descartar pacotes significa descartar pacotes. Então, basicamente, quando eu largar o pacote enviado por você, uma confirmação será enviada a você (no caso do TCP) de que o pacote foi perdido na transmissão; portanto, você precisará enviá-lo novamente.
Dessa maneira, desperdiça tráfego e limita a velocidade ao mesmo tempo em que recebo o arquivo inteiro.
Se eu soltar pacotes UDP, não receberei o arquivo inteiro. Essa é a razão pela qual o aplicativo não controla o tráfego UDP.
E sim, o privilégio root é obrigatório, pois o iptable pode ser acessado apenas com acesso de superusuário.