![如果发送的数据包太多,如何处理](https://linux22.com/image/1458326/%E5%A6%82%E6%9E%9C%E5%8F%91%E9%80%81%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8C%85%E5%A4%AA%E5%A4%9A%EF%BC%8C%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86.png)
我了解 DOS 和 DDOS 攻击,但我要问的是网络如何处理发送的数据包超过其连接允许的量
例如
[服务 A]----------[ISP]-----------[我]
如果服务 A 的互联网连接允许他上传 8mb/ps 而我的连接允许我下载 1mb/ps,如果他向我发送的速度略大于我能处理的速度,显然不是 8mb,但可能是 1.01,会发生什么?
是否存在某种排队系统,或者发送方根据延迟决定发送的数据包数量?
谢谢
答案1
不,有几个原因。
排队系统必须位于足够远的上游,以便队列能够接受流量,因此那里必须有空闲带宽。这意味着它的 ISP 层设备。它可能相当昂贵。
TCP 使用窗口协议来执行流量控制和错误更正。这些机制依赖于及时接收数据。花费太长时间刷新的队列可能会触发您的主机请求重新发送已发送但正在队列中等待的数据包,从而导致更多的流量和更长的排队,最终导致灾难。
有更好的架构来应对资源需求的激增,包括 CDN 和共地、网状网络架构等。
编辑:根据您的评论,您正在寻找的答案是TCP 流量和特许控制。TCP 使用“滑动窗口”方法进行流量控制。当服务器向您发送流时,TCP 将协商窗口间隔,并且他们向您发送的每 X 个数据包,您都必须向他们发送一个数据包。在您发送数据包之前,他们不会发送其他数据包。如果一切顺利,较宽的窗口会更好,因为它不会等待您经常响应,但如果您延迟响应,服务器将缩短间隔,因此您必须实际上说“是的,我明白了”。这很像通过电话向某人读出您的 CC 号码。您说出四个数字,然后等待他们说“好的”或类似的话,然后再说接下来的四个数字。如果他们不说好的,您等一会儿直到他们说好。