目录
1 ICMP的作用与特点
ICMP协议主要用来检测网络通信故障和实现链路追踪,最典型的应用就是PING和tracerooute。
1.1 ICMP的主要特点
- ICMP本身是网络层的一个协议,但其报文不是直接交给数据链路层,而是封装成IP分组后再传送给数据链路层。
- 从协议体系上看,ICMP要解决IP可能出现的不可靠问题,它不能独立于IP而单独粗壮乃。属于IP的组成部分之一。
- ICMP的设计初衷是发送IP执行过程中的错误报告,主要是路由器向源主机报告传输出错的原因。差错处理需要由高层协议来完成。
1.2 ICMP报文结构
- 在IP分组头中,协议字段值为1,表示IP分组的数据部分是ICMP报文。
- ICMP报文前4B的格式统一:第一个字段(1B)是类型值,第二个字段(1B)是代码,第三个字段(2B)是校验和。第四个字段(4B)的内容与类型值相关。在这4个字段之后是ICMP的数据部分。
- ICMP报文分为:差错报告报文与询问报文。 不同的差错报告报文对应不同的类型值,例:目的不可达的类型值为3.询问报文一方的请求报文和另一方的应答报文,这类报文的类型值是两个,例:回送请求报文的类型值为8,回送应答报文的类型值为。
- IP分组仅对分组头进行校验,而不包括分组的数据部分,而ICMP报文正是封装在IP分组的数据部分中的。为保证ICMP报文传输的正确性,在ICMP报头中设置了校验和字段。
以下3种情况不产生ICMP差错报告报文:
- 对于分片的的分组,如果不是第一个出错,则不产生ICMP差错报文。
- 多播分组出错,不产生ICMP差错报文。
- 具有特殊地址(127.0.0.0或0.0.0.0)的分组出错,不产生ICMP差错报文。
2 ICMP 报文类型
路由器或主机根据IP分组头的协议字度值为1来判断该分组的数据部分封装的是ICMP报文。
2. ICMP差错报告报文
ICMP差错报告报文主要有5类:目的不可达、源抑制、超时、参数问题与重定向。