我对 UDP 的理解是,它是一种尽力而为的协议。数据只是发送,可能到达也可能不到达。如果我使用 UDP 通过互联网从 A 向 B 发送数据,并且第一个链接以 100Mbps 运行,最后一个链接以 10Mbps 运行,为什么实际上我不会丢失 90% 的数据?
换句话说,使用 UDP 时如何控制流量?
答案1
虽然 UDP 是一种尽力而为的协议,但互联网路由器通常具有较大的缓冲区来吸收带宽使用量的峰值而不会丢失数据包。
然而,如果你在较慢的链路上持续以 100Mb/s 的速度传输数据,你将要丢失数据包,即使没有注意到。这是因为 UDP 没有可用于跟踪数据包丢失的 ACK 机制,因此您的 PC 将不断尝试以 100Mb/s 的速度发送数据包。唯一可以检测到数据包丢失的是较慢路径上的路由器/PC,因为它们的缓冲区填充速度比较慢的链路处理的速度快得多,从而导致拥塞和丢包。