当前位置: 首页 > news >正文

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

1. ICMP协议基础与实验环境搭建

ICMP(Internet 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 wireshark

2. 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请求包(type=8) sudo tcpdump -i eth0 'icmp[0] == 8' # 抓取ICMP响应包(type=0) sudo tcpdump -i eth0 'icmp[0] == 0' # 组合过滤:抓取来自192.168.1.1的TTL超时报文(type=11) sudo tcpdump -i eth0 'icmp[0] == 11 and src 192.168.1.1'

在实际操作中,我习惯将抓包结果保存为pcap文件,方便后续分析:

# 后台抓包并保存(Ctrl+C停止) sudo tcpdump -i eth0 -w icmp.pcap icmp & ping -c 5 baidu.com

3. Wireshark深度解析ICMP报文

将tcpdump抓取的pcap文件导入Wireshark后,我们可以进行更细致的分析。在过滤栏输入icmp,就能看到所有ICMP报文。

ICMP报文结构详解

  • Type(1字节):报文类型(如8=请求,0=响应,11=TTL超时)
  • Code(1字节):子类型(如网络不可达、主机不可达等)
  • Checksum(2字节):校验和
  • Identifier(2字节):进程标识符(用于匹配请求/响应)
  • Sequence(2字节):序列号(用于排序)

典型ICMP报文分析

  1. Echo Request/Reply(Ping包)

    • 请求包:Type=8, Code=0
    • 响应包:Type=0, Code=0
    • 在Wireshark中,可以右键Ping包 → "Follow → ICMP Stream"查看完整对话
  2. TTL Exceeded(路由追踪)

    • Type=11, Code=0
    • 包含原始IP头+8字节数据(RFC规定)
    • 通过观察TTL递增的超时报文,可以绘制网络路径
  3. Destination Unreachable

    • Type=3, Code有多种情况:
      • Code=0:网络不可达
      • Code=1:主机不可达
      • Code=3:端口不可达(常用于UDP)

Wireshark实用技巧

  • 使用icmp.type==8过滤所有Ping请求
  • 右键报文 → "Decode As..."可以强制解析特定协议
  • 统计 → 协议分级 查看ICMP流量占比
  • 分析 → 专家信息 查看异常报文

4. 结合ping和traceroute的协议分析

Ping实验分析

  1. 启动抓包:sudo tcpdump -i eth0 -w ping.pcap icmp
  2. 执行Ping:ping -c 3 example.com
  3. 分析抓包结果:
    • 观察请求/响应的Identifier和Sequence匹配
    • 计算RTT(往返时间):响应时间 - 请求时间
    • 检查TTL变化(响应包的TTL通常为64/128/255)

Traceroute原理剖析: traceroute利用了IP协议的TTL机制:

  1. 首先发送TTL=1的探测包(ICMP/UDP)
  2. 第一跳路由器将TTL减为0,返回ICMP超时报文
  3. 逐步增加TTL,直到到达目标主机
  4. 目标主机返回ICMP端口不可达(UDP方式)或Echo Reply(ICMP方式)

实验步骤

# Linux下使用ICMP方式traceroute sudo tcpdump -i eth0 -w trace.pcap 'icmp[0]==11 or icmp[0]==0' & traceroute -I baidu.com

在Wireshark中分析时,重点关注:

  1. 每个TTL层级对应的路由器IP
  2. 超时报文中的原始IP头信息
  3. 最终目标的响应类型

5. 常见问题排查与协议细节

ICMP报文封装细节

  • ICMP作为IP的上层协议,协议号为1
  • 整个ICMP报文作为IP数据部分传输
  • 头部校验和计算范围是整个ICMP报文

典型问题排查案例

  1. Ping不通但网络正常

    • 检查防火墙规则:sudo iptables -L
    • 验证ICMP是否被过滤:ping -c 1 127.0.0.1
    • 使用tcpdump确认请求是否发出
  2. Traceroute卡在某一跳

    • 可能是防火墙丢弃了ICMP超时报文
    • 尝试改用UDP方式的traceroute
    • 使用-n参数避免DNS解析超时
  3. ICMP重定向问题

    • 类型5报文指示更优路由
    • 现代网络通常禁用ICMP重定向
    • 可通过sysctl -w net.ipv4.conf.all.accept_redirects=0关闭

协议交互时序

  1. 首次Ping时通常先有ARP请求(局域网)
  2. 然后才是ICMP请求/响应
  3. Traceroute会看到TTL从1开始递增
  4. 网络拥塞时可能触发源抑制报文(Type=4)

6. 高级分析与实际应用

网络延迟分析

  • 使用Ping的时序信息计算抖动(Jitter)
  • 通过TTL变化推测网络设备类型
  • 分析DUP!标记(重复报文)诊断网络问题

安全相关应用

  • ICMP隧道检测:异常大的Ping包
  • 网络扫描识别:密集的ICMP请求
  • 防火墙策略验证:特定类型ICMP是否放行

自定义ICMP实验: 通过Python的scapy库可以构造自定义ICMP包:

from scapy.all import * # 构造ICMP请求包 pkt = IP(dst="8.8.8.8")/ICMP(type=8, code=0)/"Hello" send(pkt)

企业网络中的ICMP

  • 监控系统使用ICMP进行设备存活检测
  • 网络设备通过ICMP报告错误状态
  • 负载均衡器利用ICMP进行健康检查

在实际网络运维中,ICMP协议的分析能力可以帮助我们:

  1. 快速定位网络断点
  2. 诊断路由异常
  3. 评估网络质量
  4. 发现潜在安全威胁
http://www.jsqmd.com/news/1196719/

相关文章:

  • 亨得利官方服务项目及价格查询|地址和全部热线权威信息公示(2026年7月更新) - 亨得利官方
  • iSulad-img:华为iSulad容器引擎的镜像管理神器完全指南
  • UE5.7 PCG从入门到精通系列课程【第三课:程序化生成森林】
  • Java 23 种设计模式:从踩坑到精通 | 番外:组合 vs 解释器 —— 结构树 vs 计算树
  • 2026年7月最新烟台百达翡丽官方售后服务热线与网点地址查询 - 百达翡丽官方售后中心
  • C++模块解耦:变量变更方案对比与实战选型指南
  • 对外接口层
  • 长沙天心区测、除甲醛|维小达|CMA甲醛检测、新房除醛、工装除醛、板材源头除醛、全屋空气净化、老旧翻新祛异味、居家商用一站式空气养护服务 - 一点传媒
  • Mac上通过Homebrew与pip3一站式部署Jupyter生态
  • DeerFlow 深度解析:如何用多智能体架构精准答题
  • 2023年全国电赛H题信号分离装置:从加法器到DDS的硬件实现与频谱分析实战
  • 多维度评估 + 动态人才画像,精准定位高潜人才补齐组织能力短板
  • 《全域数学·工程应用大典》113–200讲完整总目录
  • 2026风扇及散热配件外贸独立站搭建公司怎么选?八项结构化评估指南,含零代码SAAS,源码定制交付
  • 2026年银川合同律师推荐怎么选?看这五点关键不踩雷 - 本地品牌推荐
  • 飞行动力学 - 纵向静稳定性剖析:从部件贡献到设计权衡
  • 2026宜春大冰块厂家回头客榜单推荐:哪家更靠谱? - 热点咨讯
  • 攻克Android 7+ HTTPS抓包壁垒:夜神模拟器Root权限与Charles证书系统级部署实战
  • 咸安黄金回收实测记录,正规老店全城免费上门 - 华金汇黄金回收
  • 电机驱动实战-基于STM32的直流有刷电机H桥控制与保护电路设计
  • 长沙芙蓉区测、除甲醛|维小达|CMA甲醛检测、新房除醛、工装除醛、板材源头除醛、全屋空气净化、老旧翻新祛异味、居家商用一站式空气养护服务 - 一点传媒
  • 2026 团风黄金回收星级深度测评|深耕 30 年本土合规老店,全县 24 小时免费上门无任何隐形扣费 - 华金汇黄金回收
  • 劳力士中国官方售后服务中心|地址与联系电话权威信息声明(2026年7月最新) - 劳力士服务中心
  • Obsidian五种同步策略详解:怎么根据设备角色设置仅发送、仅接收和双向同步
  • 2026 年选 SEO公司前必读:7 个“一票否决”红线,踩中一条直接拉黑+避坑指南 - GEO优化
  • 百达翡丽中国官方售后服务中心|服务电话及全部地址权威信息通告(2026年7月更新) - 百达翡丽官方售后中心
  • DSP C2000 F28002x 数字电源实战:基于SysConfig的ePWM与CMPSS联动保护配置
  • 2026 年当下,优秀的G657A1光纤源头厂家哪家权威,揭秘:为什么你的网络升级没用? - 领域鉴赏官
  • 鸿蒙 ArkTS 实战:Camping Spot Favorites 从出行记录到状态反馈完整解析
  • 篆刻印章文玩石料线上怎么卖?小程序商城高粘性运营思路,含零代码SAAS、AI编程、源码定制交付