ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Wireshark抓不到ICMP包?从网卡到协议栈的完整排障指南

Wireshark抓不到ICMP包?从网卡到协议栈的完整排障指南 简介本资源是一份面向计算机网络初学者与实践教学场景的Wireshark抓包分析实验指导文档聚焦网络协议解析与流量诊断能力培养。文档系统讲解Wireshark安装配置、实时捕获启动、界面三区功能数据帧列表/协议详情/原始字节、常用过滤器如ip.addr192.168.5.8设置及TCP流追踪Follow TCP Stream等核心操作并深入剖析以太网帧、IP数据报、TCP段的各层头部字段含义与实际抓包示例涵盖源/目的MAC、IP地址、端口、TTL、协议类型、校验和等关键信息。资源为单个Word文档.doc格式文件大小592KB内容结构清晰图文结合适合作为高校《计算机网络》课程配套实验材料或自学实操手册。目前已有85人学习下载读者可直接获取完整实验流程、典型数据包截图、分层协议解析对照表及常见问题定位思路快速掌握网络故障排查与协议学习的实用技能。1. 为什么刚打开 Wireshark 就抓不到 ICMP 包——这不是软件问题是网卡、协议栈和你当前网络行为共同决定的“静默状态”很多同学在《计算机网络》实验课上第一次打开 Wireshark满怀期待点下“开始捕获”等了半分钟界面一片空白刷新几次后慌了是不是装错了驱动没启老师给的 doc 文件里说“能抓到 ping 包”可自己电脑连 ping 都没发过——Wireshark 本身不生成流量它只忠实地记录本机网卡实际收到或发出的原始字节流。你没主动触发任何网络通信比如没在命令行敲ping www.baidu.com系统底层就没有 IP 数据包进出网卡Wireshark 自然抓不到任何东西。更隐蔽的问题在于现代 Windows/macOS 默认启用“混合模式”Promiscuous Mode受限、IPv6 流量默认开启但你只过滤icmp即 IPv4 ICMP、甚至某些 WiFi 网卡驱动在监控模式下会丢弃非本机 MAC 地址的帧。这不是 Wireshark 的 bug而是网络协议栈与物理层协同工作的必然结果。这篇笔记不讲菜单按钮在哪而是带你从网卡驱动层、协议栈收发路径、过滤语法本质出发用最小可控动作仅一条 ping 命令 一个显示过滤器打通“捕获→看到→理解”全链路。适合正在做头歌/湖科大/HNU 计算机网络实验、被“抓不到包”卡住进度的本科生也适合 DevOps 工程师排查本地服务间调用异常时快速验证底层连通性。2. 在 PC 网卡上开启 Wireshark 捕获不是点“开始”就完事得先确认网卡状态、关闭干扰项、选对接口Wireshark 的捕获起点不是软件界面而是操作系统暴露给用户的网络接口列表。这个列表直接映射到内核的netdev设备每一条都对应一个真实或虚拟的网卡如Ethernet,Wi-Fi,vEthernet (WSL2),Loopback Pseudo-Interface。选错接口等于把监听设备架在了错误的物理通道上——就像把录音笔放在隔壁房间听自己说话。2.1 查看并筛选可用接口用命令行交叉验证避开“幽灵接口”图形界面里点击“Capture → Options”看到的接口列表有时会包含已断开、禁用或 WSL2 创建的虚拟接口如vEthernet (Default Switch)它们可能持续上报空包或 loopback 流量干扰主网卡抓包。更可靠的做法是先用系统命令确认当前活跃接口# Windows PowerShell管理员权限运行 Get-NetAdapter | Where-Object {$_.Status -eq Up} | Select-Object Name, InterfaceDescription, LinkSpeed输出示例Name InterfaceDescription LinkSpeed ---- -------------------- --------- Ethernet Realtek PCIe GbE Family Controller 1 Gbps Wi-Fi MEDIATEK MEDIATEK MT7921 Wireless 574 Mbps提示LinkSpeed非零且Status为Up才是真正承载你上网流量的物理网卡。如果看到vEthernet接口速率是0 bps说明它当前无数据流动不应作为主捕获目标。2.2 关闭干扰服务让 ICMP 流量“裸奔”避免中间件劫持某些安全软件如 360 安全卫士、腾讯电脑管家或企业级终端防护如 CrowdStrike、SentinelOne会在 TCP/IP 协议栈中注入分层驱动LSP / WFP拦截或重写原始数据包。Wireshark 虽能绕过部分应用层代理但无法穿透内核级网络过滤器。最简单验证方式临时禁用所有非系统必要服务。# Windows以管理员身份运行 CMD停用 Windows Defender 实时保护仅本次实验 Set-MpPreference -DisableRealtimeMonitoring $true # 同时关闭防火墙实验环境临时操作 netsh advfirewall set allprofiles state off注意此操作仅限实验室封闭网络或个人笔记本切勿在办公网或公网环境执行。关闭后需手动重启 Wireshark 才能生效——因为 Wireshark 在启动时已加载当前网络栈快照。2.3 启动捕获前的关键设置混杂模式、缓冲区、时间戳精度Wireshark 默认开启混杂模式Promiscuous Mode但这在无线网卡上常被硬件限制802.11 标准规定 AP 只转发目的 MAC 为本机或广播的帧。若你用的是 WiFi必须关闭混杂模式否则可能捕获不到任何非广播包在 Capture Options 窗口找到目标网卡如Wi-Fi取消勾选Enable promiscuous mode设置捕获文件缓冲区为2 MB默认 2MB 足够存 1000 ICMP 包过大易内存溢出时间戳类型选Host system time (high resolution)—— 避免后续分析时序关系出现毫秒级偏差完成上述三步后点击“Start”才真正开始监听网卡 DMA 缓冲区。此时界面左下角会显示Capturing from Wi-Fi且实时计数器开始跳动——这才是有效捕获的视觉信号。3. 过滤icmp报文从 BPF 语法到底层以太网帧结构为什么icmp能抓到 ping 却漏掉 tracerouteWireshark 的显示过滤器Display Filter和捕获过滤器Capture Filter是两套完全独立的机制。前者在数据包进入 UI 后才生效后者在内核驱动层就丢弃不符合条件的包——实验文档里写的“过滤 icmp 报文”90% 场景指显示过滤器但初学者常误用捕获过滤器导致抓空。3.1 显示过滤器icmp的真实含义它匹配的是 IPv4 ICMP 协议字段而非所有“ping 类”流量ICMP 协议仅定义在 IPv4 层IP Protocol Number 1。当你在 Wireshark 输入icmp并回车它实际编译为 BPF 字节码ip.proto 1。这意味着✅ 能捕获ping www.baidu.com产生的Echo Request/ReplyType8/0❌ 捕获不到tracert www.baidu.com的ICMP Time Exceeded虽属 ICMP但 Wireshark 默认不展开解析需手动展开 IP 头部❌ 完全看不到 IPv6 的ping6流量其协议号为 58对应过滤器应为icmpv6验证方法在捕获窗口任意位置右键 → “Prepare a Filter” → “Selected → icmp”你会看到过滤器栏自动填入icmp同时下方状态栏提示12 packets displayed (100.0%)—— 若此前抓了 100 个包却只显示 0 个说明根本没产生 IPv4 ICMP 流量。3.2 捕获过滤器icmp的致命陷阱它会让 Wireshark 在网卡层丢弃所有非 ICMP 包包括 ARP 和 DNS很多教程教学生在 Capture Options 里直接填icmp作为捕获过滤器这是严重误导。该语法会被 libpcap 编译为内核级 BPF 程序效果等同于// 伪代码仅允许 IP 协议号为 1 的帧进入用户态 if (ip_proto ! 1) drop_packet();后果是你的ping命令发出去前需要先通过 ARP 获取网关 MAC 地址 → 但 ARP 是以太网层协议EtherType0x0806被过滤器直接丢弃→ping命令卡在 “Request timed out”DNS 查询UDP 53 端口同样被丢弃 → 无法解析域名 →ping www.baidu.com会先报Ping request could not find host血泪经验永远优先用显示过滤器icmp仅在明确需降低 CPU 占用如抓 1 小时 HTTP 流量只关注其中 ICMP时才启用捕获过滤器且务必配合or arp or udp port 53等保底规则。3.3 精确匹配 ICMP Type 的实战写法区分请求、响应、重定向、超时单纯icmp过滤器太粗放。实验中常需单独分析ping的请求与响应往返过滤目标显示过滤器语法底层依据所有 ICMP 请求icmp.type 8IPv4 头部后第 1 字节ICMP Type 8所有 ICMP 响应icmp.type 0Type 0Traceroute 超时icmp.type 11 icmp.code 0Type11 (Time Exceeded), Code0 (TTL expired)路由器重定向icmp.type 5Type5 (Redirect)实操步骤先用ping -n 3 www.baidu.com发送 3 次请求在 Wireshark 中输入icmp.type 8 || icmp.type 0观察时间列请求Type8与响应Type0应成对出现间隔 ≈ RTT 值如 28ms右键任一响应包 → “Follow → ICMP Stream”Wireshark 会自动重组该次 ping 的完整交互流程玄学提醒Wireshark 解析 ICMP 时依赖 IP 头部的 Identification 字段配对请求/响应。若遇到乱序包可右键 → “Protocol Preferences → ICMP → Enable ICMP reassembly” 强制重组。4. 点开捕获到的数据包逐层解剖以太网帧 → IP 头 → ICMP 载荷看懂每个字节的归属Wireshark 的“Packet Details”面板不是装饰它是协议栈的透明玻璃窗。点开一个 ICMP Echo Request 包你会看到三层嵌套结构Frame物理层、Ethernet II数据链路层、Internet Protocol Version 4网络层、Internet Control Message ProtocolICMP。每一层的字段都对应 RFC 792 / RFC 791 的明确定义。4.1 以太网帧头部MAC 地址、类型字段、FCS 校验的物理意义展开Frame条目关键字段解读字段名值示例含义说明Arrival TimeJan 15, 2024 14:22:33.123456数据包到达网卡 DMA 缓冲区的高精度时间戳非发送时间Frame Number42Wireshark 内部序号用于排序和过滤Frame Length98 bytes (784 bits)整个帧长度含 FCSWireshark 默认不显示最后 4 字节 FCS需在 Preferences → Protocols → Ethernet → “Show FCS data” 开启EncapsulationEthernet (0x00000001)表示该帧使用标准 Ethernet II 封装非 802.3 或 LLCDestinationff:ff:ff:ff:ff:ff广播地址ARP 请求或网关 MACping 时Sourceac:bc:32:xx:xx:xx本机网卡 MAC 地址注意不是 IP 地址Type0x0800 (IPv4)EtherType 字段0x0800 IPv40x0806 ARP0x86dd IPv6避坑 / 常见问题 / 排查现象捕获到大量Destination: ff:ff:ff:ff:ff:ff的包但icmp过滤器无结果原因这是 ARP 广播请求如Who has 192.168.1.1? Tell 192.168.1.100因未启用arp过滤器而被忽略解决在显示过滤器输入arp || icmp或单独用arp.opcode 1查看请求、arp.opcode 2查看响应4.2 IPv4 头部TTL、校验和、分片标志如何影响网络行为展开Internet Protocol Version 4重点字段字段名值示例含义说明Version4IPv4 协议版本Header Length20 bytes固定 20 字节无 Options 时Wireshark 用此值定位 ICMP 起始位置Differentiated Services Field0x00 (DSCP: CS0, ECN: Not-ECT)旧称 TOS 字段现代网络基本不用但某些 QoS 设备仍检测Total Length84IP 包总长Header Data此处 20(IP) 64(ICMP Payload) 84Identification0x3a7c用于分片重组的唯一 ID同一 ping 的请求/响应此值相同Windows 默认行为Flags0x4000 (Dont fragment)第二位 DF1 表示禁止分片若路径 MTU 小于此包路由器将返回 ICMP Fragmentation NeededFragment offset0分片偏移量非分片包为 0Time to live128TTL 初始值Windows 默认 128Linux 默认 64每经过一跳减 1为 0 时丢弃并返回 ICMP Time ExceededProtocol1 (ICMP)IP 协议号Wireshark 用此值决定下一步解析为 ICMP 还是 TCP/UDPHeader checksum0x5e2dIP 头部校验和路由器转发时需重新计算因 TTL 改变Source Address192.168.1.100本机 IPv4 地址Destination Address192.168.1.1网关或目标主机 IPping 时若目标为外网此处是网关 IP4.3 ICMP 载荷Sequence Number 与 Identifier 如何实现 ping 的“对话感”展开Internet Control Message Protocol核心字段字段名值示例含义说明Type8 (Echo (ping) request)ICMP 类型8请求0响应3目标不可达11超时Code0子类型Echo 请求/响应 code 恒为 0Checksum0x7f2aICMP 校验和覆盖 ICMP 头部数据发送方计算接收方验证Identifier0x0200由 ping 进程生成的 16 位 ID同一命令行发起的所有 ping 使用相同 ID用于区分不同 ping 进程Sequence Number116 位序列号从 0 或 1 开始递增接收方据此判断丢包、乱序Data00000000: 6162 6364 6566 6768 696a 6b6c 6d6e abcdefghijklmn默认 32 字节 ASCII 数据abcdefghijklmnopqrstuvwxy...Wireshark 自动 ASCII 解码显示关键洞察Wireshark 的 “Time” 列相对起始时间与 ICMP 的Sequence Number共同构成 RTT 分析基础。例如包 #42icmp.type8, seq1, Time0.000234s包 #45icmp.type0, seq1, Time0.028456s→ RTT 0.028456 - 0.000234 28.222ms与ping命令输出完全一致。5. 避坑 / 常见问题 / 排查5 个让计算机网络实验失败的真实翻车现场Wireshark 实验中最消耗时间的不是技术本身而是那些违反直觉的“环境假象”。以下是我在头歌、HNU、湖科大等平台带实验时学生复现率最高的 5 类问题按发生频率排序5.1 现象Wireshark 显示“0 packets captured”但网卡明明在传数据原因Windows 10/11 默认启用“网络连接状态指示器”NCSI后台探测它使用 HTTP GET 请求非 ICMP而你过滤器写了icmp解决临时关闭 NCSInetsh interface ipv4 set subinterface Wi-Fi mtu1500 storepersistent重置 MTU 可中断探测或改用icmp || http过滤器观察全貌5.2 现象能抓到 ping 请求但永远看不到响应包原因目标主机如 www.baidu.com位于 NAT 后其响应包目的 IP 是你的公网 IP但你的路由器未正确回转 ICMP 响应常见于校园网/企业防火墙策略解决改 ping 内网地址如ping 192.168.1.1网关验证链路若网关响应正常则问题出在外网路径非 Wireshark 问题5.3 现象Wireshark 中 ICMP 数据显示为...省略号无法看到 ASCII 内容原因Wireshark 默认对超过 256 字节的载荷截断显示而某些 ping 工具如ping -l 1000发送大包解决右键 ICMP 数据区 → “Expand Packet Bytes”或全局设置Edit → Preferences → Protocols → ICMP → “Maximum number of bytes to display per line” 改为 10245.4 现象过滤器icmp无效但ip.proto 1有效原因Wireshark 版本差异。Wireshark 3.0 严格区分协议名称老版本支持icmp别名新版本需确保协议解析器已加载解决检查菜单 Help → About Wireshark → 确认版本 ≥ 3.2若仍无效在过滤器输入ip.proto 1作为兼容写法5.5 现象同一 ping 命令Wireshark 显示 3 个请求包但命令行只输出 2 行 “Reply from…”原因Wireshark 捕获的是网卡收发的原始帧包含重传。当第一个 Echo Request 未收到响应时ping 进程会按超时策略重发Windows 默认 4 秒超时但 Wireshark 可能在 1 秒内就捕获到重传帧解决查看 ICMPIdentifier和Sequence Number组合相同 ID不同 Seq 即为重传在过滤器加 frame.time_delta 0.5限定时间差排除明显重传6. 输入捕获测频率用 Wireshark 的 IO Graph 和 Expert Info 挖掘隐藏的网络行为规律“输入捕获测频率”在标题中看似突兀实则是计算机网络实验向工程实践延伸的关键跳板——它指向一个被严重低估的能力把 Wireshark 从“抓包查看器”升级为“网络行为频谱分析仪”。当你不再满足于“看到 ping 包”而是想回答“这台设备每秒发起多少 ARP 请求”、“DNS 查询是否存在突发洪峰”、“TCP 重传是否集中在特定时间段”就需要跳出单包分析进入统计维度。6.1 用 IO Graph 统计 ICMP 发送频率量化你的 ping 行为Wireshark 的 IO GraphStatistics → I/O Graph是免费的轻量级时序分析工具。以ping -t www.baidu.com持续发送为例捕获至少 30 秒流量打开 IO Graph → 点击 “” 新建图表在 Filter 栏输入icmp.type 8仅统计请求X 轴设为1 secondY 轴设为Count点击 “Graph” → 你会看到一条水平直线如 y1证明 ping 每秒固定发 1 包进阶技巧添加第二条曲线icmp.type 0响应两条线重合度越高说明网络稳定性越好若响应线频繁跌零即为丢包点。6.2 Expert Info自动标记异常事件比人眼更快发现协议违规Wireshark 内置的 Expert InfoAnalyze → Expert Info会扫描所有包按 SeverityChat/Note/Warn/Err分类告警。这是排查“看似正常却实际异常”的黑匣子利器Severity典型告警内容工程意义Warning[TCP Retransmission]链路丢包或拥塞需结合 RTT 波动分析Warning[ICMP Destination unreachable]目标端口关闭或防火墙拦截比 telnet 更早暴露服务状态Error[TCP Previous segment not captured]捕获丢失关键包如 SYN导致 TCP 流无法重组需检查缓冲区大小或网卡性能Chat[Duplicate ACK]接收方检测到丢包触发快速重传是网络质量劣化的早期信号实操捕获一段 HTTP 下载流量 → 打开 Expert Info → 点击Warnings标签页 → 查看TCP Retransmission出现次数及对应时间戳 → 定位到具体哪个 TCP 流Stream Index在重传 → 右键该流 → “Follow → TCP Stream” 深入分析。6.3 用 Coloring Rules 实现“视觉化频率预警”让高频 ICMP 自动变红Wireshark 允许为特定流量设置颜色标记这是工程师的“后悔药”——无需事后过滤一眼识别异常View → Coloring Rules → 点击 “” 新建规则名称填High-Freq ICMPFilter 填icmp frame.time_delta 0.1100ms 内连续 ICMP背景色选红色字体色选白色点击 OK → 立即生效此后只要出现短间隔 ICMP如 DoS 攻击特征、设备心跳异常加速相关包会瞬间标红比盯着 IO Graph 曲线更直观。我带学生做实验时最常强调的一句话是Wireshark 不是终点而是你和网络协议栈之间第一道可信赖的翻译官。它不会告诉你“为什么连不上”但它会用字节告诉你“哪里断了”。当你习惯在ping前先看 ARP、在curl后必查 TCP 重传、把 Expert Info 当作每日晨会 checklist计算机网络就从一门考试科目变成了你调试系统的肌肉记忆。希望帮到你。本文还有配套的精品资源点击获取
返回列表