TCP 协议全景工作台
🔴 动态模拟与抓包调试
💻
Client
CLOSED
SYN
seq=0
🖥️
Server
LISTEN
▶ 开始三次握手
⏹ 开始四次挥手
↻ 重置系统
📋 状态流转日志
> 系统就绪,等待指令...
📟 Tcpdump 实时抓包
root@box:~#
tcpdump -nn -i eth0 port 80
🔵 TCP 协议全生命周期图解
三次握手 (Connect)
Client
Server
SYN_SENT
SYN
seq=x
LISTEN
ESTAB
SYN
ACK
seq=y, ack=x+1
SYN_RCVD
ACK
seq=x+1, ack=y+1
ESTAB
❓ 为什么是三次握手?
核心是为了
防止失效的连接请求
传到服务端。
如果只有两次,旧的 SYN 报文滞留后到达,服务端会误以为是新连接而开启资源,但客户端不予理睬,导致服务端资源浪费。
四次挥手 (Disconnect)
Client
Server
FIN_WAIT_1
FIN
seq=u
ESTAB
FIN_WAIT_2
ACK
ack=u+1
CLOSE_WAIT
... (Server 处理剩余数据) ...
TIME_WAIT
FIN
seq=w
LAST_ACK
CLOSED
ACK
ack=w+1
CLOSED
❓ 为什么 TIME_WAIT 等 2MSL?
确保可靠关闭
:防止最后的 ACK 丢包,服务端重发 FIN。
防混淆
:让旧连接的报文在网络中彻底消失。