资讯动态

PacketTRacer 抓包实验:从协议字段到 TCP 三次握手的闭环验证

发布时间:2026/10/4 12:27:59 来源:尧图企业网站定制
简介这份PDF面向计算机网络初学者与实验课学生围绕PacketTracer模拟环境下的基础组网实验提供系统指导帮助读者在动手操作中理解网络原理与设备配置方法。资源共1个PDF文件压缩包约1.51MB内容以图文步骤和实验说明为主便于按章节查阅与课堂对照练习。目前已有1347人学习下载适合作为课程配套资料或自学参考。内容从基本技能实验切入涵盖网线制作中的直连线与交叉线区别、EIA/TIA 568A与568B线序标准、双机互联的IP地址与子网掩码设置、交换机星型局域网构建以及Windows Server 2003操作系统安装等模块并配有实验拓扑与操作截图。读者可据此掌握实验设备清单、操作流程与测试验证思路逐步建立从物理层布线到网络层配置的完整认知为后续更复杂的网络实验打下基础。1. PacketTRacer 实验指导从抓包到协议栈验证的最小闭环很多人做计算机网络实验时抓包工具打开、过滤器一填、点开始看到满屏滚动就以为完事了。真正翻车的地方在后面老师问「这个 TCP 三次握手为什么第二段 ACK 的 seq 是 1 而不是 0」或者「你抓的这帧以太网类型字段 0x0800 对应哪一层」答不上来。PacketTRacer 这类实验指导的核心价值不是教你点按钮而是把「抓到的字节」和「协议规范里的字段」对上号形成一条可验证的闭环。它适合正在上计算机网络实验课的学生、需要给团队做协议培训的 DevOps 工程师以及准备 408 或期末复习想动手验证理论的人。下面按「先立住原理、再动手复现、最后避坑」的顺序拆开讲。2. 抓包环境搭建与过滤器配置别让第一帧就抓错2.1 为什么选 PacketTRacer 而不是直接上通用抓包工具PacketTRacer 的定位是教学向的协议分析器和通用抓包工具最大的区别在于它把「协议分层」做成了显式视图。通用工具给你的是原始字节流加一层解析树你得自己知道 Ethernet II 帧头 14 字节、IP 头 20 字节起步、TCP 头 20 字节起步。PacketTRacer 通常会把每一层的字段名和值并排显示并且内置了常见协议的校验逻辑比如 IP 头校验和、TCP 伪首部校验。这意味着你在做「以太网帧格式」这类实验时不用先花两小时配 Wireshark 的列显示。但教学工具的通病是抽象过头容易让人忽略真实链路上的噪声。我一般会建议先用 PacketTRacer 把单个协议的字段结构吃透再切到通用工具看真实流量。两者不是替代关系是「先看图纸再上工地」的关系。选型上还有一点PacketTRacer 这类工具通常对回环接口和虚拟网卡的支持不如通用工具完善。如果你要做本机进程间通信的抓包比如验证 TCP 连接建立得确认它能不能绑定到 loopback。不能绑的话就老老实实用两台虚拟机或者一台物理机加一台虚拟机走真实网卡。2.2 最小可复现的抓包环境搭建步骤下面以 Linux 环境为例给出一套能跑通的最小步骤。Windows 下把命令换成对应的 ipconfig 和 netsh 即可逻辑一样。# 1. 确认网卡名称记下你要抓的那块比如 eth0 或 ens33 ip link show # 2. 确认 PacketTRacer 可执行文件位置假设在 /opt/packettracer/bin 下 ls /opt/packettracer/bin # 3. 以 root 权限启动因为抓包需要 CAP_NET_RAW 能力 sudo /opt/packettracer/bin/packettracer --interface eth0 --filter tcp port 80 # 4. 另开一个终端产生一条 HTTP 流量用于验证 curl -s http://example.com /dev/null # 5. 回到 PacketTRacer 界面确认抓到了至少 3 个包SYN、SYN-ACK、ACK这段命令的逻辑说明第一步是确认抓包对象抓错网卡是最常见的「抓不到包」原因。第二步确认工具存在避免路径问题。第三步的--filter参数用的是 BPF 语法tcp port 80表示只抓 TCP 且端口为 80 的包。第四步用 curl 产生流量注意用-s静默模式避免多余输出干扰。第五步是验证点如果只看到 SYN 没有 SYN-ACK说明流量没出去或者被防火墙拦了。参数说明--interface后面跟网卡名不能写any除非工具明确支持--filter的引号不能省否则 shell 会把空格拆成多个参数。如果你要抓 UDP 的 DNS 查询把过滤器换成udp port 53。要抓 ICMP 就用icmp。这些过滤器写法在 PacketTRacer 和通用工具之间是通用的因为底层都是 libpcap。提示抓包前先确认网卡处于 UP 状态用ip link show eth0看 state 是不是 UP。如果是 DOWN先sudo ip link set eth0 up。2.3 过滤器写错会导致什么三个真实翻车场景第一个场景写了tcp port 80但目标是 HTTPS 的 443 端口结果一个包都抓不到还以为工具坏了。原因是过滤器是精确匹配80 和 443 是两个端口。解决方法是写tcp port 80 or tcp port 443或者干脆先不写过滤器抓全量再分析。第二个场景写了host 192.168.1.100但本机 IP 是 192.168.1.101抓到的全是广播包。原因是 host 过滤器只匹配源或目的地址等于该 IP 的包。解决方法是先ip addr show确认本机 IP或者用net 192.168.1.0/24抓整个网段。第三个场景过滤器里写了port 80但没写协议结果 TCP 和 UDP 的 80 端口都抓了。虽然 80 端口通常只有 TCP但严格来说这是不精确的。解决方法是明确写tcp port 80。这三个场景的共同点是过滤器语法没错但语义和你的预期不匹配。抓包工具不会报错它只是忠实地执行你给的规则。所以每次抓不到包先检查过滤器再检查网卡最后检查流量是否真的产生了。3. 以太网帧与 ARP 解析从字节偏移看协议分层3.1 以太网 II 帧头的 14 个字节到底怎么数以太网 II 帧头固定 14 字节结构是目的 MAC 6 字节、源 MAC 6 字节、类型 2 字节。类型字段 0x0800 表示上层是 IPv40x0806 表示 ARP0x86DD 表示 IPv6。这个「类型字段」就是协议分层的粘合剂它告诉接收方把后面的数据交给哪个协议处理。在 PacketTRacer 里选中一个帧通常会看到类似这样的字段展开字段名长度字节示例值含义Destination MAC6ff:ff:ff:ff:ff:ff目的 MAC全 F 是广播Source MAC600:0c:29:1a:2b:3c源 MACType20x0806上层协议类型这里是 ARPHardware Type20x0001以太网Protocol Type20x0800上层是 IPv4Opcode20x00011 是请求2 是应答这张表里前三个字段是以太网帧头后面的是 ARP 报文的内容。注意 ARP 报文是直接封装在以太网帧里的没有 IP 头。这就是为什么 ARP 被称为「三层半」协议——它工作在二层和三层之间。数字节的时候有个血泪经验PacketTRacer 的十六进制视图里每两个字符是一个字节。目的 MAC 占前 12 个字符源 MAC 占接下来 12 个类型占最后 4 个。如果你数出来对不上大概率是把偏移量算错了。建议用工具的「高亮字段」功能点哪个字段就高亮哪段字节比手数靠谱。3.2 用 ARP 请求和应答验证 MAC 与 IP 的映射ARP 的实验目标很明确验证「同一网段内IP 地址如何解析成 MAC 地址」。操作步骤如下。# 1. 清空本机 ARP 缓存确保能抓到完整的请求应答过程 sudo ip neigh flush all # 2. 确认缓存已空 ip neigh show # 3. 在 PacketTRacer 里设置过滤器只抓 ARP # 过滤器写arp # 4. 另开终端 ping 同一网段的另一台主机比如 192.168.1.20 ping -c 1 192.168.1.20 # 5. 回到 PacketTRacer应该看到两个包 # 第一个是 ARP 请求目的 MAC 是 ff:ff:ff:ff:ff:ffOpcode 是 1 # 第二个是 ARP 应答目的 MAC 是请求方的 MACOpcode 是 2逻辑说明第一步清空缓存是关键否则本机可能直接用缓存里的 MAC 发数据你就抓不到 ARP 请求了。第二步确认清空成功。第三步设置过滤器减少干扰。第四步产生 ARP 流量。第五步验证。参数说明ip neigh flush all在部分发行版上需要 root 权限。如果提示命令不存在用sudo arp -d或者sudo ip -s neigh flush all。ping 的-c 1表示只发一个包避免持续输出。在 PacketTRacer 里看 ARP 应答包时重点看两个字段Sender MAC 和 Sender IP。Sender MAC 就是被 ping 那台主机的 MACSender IP 是它的 IP。这两个值的组合就是 ARP 缓存里要存的内容。你可以回到终端用ip neigh show确认缓存里确实多了这一条。注意如果 ping 的是不同网段的主机ARP 请求的目标 IP 会是网关地址而不是最终目的 IP。这是很多人做实验时困惑的点——「我 ping 的是 8.8.8.8为什么 ARP 请求里问的是 192.168.1.1」。原因是跨网段通信时主机只需要知道网关的 MAC剩下的路由由网关负责。3.3 帧长度与填充字段为什么最小帧是 64 字节以太网规定最小帧长 64 字节这个 64 字节是从目的 MAC 开始算到帧校验序列FCS结束。如果上层数据太短比如 ARP 请求只有 28 字节加上帧头 14 字节才 42 字节不够 64就需要填充字段补到 46 字节的数据部分。在 PacketTRacer 里抓一个 ARP 包看它的总长度。如果显示 60 字节不含 FCS或 64 字节含 FCS说明有填充。填充字段的内容通常是全零但规范不要求具体值只要求长度够。这个知识点在考试里经常考为什么最小帧是 64 字节答案是碰撞检测。以太网用 CSMA/CD发送方要在发送过程中检测碰撞。如果帧太短发送方可能在检测到碰撞之前就已经发完了导致无法重传。64 字节对应的是 10Mbps 以太网下 512 比特的传输时间也就是往返传播延迟的两倍。这个数值在千兆以太网里通过载波扩展机制做了调整但最小帧长仍然是 64 字节。实验里验证这一点的方法抓一个 ARP 请求看它的长度字段。如果 PacketTRacer 显示的长度是 42 字节说明它没算填充如果显示 60 或 64说明算了。不同工具的显示口径不一样看的时候注意区分。4. IP 与 ICMP 联动分析ping 命令背后的完整链路4.1 IP 头 20 字节里哪几个字段必须盯死IP 头固定部分 20 字节字段不少但实验里必须盯死的是这几个版本4 位、首部长度4 位、总长度16 位、标识16 位、标志3 位、片偏移13 位、生存时间 TTL8 位、协议8 位、首部校验和16 位、源 IP32 位、目的 IP32 位。其中最容易翻车的是「首部长度」和「总长度」的区别。首部长度的单位是 4 字节所以值通常是 5表示 20 字节。总长度的单位是 1 字节表示整个 IP 数据报的长度包括首部和数据。如果你看到首部长度是 5、总长度是 60那数据部分就是 40 字节。TTL 是另一个关键字段。每经过一个路由器TTL 减 1减到 0 就丢弃并发 ICMP 超时报文。traceroute 就是利用这个机制工作的。实验里可以用 ping 的-t参数Windows或-T参数Linux指定 TTL观察不同 TTL 下的响应。协议字段告诉接收方上层是什么1 是 ICMP6 是 TCP17 是 UDP。这个字段和以太网帧的类型字段作用类似但层次不同。以太网类型字段区分的是 IP 和 ARPIP 协议字段区分的是 TCP、UDP、ICMP。4.2 抓一次 ping 的完整流程从 ICMP 请求到应答下面用一套可复现的步骤把 ping 的完整链路抓下来并逐层验证。# 1. 设置 PacketTRacer 过滤器同时抓 ICMP 和 ARP # 过滤器写icmp or arp # 2. 清空 ARP 缓存确保能看到 ARP 请求 sudo ip neigh flush all # 3. ping 同一网段的主机只发两个包 ping -c 2 192.168.1.20 # 4. 在 PacketTRacer 里按时间顺序看包 # 包1ARP 请求广播 # 包2ARP 应答单播 # 包3ICMP Echo Request类型 8代码 0 # 包4ICMP Echo Reply类型 0代码 0 # 包5第二个 ICMP Echo Request # 包6第二个 ICMP Echo Reply # 5. 选中包3展开 IP 头确认 # - 协议字段 1ICMP # - 源 IP 本机 IP # - 目的 IP 192.168.1.20 # - TTL 64Linux 默认或 128Windows 默认 # 6. 展开 ICMP 头确认 # - 类型 8请求 # - 代码 0 # - 标识符和序列号用于匹配请求和应答逻辑说明第一步的过滤器同时抓 ICMP 和 ARP因为第一次 ping 会先触发 ARP。第二步清缓存确保 ARP 一定出现。第三步发两个包是为了看序列号的变化。第四步按顺序看包理解「先 ARP 后 ICMP」的顺序。第五步和第六步是逐字段验证。参数说明ping 的-c 2表示发两个包。Linux 下默认 TTL 是 64Windows 下是 128这个差异可以用来判断目标主机的操作系统。ICMP 的标识符字段在 Linux 下通常是进程 ID序列号从 1 开始递增。在 PacketTRacer 里对比请求和应答包时重点看两个字段的变化类型从 8 变成 0源 IP 和目的 IP 互换。标识符和序列号保持不变这样发送方才能把应答和请求匹配上。如果标识符对不上说明抓到了其他进程的 ping。提示如果 ping 不通但 ARP 能通问题通常出在 ICMP 被防火墙拦了。Linux 下检查sudo iptables -L -n看有没有 DROP ICMP 的规则。Windows 下检查防火墙的入站规则。4.3 TTL 递减与 traceroute 的联动验证traceroute 的原理是发送一系列 TTL 递增的包第一个包 TTL1到达第一个路由器后 TTL 减为 0路由器丢弃并返回 ICMP 超时报文类型 11代码 0。第二个包 TTL2到达第二个路由器才超时。以此类推直到到达目的主机。实验里可以这样验证# 1. PacketTRacer 过滤器写icmp # 2. 执行 traceroute限制最大跳数为 3避免抓太多包 traceroute -m 3 8.8.8.8 # 3. 在 PacketTRacer 里观察 # - 第一组包TTL1 的 UDP 包Linux 默认用 UDP和返回的 ICMP 超时报文 # - 第二组包TTL2 的 UDP 包和返回的 ICMP 超时报文 # - 第三组包TTL3 的 UDP 包和返回的 ICMP 超时报文 # 4. 选中 ICMP 超时报文展开 IP 头确认 # - 源 IP 是中间路由器的地址 # - 协议字段 1ICMP # - 展开 ICMP 头类型 11代码 0 # 5. 选中 ICMP 报文的数据部分里面包含了原始 UDP 包的 IP 头和前 8 字节数据 # 这是 ICMP 差错报文的规定必须包含原始数据报的 IP 头和至少 8 字节数据逻辑说明第一步限制过滤器。第二步用-m 3限制跳数避免抓包过多。第三步观察 TTL 递增和 ICMP 超时的对应关系。第四步验证 ICMP 超时报文的字段。第五步验证 ICMP 差错报文携带原始数据的规定。参数说明Linux 下 traceroute 默认用 UDP 高端口Windows 下 tracert 默认用 ICMP。如果要强制用 ICMPLinux 下加-I参数。-m 3表示最大 3 跳。这个实验的价值在于把「TTL 是什么」从概念变成可观察的现象。你看到 TTL1 的包出去回来的 ICMP 超时报文里源 IP 是第一个路由器就理解了 TTL 的作用。这比背「TTL 是生存时间每经过一个路由器减一」要深刻得多。5. TCP 三次握手抓包验证序列号与标志位的对应关系5.1 三次握手的三个包各自长什么样TCP 三次握手的三个包在 PacketTRacer 里看 TCP 头的标志位和序列号规律很清晰。第一个包SYN标志位 SYN1ACK0seq客户端初始序列号比如 1000ack0。这个包的意思是「我想跟你建立连接我的起始序列号是 1000」。第二个包SYN-ACK标志位 SYN1ACK1seq服务端初始序列号比如 2000ack1001。这个包的意思是「我同意建立连接我的起始序列号是 2000我期望你下一个包的序列号是 1001」。第三个包ACK标志位 SYN0ACK1seq1001ack2001。这个包的意思是「我确认收到你的 SYN-ACK我下一个包的序列号是 1001我期望你下一个包的序列号是 2001」。关键点SYN 和 FIN 各消耗一个序列号所以第二个包的 ack 是 100011001第三个包的 ack 是 200012001。数据字节不消耗额外序列号只有 SYN、FIN 和实际数据消耗。在 PacketTRacer 里验证时选中第一个包展开 TCP 头看 Flags 字段。通常显示为SYN或0x02。第二个包显示SYN, ACK或0x12。第三个包显示ACK或0x10。序列号和确认号在 TCP 头的固定位置偏移量是 4 字节和 8 字节。5.2 用 curl 触发握手并逐包核对序列号# 1. PacketTRacer 过滤器写tcp port 80 and host 目标IP # 假设目标 IP 是 93.184.216.34 # 2. 执行 curl只发 HEAD 请求减少后续数据传输的干扰 curl -I http://example.com # 3. 在 PacketTRacer 里找到前三个 TCP 包 # 包1SYNseq0相对序列号或某个随机值绝对序列号 # 包2SYN-ACKseq0ack1 # 包3ACKseq1ack1 # 4. 如果 PacketTRacer 显示的是相对序列号验证 # - 包1 seq0ack 无 # - 包2 seq0ack1 # - 包3 seq1ack1 # 5. 如果显示的是绝对序列号验证 # - 包1 seqXack 无 # - 包2 seqYackX1 # - 包3 seqX1ackY1逻辑说明第一步设置过滤器只抓目标 IP 的 80 端口流量。第二步用-I发 HEAD 请求服务端只返回头部减少数据包干扰。第三步找到前三个 TCP 包。第四步和第五步分别验证相对序列号和绝对序列号的情况。参数说明curl -I等价于--head只请求头部。PacketTRacer 默认可能显示相对序列号这样更直观但绝对序列号能看出初始序列号的随机性。TCP 初始序列号是随机生成的这是为了防止旧连接的延迟包干扰新连接。注意如果抓到的第一个包不是 SYN而是 ACK 或其他说明连接已经建立了或者你抓的是其他连接的包。解决方法是先关闭所有到目标 IP 的连接或者换一个目标 IP。5.3 四次挥手为什么比三次握手多一次四次挥手的过程主动关闭方发 FIN被动关闭方回 ACK被动关闭方发 FIN主动关闭方回 ACK。比三次握手多一次的原因是 TCP 是全双工的每个方向需要单独关闭。在 PacketTRacer 里抓四次挥手过滤器和抓握手一样只是触发方式换成关闭连接。curl 执行完会自动关闭连接所以抓完握手继续看后面的包就能看到挥手。关键字段FIN 包消耗一个序列号和 SYN 一样。所以第一个 FIN 的 seq 是当前序列号第二个 FIN 的 ack 是第一个 FIN 的 seq1。ACK 包不消耗序列号所以中间的 ACK 的 seq 和 ack 不变。实验里容易困惑的点为什么第二个 FIN 和第一个 FIN 之间可能隔了很久因为被动关闭方可能还有数据要发发完才发 FIN。这个间隔在抓包时表现为时间戳的差异。PacketTRacer 通常会显示每个包的时间戳可以看这个间隔。6. 实验避坑与排查抓不到、对不上、看不懂怎么办6.1 抓不到包从网卡到过滤器的排查顺序现象PacketTRacer 显示正在抓包但一个包都没有。原因一网卡选错了。本机有多块网卡时默认可能选了虚拟网卡或未连接的网卡。解决方法是ip link show确认哪块网卡有流量重新指定--interface。原因二过滤器太严。比如写了tcp port 80 and host 192.168.1.100但实际流量是到 192.168.1.101 的。解决方法是先去掉过滤器抓全量确认有流量后再逐步加过滤条件。原因三权限不够。普通用户没有 CAP_NET_RAW 能力抓不到包但工具不报错。解决方法是sudo启动或者setcap cap_net_raweip给可执行文件授权。原因四流量走了回环接口。本机进程间通信不走物理网卡走 lo 接口。解决方法是抓lo接口或者用两台机器。6.2 字段对不上相对序列号与绝对序列号的混淆现象抓到的 TCP 包 seq 和 ack 都是小数字比如 0、1、2但理论上初始序列号应该是随机大数。原因PacketTRacer 默认显示相对序列号把第一个包的序列号当作 0后续包相对于它计算。这是为了教学方便但和真实协议行为不符。解决方法是找工具的设置项切换成绝对序列号显示。如果找不到就接受相对序列号但要知道真实值是随机的。另一个容易混淆的点IP 头的「首部长度」字段单位是 4 字节值是 5 表示 20 字节。但「总长度」字段单位是 1 字节值是 60 表示 60 字节。这两个字段的单位不同看的时候要区分。6.3 看不懂 ICMP 差错报文里的嵌套结构现象抓到一个 ICMP 超时报文展开后发现里面还有一层 IP 头和 TCP/UDP 头不知道是什么。原因ICMP 差错报文规定必须包含原始数据报的 IP 头和至少前 8 字节数据。这是为了让发送方知道是哪个数据报出错了。嵌套的那层 IP 头就是原始数据报的。解决方法在 PacketTRacer 里展开 ICMP 报文的数据部分找到嵌套的 IP 头看它的源 IP 和目的 IP。这两个地址和 ICMP 报文本身的源目的地址是反过来的——ICMP 报文的源是路由器目的是原始发送方嵌套 IP 头的源是原始发送方目的是最终目标。6.4 时间戳看不懂相对时间和绝对时间的区别现象PacketTRacer 显示的时间戳是 0.000、0.001、0.002 这样的小数不知道对应真实世界的什么时间。原因抓包工具默认显示相对时间以第一个包为 0 点。这样看包之间的间隔很方便但不知道绝对时间。解决方法是找设置项切换成绝对时间或者自己加一个基准时间。相对时间在分析协议交互时更有用。比如看三次握手的间隔0.000 到 0.001 是 1 毫秒说明网络延迟很低。如果间隔是 0.5 秒说明有延迟。绝对时间在排查「什么时候发生的」这类问题时有用。6.5 校验和显示错误是工具算错了还是包真的坏了现象PacketTRacer 显示 IP 头校验和或 TCP 校验和错误但网络通信正常。原因一网卡硬件卸载。很多网卡支持校验和卸载发送时由网卡计算校验和抓包工具在网卡驱动之前抓到包看到的是未计算的校验和。解决方法是关闭网卡的校验和卸载功能sudo ethtool -K eth0 tx off rx off。原因二抓包位置不对。在发送端抓包看到的是未计算校验和的包在接收端抓包看到的是已经验证过的包。解决方法是换到接收端抓或者接受这个显示错误。原因三包真的坏了。如果接收端也显示校验和错误且通信异常说明链路有问题。解决方法是检查网线、网卡、交换机端口。7. 用 PacketTRacer 做协议栈验证的进阶技巧7.1 构造特定流量验证协议字段的边界值PacketTRacer 配合一些命令行工具可以构造特定流量来验证协议字段的边界值。比如验证 IP 分片可以用 ping 发一个超过 MTU 的包。# 1. PacketTRacer 过滤器写icmp # 2. 发一个 3000 字节的 ping 包超过以太网 1500 字节 MTU ping -c 1 -s 3000 192.168.1.20 # 3. 在 PacketTRacer 里观察 # - 第一个包ICMP Echo Request总长度 1500标志 MF1片偏移0 # - 第二个包ICMP Echo Request总长度 1500标志 MF1片偏移1480 # - 第三个包ICMP Echo Request总长度 48标志 MF0片偏移2960 # 4. 验证片偏移的单位是 8 字节 # 第一个包数据部分 1480 字节片偏移 0 # 第二个包数据部分 1480 字节片偏移 1480/8185 # 第三个包数据部分 8 字节片偏移 (14801480)/8370逻辑说明第一步设置过滤器。第二步发大包触发分片。第三步观察分片结果。第四步验证片偏移的计算。参数说明-s 3000指定 ICMP 数据部分 3000 字节加上 ICMP 头 8 字节和 IP 头 20 字节总长度 3028 字节。MTU 1500 字节所以需要分成三个包。第一个包数据 1480 字节1500-20第二个包数据 1480 字节第三个包数据 48 字节3028-20-1480-1480。这个实验的价值在于把「IP 分片」从概念变成可观察的现象。你看到 MF 标志和片偏移的变化就理解了分片和重组的过程。7.2 用时间线视图分析协议交互的时序关系PacketTRacer 通常有时间线视图把包按时间顺序排列用不同颜色区分协议。这个视图在分析交互时序时很有用。比如分析 TCP 慢启动可以抓一次大文件传输看时间线上包的时间间隔变化。慢启动阶段拥塞窗口指数增长包的时间间隔逐渐缩小。进入拥塞避免阶段后时间间隔趋于稳定。再比如分析 DNS 查询可以看 DNS 请求和应答的时间差。如果时间差很大说明 DNS 服务器响应慢。如果时间差很小但解析失败说明 DNS 返回了错误码。时间线视图的另一个用途是发现异常。比如某个包的时间戳突然跳变说明有延迟。某个协议的包突然消失说明连接断了。这些异常在列表视图里不容易发现在时间线视图里一目了然。7.3 把抓包结果导出做二次分析PacketTRacer 通常支持导出 pcap 格式可以用通用工具做二次分析。比如用 tshark 统计协议分布用 tcpdump 过滤特定流量。# 1. 在 PacketTRacer 里导出 pcap 文件假设保存为 capture.pcap # 2. 用 tshark 统计协议分布 tshark -r capture.pcap -q -z io,phs # 3. 用 tshark 提取所有 HTTP 请求的 URL tshark -r capture.pcap -Y http.request -T fields -e http.host -e http.request.uri # 4. 用 tcpdump 过滤特定 IP 的流量并保存 tcpdump -r capture.pcap -w filtered.pcap host 192.168.1.20 # 5. 用 capinfos 查看抓包文件的基本信息 capinfos capture.pcap逻辑说明第一步导出 pcap。第二步用 tshark 的协议分层统计功能。第三步提取 HTTP 请求的 Host 和 URI。第四步用 tcpdump 过滤。第五步查看文件信息。参数说明-q -z io,phs是 tshark 的统计选项io,phs表示协议分层统计。-Y是显示过滤器-T fields指定输出字段。-e指定字段名。这些命令在排查网络问题时很常用配合 PacketTRacer 的教学视图可以兼顾学习和实战。我自己的习惯是先用 PacketTRacer 把协议字段看明白再把 pcap 导出来用 tshark 做批量分析。教学工具帮你理解单个包通用工具帮你理解流量模式。两者结合既不会迷失在字节里也不会停留在点按钮的层面。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑