我们知道,在网际层,我们是不进行错误检查的,在网际层,我们主要进行快速的数据传输,但是,互联网在设计时候,也是要尽可能的提高交付成功的机会:
我们知道,在网际层传输的是IP数据报,IP数据报的协议我们前面说过了,在将地址解析协议ARP的时候,当时我们说IP数据报的数据部分,数据部分就是ICMP的报文。
ICMP报文通过ip报文发送,ICMP报文当做是ip数据包的数据部分,而IP数据包又被放倒了以太网的数据帧中的数据区。
我们知道ip数据报的首部有一个协议类型的字段,这个部分封装的是传输层的协议的类型,当ip数据部分为ICMP报文时,这里的首部协议类型字段也将改为1,表示为ICMP报文。
那么,ICMP到底是什么样的报文,它有什么用处吗?
首先,ICMP报文分为了两类:
(1)差错控制类 (2)询问报文
我们先看看ICMP报文的结构:
ICMP的不同的报文的类型中,首部的结构是确定的。其中校验和部分和IP首部的校验和的计算方法相同,并且这个计算方法贯穿于整个的ICMP报文中。
ICMP报文种类 | 类型的值 | ICMP报文的类型 |
差错报告报文 | 3 | 终点不可达 |
11 | 时间超过 | |
12 | 参数问题 | |
5 | 改变路由 | |
询问报文 | 8或者0 | 回送请求或回答 |
13或14 | 时间戳请求或者回答 |
1、差错控制类报文
ICMP差错控制报文共有四种:
(1)目的站不可达:当路由器无法转发或者交付数据时,使用icmp报文通知数据包的发送者,并且告诉不可达的原因。
(2)超时报文:发送超时报文的两种情况:TTL值为0或者数据报分片重组超时。
(3)参数错误报告:不是以上两种情况的错误时,就会向源主机报告此报文。
(4)改变路由:路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。
2、ICMP询问报文:
(1)回送请求和回答:ICMP回送请求报文是请某台主机或者路由器向一个特定的目的主机发出的询问,收到此报文的主机必须给源主机或者路由器发送一个ICMP回送回答报文
(2)时间戳请求和回答:ICMP时间戳请求报文是请某台主机或者路由器回答当前的日期和时间。