简介
ICMP 是 Internet Control Message Protocol 的简写. 它主要用来调试网络通信环境中存在的问题.
比如,当 IP 数据包总是无法正常的发送到目的地址, 当网关没有足够的 buffer 来转发对应的数据包 等问题.
值得一提的是,它属于网络层,不属于传输层. 也就是说它和 IP 协议处于同一层次,而并不是与 TCP/UDP 处于同一层次.
消息格式
ICMP 协议使用 IP 协议头来传输数据. 具体的数据就是 ICMP 规定的一些数据包,我们接下来一一介绍…
因为 ICMP 格式与 IP 相同,这里我们简单介绍以下各个字段. 详细请参考 协议簇: IPv4 详解
几个需要特别注意的字段,及其值:
- Version: 4
- Type of Service: 0
- Protocol: ICMP = 1
接下来,我们来看看常见的 ICMP 报文实例
Destionation Unreachable Message
各字段的意义及其值:
- Type:3
- Code:
0 = net unreachable
1 = host unreachable
2 = protocol unreachable
3 = port unreachable
4 = fragmentation needed and DF set
5 = source route failed - Checksum: 检查和
- Internet Header + 64 bits of Data Datagram: 该字段存放原始的 ICMP 请求,以便将当前这个 ICMP 报文与请求报文对应起来.
描述
- 当根