传输层协议分析--第2关:三次握手实战与Wireshark抓包解析

📅 2026/7/15 16:25:50
传输层协议分析--第2关:三次握手实战与Wireshark抓包解析
1. TCP三次握手原理详解第一次握手SYN当你在浏览器输入网址敲下回车时客户端会生成一个随机序列号比如SEQ100将SYN标志位置1就像举起右手说我要开始通话了。这个数据包不携带任何应用数据仅包含TCP头部信息。此时客户端进入SYN_SENT状态相当于拨号后等待对方接听。第二次握手SYN-ACK服务器收到SYN包后会做两件事首先确认收到客户端的SYNACK101同时自己也生成随机序列号比如SEQ200。就像回应听到你的请求了我这边序列号从200开始。服务器此时进入SYN_RCVD状态类似客服人员拿起电话说您好请讲。第三次握手ACK客户端收到SYN-ACK后会检查两个关键点ACK号是否等于自己初始序列号11011001以及ACK标志位是否为1。验证通过后发送确认包ACK201就像说好的我们开始正式通话。此时双方进入ESTABLISHED状态相当于电话完全接通。关键细节序列号采用随机生成而非从0开始这是为了防止历史连接混淆。想象如果每次都用SEQ0网络延迟导致的老数据包可能会被误认为新连接。2. Wireshark抓包实战步骤2.1 环境准备与基础配置首先需要关闭可能干扰抓包的软件如杀毒软件建议使用有线网络连接减少无线干扰。打开Wireshark后在捕获选项中选择正确的网卡通常是以太网或Wi-Fi适配器勾选混杂模式以捕获所有流量。关键配置步骤如下点击菜单栏捕获→选项在输入选项卡选择活动网卡在输出选项卡设置环形缓冲区建议500MB在选项中勾选实时更新和实时滚动# 快速过滤命令示例捕获后使用 tcp.flags.syn1 and tcp.flags.ack0 # 仅显示SYN包 tcp.port80 # 显示HTTP流量2.2 三次握手数据包捕获开始捕获后在浏览器访问任意网站如http://example.com。停止捕获后在过滤栏输入tcp你会看到类似这样的流量模式No. Time Source Destination Protocol Length Info 1 0.000000 192.168.1.100 93.184.216.34 TCP 74 [SYN] Seq0 Win64240 2 0.028145 93.184.216.34 192.168.1.100 TCP 74 [SYN, ACK] Seq0 Ack1 3 0.028307 192.168.1.100 93.184.216.34 TCP 66 [ACK] Seq1 Ack1右键任意TCP包选择追踪流→TCP流可以看到完整的通信过程。重点关注以下字段Sequence number当前包起始序列号Acknowledgment number期望收到的下一个序列号FlagsSYN/ACK等控制标志位3. 关键字段深度解析3.1 序列号与确认号机制TCP使用32位序列号空间实际抓包中你会看到两种表现形式相对序列号Wireshark默认显示从0开始便于阅读绝对序列号需右键取消Relative sequence numbers在三次握手中第一次握手客户端发送SEQX实际值如3729296196第二次握手服务器回复ACKX1同时携带自己的SEQY第三次握手客户端确认ACKY1实测技巧在Wireshark的编辑→首选项→Protocols→TCP中取消勾选相对序列号可以看到真实的大数序列号。3.2 状态转换观察通过Wireshark可以间接观察TCP状态机变化客户端发送SYN后在终端执行netstat -an会看到SYN_SENT状态服务器响应后服务端显示SYN_RCVD状态完成握手后双方变为ESTABLISHED异常情况分析如果只看到SYN没有响应可能是防火墙拦截如果SYN-ACK后没有最终ACK可能是客户端问题大量SYN_RCVD状态可能遭遇SYN Flood攻击4. 典型问题排查案例4.1 握手失败常见原因通过Wireshark可以快速定位握手阶段的故障案例1客户端SYN包发出后无响应排查检查中间路由traceroute example.com可能原因防火墙丢弃或服务器未监听端口案例2服务器响应SYN-ACK但客户端无ACK排查检查客户端防火墙规则典型现象抓包显示[TCP Retransmission]案例3握手完成但立即断开排查检查是否有RST包紧随其后常见原因服务进程崩溃或负载过高4.2 高级分析技巧使用Wireshark的统计功能可以深入分析统计→对话查看TCP会话流量分布统计→TCP流图形生成时序图使用IO图表分析握手延迟# 过滤握手延迟的显示过滤器 tcp.analysis.ack_rtt and tcp.flags.syn1对于性能调优重点关注握手延迟SYN到SYN-ACK的时间重传次数TCP Retransmission计数窗口大小Win值是否合理