对于根植设备
(摘自曼苏尔对此帖子的回答)
结帐BradyBound。这是系统范围的下载速度整形器/限制器。几件事要注意:
- 该应用程序需要root访问权限。
- 它通过使用丢弃数据包来工作
iptables
。这浪费了一些流量-多少取决于流量类型(例如,长时间运行的下载,Web浏览)。
- 速率测量是根据数据包的数量而不是字节进行的,因此速度限制将不准确。
- 这仅限制了TCP流量(丢弃UDP数据包没有任何意义)。
另请注意,我是此应用程序的作者。
编辑#1:
说明:
数据被分为称为数据包的小部分,以通过网络进行传输。
可以使用TCP(传输控制协议)或UDP(用户数据报协议)进行传输
让我们举个例子:
假设您是服务器,我是主机,我想下载一个文件,因此首先我将向您发送一个请求,然后再处理,而不是发送整个文件,而是将大文件分割为小包。
现在,每个已创建的数据包将包含源IP(用户)和目标IP(矿)等信息,以及一些其他数据(序列号,数据大小,生存时间等)。
您将发送这些数据包,它们可以通过路由器到达我。
并非所有数据包都必须通过同一路径到达我这里。他们可以通过不同的路线来找我。
当他们到达我时,TCP / UDP出现了。
如果您使用TCP进行传输,则当有数据包到达我时,将向您发送一封确认消息,说明已到达我的数据包。
UDP中缺少此功能。如果您使用的是UDP,则与TCP不同的是,它不会向您发送确认。这意味着,作为服务器,您不知道数据包是否到达我这里。万一在传输中丢失,它将永远丢失。
丢包
丢弃数据包意味着丢弃数据包。因此,基本上,当我丢弃您发送的数据包时,将向您发送一个确认(对于TCP),该数据包在传输中丢失,因此您将不得不再次发送它。
这样,在浪费整个文件的同时浪费了流量并限制了速度。
如果丢弃UDP数据包,则不会收到整个文件。这就是该应用无法控制UDP流量的原因。
是的,必须具有root特权,因为iptable只能通过超级用户访问来访问。