传输层协议:TCP与UDP协议的区别
创始人
2024-05-13 13:27:07

TCP和UDP有哪些区别?

关于TCP与UDP协议两个协议的区别,大部分人会回答,TCP是面向连接的,UDP是面向无连接的。

什么叫面向连接,什么叫无连接呢?在互通之前,面向连接的协议会先建立连接。例如,TCP会三次握手,而UDP不会。为什么要建立连接呢?你TCP三次握手,我UDP也可以发三个包玩玩,有什么区别吗?

所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。

  • TCP提供可靠交付。通过TCP连接传输的数据,无差错、不丢失、不重复、并且按序到达。而 UDP继承了IP包的特性,不可靠,不保证不丢失,不保证按顺序到达。
  • TCP是面向字节流的。发送的时候发的是一个流,没头没尾。IP包可不是一个流,而是一个个的IP包。之所以变成了流,这也是TCP自己的状态维护做的事情。而 UDP继承了IP的特性,基于数据报的,一个一个地发,一个一个地收。
  • TCP是可以拥塞控制。它意识到包丢弃了或者网络的环境不好了,就会根据情况调整自己的行为,看看是不是发快了,要不要发慢点。 UDP就不会,应用让我发,我就发,管它洪水滔天,所以udp速度也更快
  • TCP只支持单播传输,每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。UDP 不止支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能
  • TCP首部开销20字节;UDP的首部开销小,只有8个字节

具体细节可见下表:

TCPUDP
可靠性可靠不可靠
连接性面向连接无连接
报文面向字节流面向报文
资源占用首部开销20字节UDP的首部开销更小,只有8个字节
效率传输效率低传输效率高
传播方式只支持单播一对一、一对多、多对一、多对多
流量控制滑动窗口
拥塞控制慢开始、拥塞避免、快重传、快恢复
传输效率

因而 TCP其实是一个有状态服务,通俗地讲就是有脑子的,里面精确地记着发送了没有,接收到没有,发送到哪个了,应该接收哪个了,错一点儿都不行。而 UDP则是无状态服务。通俗地说是没脑子的,天真无邪的,发出去就发出去了。

我们可以这样比喻,如果MAC层定义了本地局域网的传输行为,IP层定义了整个网络端到端的传输行为,这两层基本定义了这样的基因:网络传输是以包为单位的,二层叫帧,网络层叫包,传输层叫段。我们笼统地称为包。包单独传输,自行选路,在不同的设备封装解封装,不保证到达。基于这个基因,生下来的孩子UDP完全继承了这些特性,几乎没有自己的思想。

如何选择TCP还是UDP协议?

**根据两个协议的优点,我们可以在传输层有必要实现可靠传输的情况下用TCP协议;在那些对高速传输和实时性有较高要求的通信或者对准确性要求低的情况下用UDP协议。**TCP 和 UDP 应该根据应用的目的按需使用。

例如,当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议选择使用TCP协议,POP、SMTP等邮件传输的协议。当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP(如视频传输、实时通信等)。

img

参考链接

1.https://time.geekbang.org/column/article/8924

2.https://www.51cto.com/article/662343.html

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...