TCP/IP协议 结构图说明

TCP 协议详解与原理图解

一、TCP 报文结构详解

TCP 是面向连接、可靠传输的传输层协议。其报文结构定义如下:

  0                   1                   2                   3  
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +---------------------------------------------------------------+
 |        Source Port          |     Destination Port            |
 +---------------------------------------------------------------+
 |                      Sequence Number                          |
 +---------------------------------------------------------------+
 |                  Acknowledgment Number                        |
 +---------------------------------------------------------------+
 | Data |       |U|A|P|R|S|F|                                     |
 |Offset| Rsrvd |R|C|S|S|Y|I|           Window Size              |
 +---------------------------------------------------------------+
 |          Checksum            |       Urgent Pointer           |
 +---------------------------------------------------------------+
 |                  (Optional TCP Options)                       |
 +---------------------------------------------------------------+

字段说明:

字段名含义
Source Port / Destination Port源/目标端口号,用于标识通信的进程
Sequence Number序列号,表示当前报文段的第一个字节的序号
Acknowledgment Number确认号,期望收到对方下一个字节的编号
Data Offset数据偏移,指出 TCP 头部长度(单位为 32 位字)
Flags(6 个控制位)URGACKPSHRSTSYNFIN,用于控制连接状态
Window Size窗口大小,接收方通告的剩余缓冲区容量
Checksum校验和,包含头部和数据的完整性验证
Urgent Pointer紧急指针,与 URG 控制位配合使用
Options可选字段,如窗口缩放、时间戳等,支持性能优化

二、TCP 三次握手详解(连接建立)

客户端                                           服务器
  |                                                |
  | ----------- SYN seq=X -----------------------> |   第一次握手:请求连接
  |                                                |
  | <-------- SYN+ACK seq=Y ack=X+1 ------------- |   第二次握手:响应请求
  |                                                |
  | ----------- ACK ack=Y+1 ---------------------> |   第三次握手:确认连接
  |                                                |

握手过程说明:

  1. SYN:客户端向服务器发送连接请求,并初始化序列号(seq=X)。
  2. SYN+ACK:服务器响应请求,同步自身的序列号(seq=Y),并确认客户端序列号(ack=X+1)。
  3. ACK:客户端再次确认服务器的响应(ack=Y+1),至此双方建立连接。

⚠️ 三次握手的目的是可靠确认双向通信能力和初始序列号同步,防止失效连接混入。


三、TCP 四次挥手详解(连接释放)

客户端                                           服务器
  |                                                |
  | ----------- FIN seq=U -----------------------> |   第一次挥手:主动关闭
  |                                                |
  | <----------- ACK ack=U+1 --------------------- |   第二次挥手:被动确认
  |                                                |
  | <----------- FIN seq=V ---------------------- |   第三次挥手:被动关闭
  |                                                |
  | ----------- ACK ack=V+1 ---------------------> |   第四次挥手:确认关闭
  |                                                |

挥手过程说明:

  1. 客户端发送 FIN:表示没有数据可发,但仍可接收。
  2. 服务器发送 ACK:确认接收到关闭请求。
  3. 服务器完成剩余数据发送后,发送 FIN:准备关闭。
  4. 客户端发送 ACK:完成连接关闭。

🔁 四次挥手保证了双向关闭的可靠性,服务端关闭操作可能延迟,以确保数据完整传输。


四、TCP 状态迁移图解析

TCP 的连接建立与断开并不是简单的三次握手或四次挥手,其内部状态迁移涉及多个状态节点。

                     +---------+  
                     | CLOSED  |  
                     +----+----+  
                          |  
              Active OPEN | Passive OPEN
                          V  
                     +---------+     +---------+
                     | SYN_SENT | <--| LISTEN  |
                     +----+----+     +----+----+
                          |               |
                          |               |
                          V               V
                     +---------+     +---------+
                     |SYN_RCVD | --> |ESTABLISHED|
                     +----+----+     +----+----+
                          |               |
                          V               V
                     +---------+     +----------+
                     |FIN_WAIT_1| <--| CLOSE_WAIT|
                     +----+----+     +----+-----+
                          |               |
                          V               V
                     +----------+     +----------+
                     | FIN_WAIT_2|     | LAST_ACK |
                     +-----------     +----------+
                          |
                          V
                    +-----------+
                    | TIME_WAIT |
                    +-----------+
                          |
                          V
                     +---------+
                     | CLOSED  |
                     +---------+

🧠 状态说明:

  • SYN_SENT/SYN_RCVD:连接建立中
  • ESTABLISHED:连接建立成功
  • FIN_WAIT_1/2:主动关闭方等待对方关闭
  • CLOSE_WAIT/LAST_ACK:被动关闭方等待确认
  • TIME_WAIT:连接已关闭,等待 2MSL 确保对方收到 ACK
  • CLOSED:连接完全关闭

五、TCP 拥塞控制机制

TCP 设计了一套复杂的拥塞控制机制,以保证网络传输的效率与稳定性。主要包括以下四个阶段:

拥塞控制四阶段

窗口大小
  |
  |       /~~~~~ 拥塞避免阶段(线性增长)
  |     /
  |   /
  | /    <--- 慢开始阶段(指数增长)
  |/
  +---------------------------> 时间
        阈值        丢包

各阶段说明:

阶段特点
慢开始初始窗口值小,每收到 ACK 指数增加
拥塞避免超过阈值后,每 RTT 窗口线性增长
快速重传连续收到 3 个重复 ACK,立即重传
快速恢复重传后进入拥塞避免,避免窗口归零

📌 拥塞窗口(cwnd)和接收窗口(rwnd)共同决定 TCP 的实际发送速率。


总结

TCP 协议作为互联网的核心协议之一,凭借其可靠的连接机制与完善的拥塞控制,成为高质量网络传输的基础。掌握 TCP 的握手/挥手流程、报文结构、状态迁移及拥塞控制,对于理解操作系统、网络编程、安全通信等领域均具有极大意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值