一、简介
- 目的:为了更加有效地转发IP数据报和提高交付成功的机会。
- ICMP主要由两种功能:差错(或异常)报告、网络探询。
- 整个ICMP报文保存在IP数据报的数据部分。也就是说,这是一个网络层的协议。
- 类型是指,指定ICMP是哪种类型的。(ICMP差错报文、ICMP询问报文)
- 代码是指,进一步区分同一类型的不同情况
- 检验和,用于检验整个ICMP报文
二、ICMP差错报文
1. ICMP差错报文分类
1.1 终点不可达
- 当路由器或主机无法交付数据报时就向源点发送终点不可达的报文。
1.2 源地抑制
- 当路由器或主机由于拥塞而丢弃数据报时,就会向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。(很少用)
1.3 时间超过
- 当路由器收到TTL=0的数据报时,除丢弃该数据报之外,还应该向源点发送时间超过报文。
- 当接收端在预先时间内没办法收集数据报的所有报片时,就会将所有已经收集到的报文丢弃,并向源点返回时间超过报文。
1.4 参数问题
- 当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
1.5 改变路由(重定向)
- 路由器把改变路由报文发送给主机,告诉主机,下一个更好的路由选择。
2. ICMP差错报文数据字段
- 前8个字节,就是对应第一大节的数据报的第一行
- 然后将收到的IP数据报的首部以及前八个字节截取下来,放到差错报文里面。
3. 不应该发送ICMP差错报文的情况
三、ICMP询问报文
1. ICMP询问报文分类
1.1 回送请求和回答报文
- 主机或路由器向特定的目的主机发出询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
- 目的是,测试目的是否可达以及了解其相关状态。(也就是看PING不PING得通)
1.2 时间戳请求和回答报文
- 请某个主机或路由器回答当前的日期和时间。
- 目的是,进行时钟同步和测量时间。
三、ICMP的应用
1. PING
2. Traceroute
- 也就是看到达源点需要多长时间。