TCP 协议全景工作台

🔴 动态模拟与抓包调试

💻
Client
CLOSED
SYN seq=0
🖥️
Server
LISTEN
📋 状态流转日志
> 系统就绪,等待指令...
📟 Tcpdump 实时抓包
root@box:~# tcpdump -nn -i eth0 port 80

🔵 TCP 协议全生命周期图解

三次握手 (Connect)
Client
Server
SYN_SENT
SYNseq=x
LISTEN
ESTAB
SYNACKseq=y, ack=x+1
SYN_RCVD
ACKseq=x+1, ack=y+1
ESTAB

❓ 为什么是三次握手?

核心是为了防止失效的连接请求传到服务端。

如果只有两次,旧的 SYN 报文滞留后到达,服务端会误以为是新连接而开启资源,但客户端不予理睬,导致服务端资源浪费。

四次挥手 (Disconnect)
Client
Server
FIN_WAIT_1
FINseq=u
ESTAB
FIN_WAIT_2
ACKack=u+1
CLOSE_WAIT
... (Server 处理剩余数据) ...
TIME_WAIT
FINseq=w
LAST_ACK
CLOSED
ACKack=w+1
CLOSED

❓ 为什么 TIME_WAIT 等 2MSL?

  • 确保可靠关闭:防止最后的 ACK 丢包,服务端重发 FIN。
  • 防混淆:让旧连接的报文在网络中彻底消失。