tcp 和udp的区别
2026/6/11 9:22:29 网站建设 项目流程

TCP:传输控制协议。面向连接的、可靠的、基于字节流的传输层通信协议。特点:可靠传输(应答确认)、提供拥塞控制、全双工通信(允许通信双方的应用程序在任何时候都能发送数据,因为TCP连接的两端都设有缓存,用来临时存放双向通信的数据)。
UDP:用户数据报协议。无连接的、 不可靠的、 面向数据报的协议。特点:提供单播,多播,广播的功能
UDP的使用场景(一般情况下尽量使用TCP协议):
资源受限的情况下:例如 nat穿透技术。在互联网技术中,UDP常用在缓存读取,保存;用在监控或终端上报。
不在乎可靠性:例如 本节的 round_trip 程序,消息本身不需要重传,使用udp足够应对。又例如在 直播、视屏通话等场景中,需要的是实时性,如果因重传而造成延迟卡顿,那么用户的使用体验将会很糟糕。
网络编程角度差别:
TCP编程:1. 并发编程需要为每个客户端都创建socket连接,为每个客户端都配备文件描述符。同时需要考虑线程间的分配问题。 2. TCP线程不安全,应避免多个线程同时读取一个文件描述符。
UDP编程:1. 并发编程中,服务端一个socket可以服务多个客户端。2. 线程安全,数据报协议自动维护消息的边界,多线程操作同一个描述符也不会出现粘包,半包的问题(每次从接收缓冲都是只能取回一个完整的包)。
使用UDP编程,需要自己确保可靠性(参考tcp实现,设计心跳机制、应答确认、超时重传等)。 注:UDP协议栈会在发送的时候分片,到了接收重组,每次组好了完整的包就丢给用户,不完整就丢掉,故,可能会出现丢包现象。
 

报文区别

  • TCP 首部长度较长,会有一定的开销,首部在没有使用「选项」字段时是 20 个字节,如果使用了「选项」字段则会变长的。
  • UDP 首部只有 8 个字节,并且是固定不变的,开销较小。

滑动窗口:

就是接受方每次收到数据包,在发送确认报文ack的时候,同时告诉发送方,自己的缓存区还有多少空余空间,缓冲区的空余空间,我们就称之为接受窗口大小

序号:占4个字节。序号范围是[0,2^32-1],可以对4GB数据进行编号,到达最大值后,序号会重新从0开始。该序号指的是本报文段所发送数据的第一个字节的序号。如:发送方的初始序号(Initial Sequence Number,ISN)为1000,那么第一个发送的字节将具有序号1000,第二个字节将具有序号1001,依此类推。

确认号,占4个字节。期望收到对方数据报的第一个数据字节的序号,如:假设B收到了A的一个报文,其序列号字段是301,数据长度是200字节,这表示B正确的收到了A发送的500序号为止的所有数据。因此,B期望收到的下一个数据的序号是501,于是B把在回复A的确认报文中(ack)的确认号设置为501

慢开始:当TCP连接建立时,发送端会进入慢开始阶段。初始时,拥塞窗口(cwnd)被设置为1个MSS的大小。发送端每

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询