网际控制报文协议ICMP
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP是因特网的标准协议。但ICMP不是高层协议,而是IP层的协议。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。
ICMP数据报格式:
ICMP报文的种类
ICMP报文的种类分为:ICMP差错报告报文和ICMP询问报文
几种常用的ICMP报文类型:
1. ICMP差错报告报文
所有的ICMP差错报文的数据字段都具有同样的格式,把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段。再加上相应的ICMP差错报文的前8个字节,就构成了ICMP差错报告报文。
下面是不应发送ICMP差错报文的几种情况:
- 对ICMP差错报文不在发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有多播地址的数据报都不发送ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
2. ICMP询问报文
常用的ICMP询问报文:
1. 回送请求和回答
ICMP回送请求报文是由主机或路由器想一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。
2. 时间戳请求回答 ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。时间戳请求与回答可用来进行时钟同步和测量时间。
ICMP的应用举例
1.分组网间探测PING(Packet InterNet Groper)**用来测试两个主机之间的连通性**。PING使用了ICMP回送请求与回送报文回答报文。PING是应用层直接使用网络层ICMP的一个例子,它没有通过运输层的TCP或UDP。
2.traceroute(UNIX中的名字)在Windows中的命令是tracert。它用来跟踪一个分组源点到终点的路径。