全国直销电话:4006-854-568
IT-technology
以人为本,众志成城,以“用户至上”.“服务上乘”为原则,
追求产品和服务高质量,努力实现与客户之间真诚有效的沟通,
不断地圆梦、奔跑与腾飞。
新闻动态   NEWS
UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?UDP 的应用场景-北京赛维博信科技发展有限公司
来源:本文摘自网络,如有侵权请联系删除 | 作者:svbx001 | 发布时间: 2022-12-26 | 1978 次浏览 | 分享到:

六、UDP 真的比 TCP 要高效吗

相信很多同学都认为 UDP 无连接,无需重传和处理确认,UDP 比较高效。

然而 UDP 在大多情况下并不一定比 TCP 高效,TCP 发展至今天,为了适应各种复杂的网络环境,其算法已经非常丰富,协议本身经过了很多优化,如果能够合理配置 TCP 的各种参数选项,那么在多数的网络环境下 TCP 是要比 UDP 更高效的。

影响 UDP 高效因素有以下3点:

1、 无法智能利用空闲带宽导致资源利用率低:

一个简单的事实是 UDP 并不会受到 MTU 的影响,MTU 只会影响下层的 IP 分片,对此 UDP 一无所知。

在极端情况下,UDP 每次都是发小包,包是 MTU 的几百分之一,这样就造成 UDP 包的有效数据占比较小 (UDP 头的封装成本);

或者,UDP 每次都是发巨大的 UDP 包,包大小是 MTU 的几百倍,这样会造成下层 IP 层的大量分片,大量分片的情况下,其中某个分片丢失了,就会导致整个 UDP 包的无效。

由于网络情况是动态变化的,UDP 无法根据变化进行调整,发包过大或过小,从而导致带宽利用率低下,有效吞吐量较低。

而 TCP 有一套智能算法,当发现数据必须积攒的时候,就说明此时不积攒也不行,TCP 的复杂算法会在延迟和吞吐量之间达到一个很好的平衡。

2、无法动态调整发包:

由于 UDP 没有确认机制,没有流量控制和拥塞控制,这样在网络出现拥塞 或 通信两端处理能力不匹配的时候,UDP 并不会进行调整发送速率,从而导致大量丢包。

在丢包的时候,不合理的简单重传策略会导致重传风暴,进一步加剧网络的拥塞,从而导致丢包率雪上加霜。

更加严重的是,UDP 的 无秩序性和自私性,一个疯狂的 UDP 程序可能会导致这个网络的拥塞,挤压其他程序的流量带宽,导致所有业务质量都下降。

3、改进 UDP 的成本较高:

可能有同学想到针对 UDP 的一些缺点,在用户态做些调整改进,添加上简单的重传和动态发包大小优化。

然而,这样的改进并比简单的,UDP 编程可是比 TCP 要难不少的,考虑到改造成本,为什么不直接用TCP呢?

当然可以拿开源的一些实现来抄一下(例如:libjingle),或者拥抱一下 Google 的 QUIC 协议,然而,这些都需要不少成本的。

上面说了这么多,难道真的不该用UDP了吗?

其实也不是的,在某些场景下,我们还是必须 UDP 才行的。那么 UDP 的较为合适的使用场景是哪些呢?

七、UDP 协议的正确使用场合

 

服务热线

1391-024-6332