TCP和UDP的报文格式
TCP和UDP的报文格式
概要
了解TCP和UDP的报文格式对于网络通信、系统设计、故障排查和安全性等多个方面都非常重要。
一、TCP 报文格式(Transmission Control Protocol)
TCP是面向连接、可靠的传输协议,其报文格式较复杂。TCP报文的格式如下:
上图简化如下:
| 源端口(16位) | 目的端口(16位) | | 序号(32位) | | 确认序号(32位) | | 数据偏移(4位) | 保留(6位) | 标志位(6位) | 窗口大小(16位) | | 校验和(16位) | 紧急指针(16位) | | 选项(可选) | | 数据(可选) |
主要字段解释:
1)源端口和目的端口:分别表示发送方和接收方的端口号,用于区分应用。
2)序号:标识发送的数据字节流中的某个字节,用来保证数据按序接收。
3)确认序号:接收方期望下次收到的数据序号,表示已成功接收到的数据。
4)数据偏移:指出TCP头部的长度。
5)标志位:有6个常用标志,用于控制和管理TCP连接的状态和数据传输过程。
- 同步位SYN:SYN=1时,用于同步序列号,表示建立连接的请求。
- 确认位ACK:ACK=1时,表示确认接收到数据包,确认报文中的序列号。
- 终止位FIN:FIN=1时,用于关闭TCP连接,表示发送方不再发送数据。
- 复位RST:RST=1时,用于强制重置连接,立即终止连接。
- 推送位PSH:PSH=1时,提示接收方应该尽快将数据提交给应用层,而不要等到缓冲区填满后才传输。
- 紧急位URG:URG=1时,提示优先处理紧急数据。与URG标志配合使用的还有一个紧急指针(Urgent Pointer),它指出紧急数据在数据段中的位置。
这些标志位协同工作,确保TCP连接的建立、维护和关闭,以及可靠的数据传输和控制。
6)窗口大小:用于流量控制,表示接收方能够接收的数据量。
7)校验和:用于检验传输过程中是否发生数据错误。
8)紧急指针:指向紧急数据的位置。
9)选项:可选字段,常用于窗口缩放等高级功能。
10)数据:实际传输的数据部分。
二、UDP 报文格式(User Datagram Protocol)
UDP是无连接、不可靠的传输协议,其报文格式相对简单。UDP报文的格式如下:
上图简化如下:
| 源端口(16位) | 目的端口(16位) | | 长度(16位) | 校验和(16位) | | 数据(可选) |
主要字段解释:
1)源端口和目的端口:分别表示发送方和接收方的端口号。
2)长度:表示UDP头部和数据的总长度(最小值为8字节)。
3)校验和:用于检验UDP头部和数据是否在传输过程中出现错误(可选字段)。
4)数据:实际传输的数据部分。
其中,UDP校验如下图:
三、TCP报文和UDP报文的区别
主要区别:
TCP:面向连接,可靠传输,具有序号、确认机制等复杂功能,适用于需要可靠传输的场景(如文件传输、网页浏览等)。
UDP:无连接,不可靠传输,报文格式简单,适用于对时效性要求高且容忍部分数据丢失的场景(如视频流、语音传输等)。
参考链接:https://www.cnblogs.com/Chary/p/15954166.html