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

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


1 三次握手流程回顾

步骤 方向 核心 Flags 关键字段 Wireshark 典型颜色*
SYN Client → Server SYN=1 ACK=0 Seq = x 浅蓝 (默认)
SYN + ACK Server → Client SYN=1 ACK=1 Seq = y Ack = x+1 淡绿
ACK Client → Server SYN=0 ACK=1 Seq = 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 过滤三次握手

bash 复制代码
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 无 SYN ACK tcp.flags.syn==1 && tcp.analysis.retransmission 服务器无响应 / 丢包
RST 握手中断 tcp.flags.reset==1 目标端口关闭或防火墙拒绝
零窗口 tcp.window_size == 0 对端缓冲满,流量堵塞
MSS 不匹配 找不同流 MSS 值 中间设备 MTU 过小

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

bash 复制代码
# 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 之上的再次"对敲"!

相关推荐
数据与人工智能律师7 分钟前
数字资产革命中的信任之锚:RWA法律架构的隐形密码
大数据·网络·人工智能·云计算·区块链
future14121 小时前
C#学习日记
开发语言·学习·c#
菜包eo1 小时前
二维码驱动的独立站视频集成方案
网络·python·音视频
yzx9910131 小时前
关于网络协议
网络·人工智能·python·网络协议
DIY机器人工房1 小时前
0.96寸OLED显示屏 江协科技学习笔记(36个知识点)
笔记·科技·stm32·单片机·嵌入式硬件·学习·江协科技
zsq1 小时前
【网络与系统安全】域类实施模型DTE
网络·安全·系统安全
我是小哪吒2.03 小时前
书籍推荐-《对抗机器学习:攻击面、防御机制与人工智能中的学习理论》
人工智能·深度学习·学习·机器学习·ai·语言模型·大模型
00后程序员张3 小时前
免Mac上架实战:全平台iOS App上架流程的工具协作经验
websocket·网络协议·tcp/ip·http·网络安全·https·udp
GLAB-Mary4 小时前
OSPF虚拟链路术语一览:快速掌握网络路由
网络·智能路由器
✎ ﹏梦醒͜ღ҉繁华落℘4 小时前
WPF学习(四)
学习·wpf