计算机网络 实验2:基于tcpdump与Wireshark的ICMP协议深度解析

发布时间:2026/9/28 13:46:12

计算机网络 实验2:基于tcpdump与Wireshark的ICMP协议深度解析
1. ICMP协议基础与实验环境搭建ICMPInternet Control Message Protocol是TCP/IP协议族中不可或缺的组成部分它就像网络世界的信使专门负责传递各种控制消息。当你在命令行敲下ping baidu.com时屏幕上跳动的响应时间就是ICMP协议的功劳。这个看似简单的协议实际上承载着网络连通性测试、路由跟踪、错误报告等重要功能。要深入理解ICMP协议我们需要搭建一个合适的实验环境。我推荐使用以下组合抓包工具tcpdump命令行抓包 Wireshark图形化分析测试命令ping基本连通性测试 traceroute路由路径追踪操作系统Linux推荐Ubuntu/CentOS或Windows需安装Wireshark在Linux环境下安装这些工具非常简单# Ubuntu/Debian sudo apt install tcpdump wireshark traceroute # CentOS/RHEL sudo yum install tcpdump wireshark traceroute安装完成后建议将当前用户加入wireshark组避免每次都需要sudo权限sudo usermod -aG wireshark $USER newgrp wireshark2. tcpdump抓包实战技巧tcpdump是网络分析师的瑞士军刀它的强大之处在于灵活的过滤表达式。在开始抓取ICMP包之前我们先掌握几个核心参数-i指定网卡接口如eth0、wlan0-w将抓包结果保存到文件-v增加输出详细程度-c限制抓包数量-n不解析主机名提升性能基础抓包命令# 抓取所有ICMP包 sudo tcpdump -i eth0 icmp # 抓取特定主机的ICMP包如与8.8.8.8的通信 sudo tcpdump -i eth0 icmp and host 8.8.8.8高级过滤技巧# 抓取ICMP请求包type8 sudo tcpdump -i eth0 icmp[0] 8 # 抓取ICMP响应包type0 sudo tcpdump -i eth0 icmp[0] 0 # 组合过滤抓取来自192.168.1.1的TTL超时报文type11 sudo tcpdump -i eth0 icmp[0] 11 and src 192.168.1.1在实际操作中我习惯将抓包结果保存为pcap文件方便后续分析# 后台抓包并保存CtrlC停止 sudo tcpdump -i eth0 -w icmp.pcap icmp ping -c 5 baidu.com3. Wireshark深度解析ICMP报文将tcpdump抓取的pcap文件导入Wireshark后我们可以进行更细致的分析。在过滤栏输入icmp就能看到所有ICMP报文。ICMP报文结构详解Type1字节报文类型如8请求0响应11TTL超时Code1字节子类型如网络不可达、主机不可达等Checksum2字节校验和Identifier2字节进程标识符用于匹配请求/响应Sequence2字节序列号用于排序典型ICMP报文分析Echo Request/ReplyPing包请求包Type8, Code0响应包Type0, Code0在Wireshark中可以右键Ping包 → Follow → ICMP Stream查看完整对话TTL Exceeded路由追踪Type11, Code0包含原始IP头8字节数据RFC规定通过观察TTL递增的超时报文可以绘制网络路径Destination UnreachableType3, Code有多种情况Code0网络不可达Code1主机不可达Code3端口不可达常用于UDPWireshark实用技巧使用icmp.type8过滤所有Ping请求右键报文 → Decode As...可以强制解析特定协议统计 → 协议分级 查看ICMP流量占比分析 → 专家信息 查看异常报文4. 结合ping和traceroute的协议分析Ping实验分析启动抓包sudo tcpdump -i eth0 -w ping.pcap icmp执行Pingping -c 3 example.com分析抓包结果观察请求/响应的Identifier和Sequence匹配计算RTT往返时间响应时间 - 请求时间检查TTL变化响应包的TTL通常为64/128/255Traceroute原理剖析 traceroute利用了IP协议的TTL机制首先发送TTL1的探测包ICMP/UDP第一跳路由器将TTL减为0返回ICMP超时报文逐步增加TTL直到到达目标主机目标主机返回ICMP端口不可达UDP方式或Echo ReplyICMP方式实验步骤# Linux下使用ICMP方式traceroute sudo tcpdump -i eth0 -w trace.pcap icmp[0]11 or icmp[0]0 traceroute -I baidu.com在Wireshark中分析时重点关注每个TTL层级对应的路由器IP超时报文中的原始IP头信息最终目标的响应类型5. 常见问题排查与协议细节ICMP报文封装细节ICMP作为IP的上层协议协议号为1整个ICMP报文作为IP数据部分传输头部校验和计算范围是整个ICMP报文典型问题排查案例Ping不通但网络正常检查防火墙规则sudo iptables -L验证ICMP是否被过滤ping -c 1 127.0.0.1使用tcpdump确认请求是否发出Traceroute卡在某一跳可能是防火墙丢弃了ICMP超时报文尝试改用UDP方式的traceroute使用-n参数避免DNS解析超时ICMP重定向问题类型5报文指示更优路由现代网络通常禁用ICMP重定向可通过sysctl -w net.ipv4.conf.all.accept_redirects0关闭协议交互时序首次Ping时通常先有ARP请求局域网然后才是ICMP请求/响应Traceroute会看到TTL从1开始递增网络拥塞时可能触发源抑制报文Type46. 高级分析与实际应用网络延迟分析使用Ping的时序信息计算抖动Jitter通过TTL变化推测网络设备类型分析DUP!标记重复报文诊断网络问题安全相关应用ICMP隧道检测异常大的Ping包网络扫描识别密集的ICMP请求防火墙策略验证特定类型ICMP是否放行自定义ICMP实验 通过Python的scapy库可以构造自定义ICMP包from scapy.all import * # 构造ICMP请求包 pkt IP(dst8.8.8.8)/ICMP(type8, code0)/Hello send(pkt)企业网络中的ICMP监控系统使用ICMP进行设备存活检测网络设备通过ICMP报告错误状态负载均衡器利用ICMP进行健康检查在实际网络运维中ICMP协议的分析能力可以帮助我们快速定位网络断点诊断路由异常评估网络质量发现潜在安全威胁

相关新闻

Obsidian五种同步策略详解:怎么根据设备角色设置仅发送、仅接收和双向同步

Obsidian五种同步策略详解:怎么根据设备角色设置仅发送、仅接收和双向同步

2026/9/27 9:53:12

Obsidian 多端同步时,很多用户会遇到一个共性问题:所有设备都在双向同步,每次打开都要等同步完成,手机上的误操作也可能影响主库。Nutstore Sync 同步插件已上线的同步策略功能,就是为解决这个问题设计的。它让你可以给…

《全域数学·工程应用大典》113–200讲完整总目录

《全域数学·工程应用大典》113–200讲完整总目录

2026/9/28 13:45:33

作者: 乖乖数学《全域数学工程应用大典》113–200讲完整总目录 全书总序: 93–100讲低维基础工程;101–200讲《全域统一场高阶拓展工程篇》 前置已有内容回顾: 1–100讲:三极本源数理、C60超导实验、真空能、反重力原型…

基于脉冲计数与自动量程切换的高精度数字电容表设计

基于脉冲计数与自动量程切换的高精度数字电容表设计

2026/8/31 0:15:49

1. 为什么你需要一台高精度数字电容表 如果你经常和电子电路打交道,一定会遇到需要测量电容的情况。普通数字万用表的电容档虽然方便,但测量范围通常局限在1pF到20μF之间,精度也往往差强人意。我在维修一块老式音响功放板时就深有体会——当…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/28 4:08:17

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/27 1:30:29

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/28 2:15:29

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/28 3:14:54

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/28 3:58:00

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/28 3:47:14

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/26 14:29:04

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/28 5:05:21

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/26 23:35:16

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…