学习黑客三次握手快速熟悉

在 TCP 世界里,“三次握手”既是联机仪式,也是协商视窗大小、MSS 等参数的谈判桌。本篇侧重 Wireshark 抓包实战:先宏观回顾 SYN → SYN|ACK → ACK 的流程,再逐位剖析 TCP 首部中的 Flags、Seq/Ack 号、Options,并配套常用显示过滤器与异常排障清单。读完后,你能 一眼识帧、两眼识错、三眼定位根因——无论是握手超时、重复 SYN 还是 RST Flood,都能迅速在 Wireshark 里还原真相。


1 三次握手流程回顾

步骤方向核心 Flags关键字段Wireshark 典型颜色*
SYNClient → ServerSYN=1 ACK=0Seq = x浅蓝 (默认)
SYN + ACKServer → ClientSYN=1 ACK=1Seq = y Ack = x+1淡绿
ACKClient → ServerSYN=0 ACK=1Seq = x+1 Ack = y+1深绿

*默认 Coloring Rules,可在 View ▶ Coloring Rules 查改 (Wireshark Wiki)。

  • 建立连接同时协商:两端在 SYN 报文的 Options 里发送 MSS、Window Scale、SACK Permitted 等参数。抓包时在 Packet Details ▶ Options 即可看到 (Wireshark Wiki, Medium)。
  • Seq/Ack 递增逻辑:应答方把收到的 Seq + 1 填入 Ack 字段,确保可靠传输 (CSDN博客)。

2 首部字段 & Flags 逐位详解

2.1 常用 Flags

名称用途 (Wireshark 字段)
SYN连接建立tcp.flags.syn == 1
ACK确认号有效tcp.flags.ack == 1
FIN优雅断开tcp.flags.fin == 1
RST强制复位tcp.flags.reset == 1
PSH立即交付上层tcp.flags.push == 1
URG紧急指针有效tcp.flags.urg == 1

解释及 NetFlow 取值见 Site24x7 与 Noction 文档 (Site24x7, Noction)。

2.2 序列号、确认号

  • ISN (Initial Seq Number):握手双方各自的随机 32 bit 起点。
  • ACK 规则:若包只含 ACK 标志且无数据,则确认号 = 对端序列号 + 1;若包含数据则 + 数据长度。详见 MCSI 分解报告 (GitHub)。

2.3 常见 Options

选项含义抓包显示
MSS最大报文段tcp.option.mss_val
Window Scale窗口缩放因子tcp.option.wscale.shift
SACK Permitted允许选择确认tcp.option.sack_perm

Wireshark 将 Options 列在 “Transmission Control Protocol” 树形节点内,可右键 Apply as Column 方便对比 (Wireshark Wiki)。


3 Wireshark 抓包实战

3.1 过滤三次握手

tcp.flags.syn == 1 && tcp.flags.ack == 0        # 仅 SYN
tcp.flags.syn == 1 && tcp.flags.ack == 1        # SYN|ACK
tcp.analysis.initial_rtt                        # RTT 统计

【DisplayFilters】允许用逻辑表达式精确定位握手帧 (Wireshark Wiki)。

3.2 常见异常快速定位

症状过滤器可能原因
连续 SYN 无 SYNACKtcp.flags.syn==1 && tcp.analysis.retransmission服务器无响应 / 丢包
RST 握手中断tcp.flags.reset==1目标端口关闭或防火墙拒绝
零窗口tcp.window_size == 0对端缓冲满,流量堵塞
MSS 不匹配找不同流 MSS 值中间设备 MTU 过小

4 握手故障排障流程(实战脚本)

# 1. 抓取五秒流量只保留 3 路握手
sudo tcpdump -i eth0 -w handshake.pcap 'tcp[13]&0x12!=0 and port 80' -G 5 -W 1

# 2. 在 Wireshark 打开彩色规则,过滤 tcp.flags.syn==1

# 3. 分析 RTT / 过滤重传
tcp.analysis.ack_rtt && tcp.analysis.retransmission

若 RTT 显示 > 3 s 或出现多次 Retransmission,应检查链路或 MTU 。流程灵感来自 CSDN/Wireshark 抓包示例 (CSDN博客)。


5 总结 & 推荐练习

  • 三次握手不仅建连接,还协商 MSS、窗口缩放、SACK。
  • Flags 组合是 Wireshark 排障关键:SYNSYN,ACKACK 为正途,遇 RST, 0 win 即异常。
  • 抓包练习:对本机 curl example.com,用过滤器展示 Seq/Ack 进位;修改防火墙拒绝 SYN|ACK 观察重传。
  • 延伸阅读:Wireshark Wiki “TCP 3-way handshaking” 全文、Display Filters 语法、RFC 793 原典。

索引(共 12 条高质量参考)

  1. Wireshark Wiki “TCP 3-way handshaking” (Wireshark Wiki)
  2. Medium “TCP 3-Way Handshake Using Wireshark” (Medium)
  3. Wireshark Wiki “DisplayFilters” (Wireshark Wiki)
  4. Site24x7 “Understanding TCP Flags” (Site24x7)
  5. Noction “Decoding TCP Flags” (Noction)
  6. Wireshark Wiki TCP 3-way handshaking Options 段落 (Wireshark Wiki)
  7. CSDN “wireshark抓包图解三次握手” (CSDN博客)
  8. CSDN “使用 Wireshark 查看 TCP 三次握手” (CSDN博客)
  9. TCP/IP 协议 Flags 列表 (Site24x7) (Site24x7)
  10. RFC 793 TCP 标准(握手设计) (博客园)
  11. GitHub “MCSI dissecting three-way handshake” (GitHub)
  12. Wireshark Wiki Mate/Library(会话拆分) (Wireshark Wiki)

通过本篇,你已具备在 Wireshark 中 精准捕获并诊断三次握手 的能力;接下来可尝试分析 TLS 握手,体会其在 TCP 之上的再次“对敲”!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海尔辛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值