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

这里提到的连接到底是啥?

TCP通过上面提到的各种机制实现了数据的可靠性。这些机制背后是通过一个个数据结构来实现的逻辑。而为了实现这套逻辑,操作系统内核需要在两端代码里维护一套复杂的状态机(三次握手,四次挥手,RST,closing等异常处理机制),这套状态机其实就是所谓的"连接"。这其实就是TCP的连接机制,而UDP用不上这套状态机,因此它是"无连接"的。


网络环境链路很长,还复杂,数据丢包是很常见的。

我们平常用TCP做各种数据传输,完全对这些事情无感知。

哪有什么岁月静好,是TCP替你负重前行。

这就是TCP三大特性"面向连接、可靠的、基于字节流"中"可靠"的含义。

不信你改用UDP试试,丢包那就是真丢了,丢到你怀疑人生。


用UDP就一定比用TCP快吗?

这时候UDP就不服了:"正因为没有这些复杂的TCP可靠性机制,所以我很快啊"

嗯,这也是大部分人认为UDP比TCP快的原因。

实际上大部分情况下也确实是这样的。这话没毛病。


那问题就来了。

有没有用了UDP但却比TCP慢的情况呢?

其实也有。

在回答这个问题前,我需要先说下UDP的用途

实际上,大部分人也不会尝试直接拿裸udp放到生产环境中去做项目。

那UDP的价值在哪?

在我看来,UDP的存在,本质是内核提供的一个最小网络传输功能

很多时候,大家虽然号称自己用了UDP,但实际上都很忌惮它的丢包问题,所以大部分情况下都会在UDP的基础上做各种不同程度的应用层可靠性保证。比如王者农药用的KCP,以及最近很火的QUIC(HTTP3.0),其实都在UDP的基础上做了重传逻辑,实现了一套类似TCP那样的可靠性机制。

教科书上最爱提UDP适合用于音视频传输,因为这些场景允许丢包。但其实也不是什么包都能丢的,比如重要的关键帧啥的,该重传还得重传。除此之外,还有一些乱序处理机制。举个例子吧。

打音视频电话的时候,你可能遇到过丢失中间某部分信息的情况,但应该从来没遇到过乱序的情况吧。

比如对方打网络电话给你,说了:"我好想给小白来个点赞在看!"

这时候网络信号不好,你可能会听到"我….点赞在看"。

但却从来没遇到过"在看小白好想赞"这样的乱序场景吧?

所以说,虽然选择了使用UDP,但一般还是会在应用层上做一些重传机制的

于是问题就来了,如果现在我需要传一个特别大的数据包

 

服务热线

1391-024-6332