专栏名称: Linux就该这么学
专注于Linux运维技术培训,让您学习的每节课都有所收获,订阅本号后可每天获得最新Linux运维行业资讯、最实用的Linux免费教程以及独家Linux考证资料,三十多万技术小伙伴的选择,Linux就该这么学!
目录
相关文章推荐
Linux就该这么学  ·  微信搭讪神器重磅回归!你肯定用过 ·  15 小时前  
Linux就该这么学  ·  国内网工待遇 VS 国外网工待遇,看完扎心了! ·  15 小时前  
Linux就该这么学  ·  几种 Window 系统测试 UDP 的方法 ·  昨天  
Linux就该这么学  ·  谷歌工程师澄清:Android 系统新增 ... ·  2 天前  
Linux就该这么学  ·  成立 57 年第一次!Intel ... ·  2 天前  
51好读  ›  专栏  ›  Linux就该这么学

TCP 和 UDP 的江湖对决:谁是网络世界的传输之王?

Linux就该这么学  · 公众号  · linux  · 2025-03-19 08:02

正文

链接: https://juejin.cn/post/7481964029796794380

前言

互联网江湖中,UDP如莽夫仗剑疾行,以无连接之刃斩开数据洪流,宁丢包亦不折速度锋芒;TCP似儒雅绅士,借三次握手执礼相待,携重传机制与流量控制,在可靠传输中织就秩序经纬。二者刚柔相济:实时视频里UDP的快意恩仇,网页加载时TCP的君子之约,恰似武林中并存的狂放剑意与绵密掌法,共筑数字世界的通信哲学。

莽夫:UDP协议

想必大家肯定都看过《狂飙》这部电视剧吧,里面一些角色想必大家都印象深刻就比如莽村的李宏伟,而我们现在所要讲述的 UDP协议 它就出自莽村。

图片
image.png

面向无连接

现在大家可以先想象一个场景,当我们要发快递给某个人的时候,即使我们知道了收件人的地址,我们还需要先向收件人确认一下基础信息。而 UDP协议 就不一样了它发快递的时候,只要知道了对面的地址就直接发送快递,并不会管别的东西,这就是他身为莽夫的第一层境界。

面向无连接(知道了对面的 ip 后就直接传输数据)

只做数据报文的搬运工

相信大家都听过农夫山泉的一个广告词:我们不生产水,我们只是大自然的搬运工。而 UDP协议 除了莽之外还有点懒,他并不参与数据报文的生成,而是直接拿到本来要发送的数据经过一系列处理之后得到的数据报文进行发送,并且不会增加额外的报文头部。

图片
image.png

只做 数据报文(有头和体)的搬运工 (不增加额外的报文头部,头部开销比较小只有8个字节)

不保证数据的有序性和可靠性

关于他的这一点我觉得大家应该能理解,上面两点我们可以看出来这个莽夫并不是一个可靠的人,接下来我们还是以发快递的情景来模仿。

如果我们在网上买一些需要按照顺序组装的东西的话,那么在发快递的时候就会帮你提前按照顺序来编号之类的方便你组装,并且一般会全部都打包给你。但是 UDP 它就是个急性子,它一拿到厂家给你的零件就直接发送了,也不会管你排序什么的,这就 不能保证传输过来数据的有序性 了。除此之外,由于它比较急急忙忙的多少都会有点丢三落四,这就引出了它的另一个缺点,它在传输的过程中 不保证数据的可靠性 ,可能会丢包,也就是把你所需要的零件可能路上丢失了。

图片
1742109718971.png
  • 不保证数据包的有序性

  • 不保证数据的可靠性(丢包)

没有拥塞控制

说起这个拥塞控制呢,大家在生活中肯定遇到过,当我们在刷视频或者看电视剧的时候,如果网络环境不好的话它就会一卡一卡的,而这个拥塞控制呢就是根据网络环境来控制这个网络传输速度的。

由于 UDP协议 没有拥塞控制,所以它在进行传输的时候,速率是恒定的,并不会因为网络环境的变化而降低速率,这就会导致上面的丢包的出现。干就完了!!!

图片
1742110023624.png

高效

我们知道它没有拥塞控制之后,那么在我们看电视或者刷视频的时候并不会因为网络环境而影响我们的传输速率,这一点就成就了它高效的一个特点。

UDP 小结

  1. 面向无连接(知道了对面的 ip 后就直接传输数据)

  2. 只做 数据报文(有头和体)的搬运工 (不增加额外的报文头部,头部开销比较小只有8个字节)

  3. 不保证数据包的有序性

  4. 不保证数据的可靠性(丢包)

  5. 没有拥塞控制

  6. 高效(前五点都是高效)

应用场景:直播,视频,游戏,实时性要求高的应用

绅士:TCP协议

现在都是文明社会了,咱就不搞UDP的莽村那一套了,咱们来聊一聊更适合我们社会的 TCP协议,他在进行信息传输的时候并不会像 UDP 一样知道你ip地址直接塞给你就是了,而是会先询问一下你的意见,这就是我们常说的 TCP三次握手 ,并且在传输完了信息之后还会非常友好的跟你说:say goodbye,也就是我们常说的 TCP四次挥手 ,接下来我们来学习一下它的绅士礼仪。

图片
image.png

头部信息多

在上文中我们聊到 UDP 是数据报文的搬运工,但是 TCP 就比较勤快了,它会往报文的头部添加一些信息用来告诉服务端它想要服务端做的事情,它一般会往头部添加下面的信息。

  • Sequence Number (序列号)

  • Acknowledgment Number (确认号)

  • Window Size (窗口大小,当前网络环境支持传输多少字节的数据)

  • 标识符

标识符
标识符含义
URG
紧急报文
ACK
确认报文 表示当前报文有效






请到「今天看啥」查看全文