在拥塞的局域网中,UDP 的发送速度是不是比 TCP 快?

Posted

技术标签:

【中文标题】在拥塞的局域网中,UDP 的发送速度是不是比 TCP 快?【英文标题】:In a congested LAN, does UDP send faster than TCP?在拥塞的局域网中,UDP 的发送速度是否比 TCP 快? 【发布时间】:2017-08-09 18:17:12 【问题描述】:

我有一个必须通过拥塞的 LAN 进行通信的实时应用程序(使用 websockets 的 C++)。因为它是实时的,所以不能容忍延迟。在这种情况下,UDP 会比 TCP 性能更好吗?

我不能容忍丢包,但如果使用 UDP,可以通过重试来解决。

【问题讨论】:

UDP vs TCP, how much faster is it? @MaMadLord 错误,不。 TCP 有选择性 ACK,而且 TCP 是流协议。 我想从一些经验中知道你是否有。因为例如 UDP 并不总是很快,在某些情况下 TCP 会比 UDP 快,正如@JHH 回答中所指出的那样。但是仅供参考#MaMadLord 它不适用于流媒体或 voip,只是以不规则的间隔发送微小的字节(取决于用户输入)... "...因为我不能容忍丢包..." UDP 是一种无连接、尽力而为、即发即弃的协议,不保证数据交付或接收数据报的顺序。如果您需要 UDP 这样的东西,那么您必须创建一个应用层协议来处理它。另一方面,TCP 为您提供了一种面向连接的协议,可确保无序段的交付和重新排序。 为了保证数据传输,您需要在 UDP 之上构建一个应用层协议,这会减慢您的速度,因为您需要确认、排序等. 内置在 TCP 中。有些人这样做。 UDP 通常用于实时数据,例如VoIP,但它确实有数据丢失,并且乱序数据被丢弃为无用。 【参考方案1】:

在拥塞的网络中,是的,UDP 将发送其数据包比 TCP 更快,这是因为 TCP 使用称为 congestion control 的机制将拥塞考虑在内。 UDP 没有拥塞控制,因此它发送数据包的速度与本地网络接口允许的一样快。

因此,如果您的首要任务是发送数据包,那么 UDP 就是要走的路。但是,如果您也有兴趣接收它们,那就另当别论了。以高速率将 UDP 数据包发送到拥塞的网络将导致它变得(更加)更加拥塞。这将不可避免地导致长时间的延迟和丢包。

这里的问题不是 TCP 也不是 UDP,而是网络拥塞。 如果道路拥堵,不管你是开车还是坐公共汽车,你都会迟到。

您选择哪种协议并不重要。要通过拥塞的网络快速发送内容,您需要网络级别的解决方案,可能是QoS mechanism。 QoS 可以为您提供相当于公交车道的网络,让公交车快速通过拥堵的道路。

【讨论】:

以上是关于在拥塞的局域网中,UDP 的发送速度是不是比 TCP 快?的主要内容,如果未能解决你的问题,请参考以下文章

TCP-拥塞控制

网吧局域网内机器发送udp数据包问题

慢启动与拥塞窗体

为啥在局域网中使用UDP比TCP好?请说明详细的具体的原因

TCP与UDP,可靠UDP如何实现

你不知道的UDP传输(局域网)