UDP如何控制文件传输中的数据流?

网络工程 tcp UDP
2022-02-04 02:32:00

我知道即使首选 TCP,也可以通过 UDP 传输文件。

我的问题是服务器如何知道客户端可以处理多少,反之亦然,或者两者之间的任何路由器。

TCP 使用“窗口大小”,因为 UDP 不确认接收到的数据包,是否应该在应用层实现类似的东西来控制数据流,或者使用其他技术?

2个回答

我的问题是服务器如何知道客户端可以处理多少,反之亦然,或者两者之间的任何路由器。

仅通过UDP,它不会。UDP 是“一劳永逸”——只需一个接一个地发送一个数据报。如果发送方的传输速率超过路径的容量,多余的数据报将被丢弃。

当使用 UDP 作为传输时,应用程序需要跟踪流量(如果需要)。究竟如何做到这一点取决于应用程序层和这里的题外话。

在大多数需要传输更大数据集的情况下,TCP 是迄今为止最简单的解决方案。除非您非常熟悉拥塞控制的复杂性,否则尝试在 UDP 之上重新发明它并不是一个好主意。

“TCP 使用“窗口大小”,因为 UDP 不确认接收到的数据包,是否应该在应用层实现类似的东西来控制数据流,或者使用其他技术?

您可以使用 UDP DCCP(数据报拥塞控制协议)在传输层执行此操作。RFC 6773详细描述了 UDP 如何具有与 TCP 类似的拥塞控制。然而,标准 UDP 使用没有拥塞控制的数据报。在这种情况下,L4 没有给出任何可靠性。由于您想要调整和设计机制以避免 UDP 特性,因此必须直接在应用程序中完成(不推荐)RFC 5405 RFC 768