5-8 TCP和UDP协议

5-8-1 TCP和UDP报文格式

TCP和UDP概述

传输层主要两个传输协议,分别是TCP和UDP。

  • TCP是面向连接的,一般用于传输数据量比较少,且对可靠性要求高的应用。【文件】
  • UDP是一种不可靠的、无连接的协议。用于传输数据量大,可靠性要求不高,但要求速度快的场
    景。【音视频】
特性/协议 TCP(传输控制协议) UDP(用户数据报协议)
连接方式 面向连接(需三次握手建立连接) 面向无连接(直接发送数据包)
传输可靠性 可靠传输(丢包重传、顺序保证) 不可靠传输(不保证送达或顺序)
流量控制 支持流控及窗口机制 无流控机制
传输效率 较低(需维护连接和确认机制) 较高(低延迟、无额外开销)
典型应用场景 ✔️ Web浏览(HTTP/HTTPS) ✔️ 电子邮件(SMTP/POP3) ✔️ 文件传输(FTP) ✔️ 域名系统(DNS) ✔️ 实时视频流/语音(VoIP) ✔️ 在线游戏/直播
例题
例题1

image-20250304192943555

解析:

  • 节点到节点:数据链路层提供一段物理链路上的可靠数据传输
  • 端到端:传输层的TCP协议提供端到端(即起点到终点)的可靠数据传输
例题2

image-20250304192950583

TCP报文格式

image-20250304193012635

  1. 源端口与目的端口(各16位) :源端口标识发送端应用程序的端口号,目的端口标识接收端应用程序的端口号。两者共同确定通信的端点,类似于网络通信的“发件地址”和“收件地址”。取值范围为216=65536即[0,65535],最大端口为65535

  2. 序列号与确认号(各32位)

  • 序列号(Sequence Number):标识当前报文段第一个字节在数据流中的位置。例如,若初始序列号为1000,数据长度为100字节,下一报文段序列号为1100。
  • 确认号(Acknowledgment Number):仅在ACK标志置1时有效,表示接收方期望接收的下一个字节的序列号(即已正确接收的数据末尾+1)。
  1. 数据偏移(4位) :(即类似IP报文中的头部长字段)表示TCP头部长度,以4字节为单位。最小值为5(对应20字节固定头部),最大值为15(对应60字节头部,含选项字段)(跟IP报头相同)。

  2. 保留字段(6位):保留位固定为0,未来可能扩展新功能。

  3. 标志位(6位) [红色表示用于TCP三次握手和四次挥手]

标志位 含义 作用描述 使用场景
URG 紧急 紧急数据标识,与紧急指针配合使用 当URG=1时,表明紧急指针字段有效,告诉系统此报文段中有紧急数据,不需要按排队顺序来传送,应尽快传送,一般是带外网管数据
ACK 确认 确认号有效标识,建立连接后所有报文必须置1 三次握手过程中,确认帧ACK=1。
TCP通信过程中,确认帧ACK=1。
TCP中只有第1个数据包即请求建立连接时发送的ACK=0,在连接建立后所有传送的报文段都必须把ACK置为1
PSH 推送 要求接收方立即将数据提交应用层而非缓存 当两个应用进程进行相互交互的通信时,一端的应用进程希望在键入一个命令后立即就能够收到对方的响应,此时TCP可使用推送PUSH操作image-20250304211622191
RST 复位 强制重置连接 表示TCP连接中出现较为严重的差错,必须释放连接,然后再重新建立连接
SYN 同步 同步序列号,用于建立连接 TCP三次握手建立时用来同步序号
FIN 终止 发送方数据发送完毕,请求释放连接 用于TCP四次挥手释放连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕并要求释放连接
  1. 窗口大小(16位) :接收方缓冲区剩余容量,用于流量控制。发送方需根据此值调整发送速率,防止缓冲区溢出。

  2. 校验和(16位):计算范围包括TCP头部和数据部分,确保传输完整性。接收方验证校验和,错误则丢弃报文。

  3. 紧急指针(16位):仅在URG=1时有效,指向紧急数据的位置,用于优先处理紧急数据。

例题
例题1

image-20250304210025128

例题2

image-20250304210053018

解析:URG=1,告诉系统有紧急数据传送,,URG指针说明紧急数据的位置。

例题3

image-20250304210109881

解析:

  • MSS指的是报文的有效负载长度,看到1460字节,应该反映到这是分装在以太网中的,以太网规定最大帧长MTU为1500字节,IP基本头部20字节,TCP基本头部20字节,减去之后剩1460字节
  • TCP协议的序号字段为32位,序号范围为0到232-1,L的最大值是232=4294967296=4x1024x1024x1024=4GB。

UDP报文格式

与TCP相比,做了很大精简,省略诸多控制字段。

image-20250304210150827

UDP首部包含四个16位的固定字段:

  1. 源端口(Source Port) :标识发送端的应用程序端口号(0-65535),若无需接收方回复(如单向通信),可置为0。
  2. 目的端口(Destination Port) :标识接收端的应用程序端口号,确保数据正确交付到目标进程。
  3. 长度(Length):表示整个UDP报文的总长度(首部+数据),单位为字节,最小值为8(仅有首部)。由于16位限制,最大长度为65535字节,但实际受限于网络MTU(通常数据部分不超过1472字节以避免IP分片)。
  4. 校验和(Checksum):用于检测传输过程中的数据错误。计算时需包含伪首部(临时添加的12字节结构,含源/目的IP、协议类型和UDP长度),若校验失败则丢弃报文,但无重传机制。
例题
例题1

image-20250304210212221

解析:

  • IP报头:20-60字节(默认20字节)
  • TCP报头:20-60字节(默认20字节)
  • UDP报头:8字节。
例题2

image-20250304210230033

解析:

  • UDP报文格式如下,长度为UDP报文总长度(16位),可表示[0,65535]字节,减去8字节头部,UDP最大负载是65527字节。

  • TCP报文格式中没有长度字段。

站内搜索

没有找到内容!