TCP报头详解

TCP(传输控制协议)是互联网协议套件中的核心传输层协议,其报头(Header)包含了确保数据可靠传输的关键信息。以下是 TCP 报头的详细解析:

TCP 报头的结构与字段详解

TCP 报头通常由 20 字节的固定部分和可选的选项字段组成,各字段功能如下:

1. 源端口号(Source Port)- 16 位
  • 作用:标识发送数据的应用程序端口,用于接收方回复时的源端口标识。
  • 示例:客户端向 Web 服务器发起 HTTP 请求时,会随机选用一个 1024-65535 范围内的动态端口(如 50001)作为源端口,而 Web 服务器则使用 80 端口作为目标端口响应请求。
2. 目标端口号(Destination Port)- 16 位
  • 作用:标识接收数据的应用程序端口,如 HTTP 默认使用 80 端口,HTTPS 使用 443 端口。
3. 序列号(Sequence Number)- 32 位
  • 作用
    • 首次建立连接时(SYN 包),该值为初始序列号(ISN),后续按实际发送字节数递增。
    • 为发送的每个字节数据分配唯一编号,用于接收方重组排序分片数据。
  • 示例:若发送 100 字节数据,序列号为 N,则下一段数据序列号为 N+100。
4. 确认号(Acknowledgment Number)- 32 位
  • 作用
    • 接收方用于告知发送方已成功接收的数据序列号,即期望接收的下一个字节编号。
    • 若确认号为 M,表示序号 0 到 M-1 的字节已被正确接收。
  • 示例:接收方收到序列号为 N 的 100 字节数据后,确认号会设为 N+100。
5. 数据偏移(Data Offset)- 4 位
  • 作用:标识 TCP 报头的总长度(包含选项字段),单位为 4 字节(32 位)。
  • 计算方式:例如值为 5,则报头长度为 5×4=20 字节(无选项字段时)。
6. 保留字段(Reserved)- 3 位
  • 作用:保留给未来扩展使用,目前全为 0。
7. 控制位(Control Bits)- 9 位(标志位)(6+2+1)

标志位

缩写

作用描述

拥塞窗口减少标志CWR当发送方收到接收方设置了 ECE 标志位的确认报文后,知道网络出现拥塞,会调整拥塞窗口大小,并在后续发送的 TCP 报文中设置 CWR 标志,告知接收方自己已经采取了拥塞控制措施 。
显式拥塞通知回显ECE当接收方收到的数据包中 IP 头部的 ECN 字段被设置为 “拥塞即将发生”,并且 TCP 头部的 SYN 标志位未置位时,接收方会在发回给发送方的确认报文中设置 ECE 标志,用于通知发送方网络出现了拥塞 。

紧急指针有效

URG

标识报文中包含紧急数据,需优先处理。

确认有效

ACK

确认号字段有效,通常在连接建立后所有报文都需设置该位。

推送请求

PSH

通知接收方立即将数据交付应用层,无需等待缓冲区满。

重置连接

RST

重置连接,用于处理异常情况(如端口不可用)。

同步序列号

SYN

用于建立连接时同步序列号,发起连接(SYN=1)或响应连接(SYN=1, ACK=1)。

结束连接

FIN

标识发送方已完成数据传输,请求关闭连接。

8. 窗口大小(Window Size)- 16 位
  • 作用
    • 接收方告知发送方当前接收缓冲区的空闲容量,单位为字节,用于流量控制。
    • 窗口大小越大,发送方允许发送的数据量越多。
  • 示例:窗口大小为 1000,表示接收方最多可接收 1000 字节数据。
9. 校验和(Checksum)- 16 位
  • 作用
    • 用于检测 TCP 报文在传输过程中是否发生错误,校验范围包括报头、数据及伪报头(IP 层信息)。
    • 发送方计算校验和,接收方重新计算并验证,若不一致则丢弃报文。
10. 紧急指针(Urgent Pointer)- 16 位
  • 作用
    • 当 URG 标志位为 1 时有效,标识紧急数据的末尾位置(相对于序列号的偏移量)。
    • 紧急数据可跳过正常缓冲区处理,优先交付应用层。
11. 选项字段(Options)- 可选,长度可变
  • 常见选项
    • 最大段大小(MSS):告知对方本端能接收的最大 TCP 数据段长度,通常在 SYN 包中发送。
    • 窗口扩大因子(Window Scale):扩展窗口大小的表示范围(超过 65535 字节)。
    • 时间戳(Timestamp):用于计算往返时间(RTT),优化拥塞控制。
    • 长度限制:选项总长度需为 4 字节的倍数,不足时用填充位(0)补齐。

TCP 报头的可视化结构

1               2               3               4            
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0   ________
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Source Port (16)          |  Destination Port (16)      |    
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    固
|                    Sequence Number                          |    定
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    报
|                    Acknowledgment Number                    |    头
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    长
|Data   |Rese-| Control Bits    |      Window Size            |    长
|Offset |rved |  C E U A P R S F|                             |    20
|       |     |  W C R C S S Y I|                             |    个
|       |     |  R E G K H T N N|                             |    字
|  (4b) |(3b) |     (9b)        |          (16b)              |    节
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    
|           Checksum (16b)      |   Urgent Pointer (16b)      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    ---
|                    Options (if any)       |    Padding      |   可变长度报头(4N)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   ————————
|                             Data                            |   字节流数据
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

TCP 报头的关键作用

        可靠传输:通过序列号、确认号和重传机制确保数据按序到达。

        流量控制:利用窗口大小字段避免发送方过载接收方。

        连接管理:通过 SYN、ACK、FIN 等标志位实现三次握手和四次挥手。

        错误检测:校验和字段确保数据完整性。

扩展知识:TCP 与 UDP 报头的对比

字段

TCP 报头

UDP 报头

源 / 目标端口

包含

包含

序列号 / 确认号

包含(可靠传输)

控制位

包含(SYN/ACK/FIN 等)

窗口大小

包含(流量控制)

校验和

必须计算

可选

紧急指针

包含

选项字段

可选

报头长度

20 字节(固定部分)

8 字节

传输特性

面向连接,可靠

无连接,不可靠

通过 TCP 报头的复杂设计,TCP 协议实现了互联网中数据的可靠传输,是 HTTP、FTP 等高层协议的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值