入门通信协议
TCP 三次握手与四次挥手
可靠连接建立与优雅关闭的状态机
TCP 用三次握手建立连接:客户端发送 SYN(请求连接),服务端回复 SYN+ACK(同意���请求对向连接),客户端回复 ACK(确认)。为什么不是两次?因为需要双方各自确认对方的初始序列号(ISN),防止历史报文被误收。四次挥手关闭连接:主动方发 FIN,被动方 ACK,被动方发 FIN,主动方 ACK,主动方进入 TIME_WAIT 等待 2MSL(Maximum Segment Lifetime)确保对方收到最后的 ACK。理解 TCP 状态机,你就能排查生产环境中的 TIME_WAIT 堆积、SYN 洪泛攻击等网络问题。
TCP三次握手四次挥手SYNFINTIME_WAIT状态机
STEP_1
MSS(Maximum Segment Size)在此协商,避免 IP 分片CLOSED → SYN_SENT — PROCESSING
syn.log
# 客户端发送 SYN
Client → Server
TCP [SYN]
Seq = 1000 (ISN_client)
Ack = 0
Window = 65535
Options: MSS=1460, SACK Permitted
# 客户端状态变化
CLOSED → SYN_SENT
# 抓包查看
$ tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'
192.168.1.100.54321 > 10.0.0.1.80: Flags [S], seq 1000, win 65535客户端发送 SYN:客户端生成一个随机初始序列号(ISN, Initial Sequence Number),发送 SYN 报文(SYN=1, Seq=ISN_client)到服务端,状态从 CLOSED 变为 SYN_SENT。ISN 的随机性是安全的关键——可预测的 ISN 会被攻击者利用进行 TCP 会话劫持。操作系统通常结合时钟和密码学随机数生成 ISN。
实时沙盒SANDBOX
FAULT_INJECTED
快速场景
手动调节
网络往返时延 (RTT)
单次往返延迟
20 ms
低延迟,握手迅速
模拟 SYN 洪泛攻击
正常握手流程
TIME_WAIT 连接数
高并发短���接场景���拟
100 条
TIME_WAIT 数量正常
启用 HTTP Keep-Alive
Keep-Alive 关闭,每次请求都要三次握手+四次挥手