【协议】ICMP
ICMP是IP协议套件的辅助协议,主要用于网络设备间传递控制消息。例如,当数据包无法到达时,它发送错误报告;或通过ping工具测试连通性。Wireshark可捕获这些包,显示详细字段,帮助分析网络问题。更多详情见RFC 792(https://www.ietf.org/rfc/rfc792.txt)。
ICMP消息格式详解与ASCII表示
- ICMP头最小8字节:Type(8位)、Code(8位)、Checksum(16位)和Rest of Header(32位,可变)。错误类型附加原始数据。以下是通用头的ASCII文本表示:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Message Body |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
关键点
- ICMP协议的核心:ICMP(互联网控制消息协议)是一种网络层协议,用于错误报告和诊断,不传输用户数据,而是封装在IP数据包中,提供如目标不可达或超时等反馈。
- 字段结构:主要包括Type(类型)、Code(代码)、Checksum(校验和)和可变部分(如Identifier和Sequence Number),错误消息中还会封装原始IP头和传输层数据,帮助诊断问题。
- Wireshark示例:在实际抓包中,Echo Request(Type 8)显示请求字段,而Destination Unreachable(Type 3)嵌套IP和TCP/UDP头,用于识别问题包。
- 安全考虑:ICMP实用但易被滥用,如洪水攻击;现代系统有缓解,但需谨慎过滤。
ICMP概述
ICMP是IP协议套件的辅助协议,主要用于网络设备间传递控制消息。例如,当数据包无法到达时,它发送错误报告;或通过ping工具测试连通性。Wireshark可捕获这些包,显示详细字段,帮助分析网络问题。 更多详情见RFC 792(https://www.ietf.org/rfc/rfc792.txt)。
消息结构
ICMP消息嵌入IP数据报(协议字段=1),最小8字节:Type(1字节)、Code(1字节)、Checksum(2字节)和4字节可变部分。错误类型附加原始IP头+传输层数据。
实际Wireshark示例
使用Wireshark过滤“icmp”,捕获ping包。Echo Request显示Type=8,嵌套数据匹配响应;错误包如Type=3包含原始端口,帮助定位故障。
互联网控制消息协议(ICMP)作为TCP/IP协议栈中的网络层协议,主要负责错误报告、诊断查询和网络控制消息的传递,而非用户数据传输。它被封装在IP数据报中,协议号为1,帮助路由器和主机报告问题,如数据包无法交付或超时。根据RFC 792的定义,ICMP是IP的必备组成部分,每个IP实现必须支持它。在IPv6中,演变为ICMPv6(RFC 4443),支持更多功能如邻居发现。 ICMP不保证交付,是无连接的,但通过提供反馈提升网络可靠性。
ICMP的历史与发展
ICMP于1981年由RFC 792定义,用于IPv4环境,解决IP的无连接和不可靠性问题。随着互联网发展,ICMPv6在2006年更新,支持IPv6的扩展头和路径MTU发现。 如今,它仍是网络诊断的核心,尽管在防火墙中常被限制以防滥用如DDoS攻击。
ICMP消息格式详解
ICMP消息结构包括固定头和可变体:
- Type(类型,8位):分类消息,如8(Echo Request)、0(Echo Reply)、3(Destination Unreachable)。
- Code(代码,8位):细化Type,如Type 3下Code 3(端口不可达)。
- Checksum(校验和,16位):验证完整性,使用一的补码求和;Wireshark标记[correct]或[bad]。
- 可变部分:视Type而定,如Echo中包括Identifier(标识符,匹配进程)和Sequence Number(序列号,追踪顺序);错误消息附加原始IP头(20+字节)和传输层数据(至少8字节,包括端口)。
在ICMPv6中,Checksum包括IPv6伪头。 错误消息不针对自身生成,避免循环。
以下是ICMPv4消息类型表格:
| 类型 (Type) | 代码 (Code) 示例 | 描述 | 用途 |
|---|---|---|---|
| 0 | 0 | Echo Reply | 响应ping测试 |
| 3 | 0 (网络不可达), 1 (主机不可达), 3 (端口不可达), 4 (需分片但DF设) | Destination Unreachable | 报告交付失败原因 |
| 5 | 0 (网络重定向), 1 (主机重定向) | Redirect | 建议更好路由 |
| 8 | 0 | Echo Request | 请求回显,用于诊断 |
| 11 | 0 (TTL超时), 1 (重组超时) | Time Exceeded | 报告超时,用于traceroute |
| 12 | 0 (指针指示错误) | Parameter Problem | IP头参数错误 |
| 13 | 0 | Timestamp | 时间同步请求 |
| 14 | 0 | Timestamp Reply | 时间同步响应 |
ICMPv6扩展表格(部分):
| 类型 (Type) | 代码 (Code) 示例 | 描述 | 用途 |
|---|---|---|---|
| 1 | 0 (无路由), 3 (地址不可达), 4 (端口不可达) | Destination Unreachable | IPv6交付失败 |
| 2 | 0 | Packet Too Big | 路径MTU发现 |
| 3 | 0 (跳限超时) | Time Exceeded | 类似IPv4 |
| 4 | 0 (头字段错误) | Parameter Problem | 处理扩展头 |
| 128 | 0 | Echo Request | IPv6 ping |
| 129 | 0 | Echo Reply | 响应 |
这些基于RFC标准。
ICMP工作原理
当设备遇到问题时,生成ICMP消息返回源端。例如,TTL过期发送Time Exceeded。ICMPv6增加速率限制。 在Wireshark中,过滤“icmp”显示包细节。
实际Wireshark抓包讲解
使用Wireshark捕获ping或路由故障包。示例从pcap文件分析。
示例1:Echo Request/Reply(ping包)
从捕获:源10.0.0.12 ping 10.0.0.30。
- IP层:Protocol=1, TTL=128, Source/Dest IP。
- ICMP层:Type=8 (Request), Code=0, Checksum=0x4b07 [correct], Identifier (BE)=1, Sequence Number (BE)=596, Data=32 bytes (abcde…)。
意义:测试连通性,Response Time=1.251 ms。无传输层封装。
Reply类似,Type=0。
| 字段 | 值示例 | 含义 |
|---|---|---|
| Type | 8 | Echo Request |
| Code | 0 | 无子码 |
| Checksum | 0x4b07 | 完整性 |
| Identifier | 1 (BE) | 匹配进程 |
| Sequence Number | 596 (BE) | 顺序追踪 |
| Data | abcde… | 负载 |

示例2:Destination Unreachable(Type 3)
捕获:端口扫描或路由故障,源10.74.192.78到192.168.128.112,Code=4 (Fragmentation needed)。
- ICMP层:Type=3, Code=4, Checksum=0x8a3c [correct], Next-hop MTU=1280。
- 嵌套:原始IP (Src:192.168.128.112, Dst:36.92.190.198) + TCP (Ports:34945→443)。
意义:封装IP+传输层(前8字节,包括端口/序列号)帮助识别问题包,如端口关闭或MTU问题。Wireshark显示嵌套树。
| 字段 | 值示例 | 含义 |
|---|---|---|
| Type | 3 | Destination Unreachable |
| Code | 3 | 端口不可达 |
| Checksum | 0xbda8 | 完整性 |
| 嵌套IP Src/Dst | 8.8.8.8 / 172.16.4.10 | 原始地址 |
| 嵌套TCP Ports | 34945 / 443 | 连接细节 |

应用与工具
ICMP驱动ping(Echo)和traceroute(Time Exceeded)。在安全中,用于扫描,但易遭洪水攻击。扩展包括IPsec支持。
ICMP是网络支柱,通过反馈提升实用性,尽管简单,在现代网络中不可或缺。
关键引用:
更多推荐

所有评论(0)