网际控制报文协议ICMP

ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP是因特网的标准协议。但ICMP不是高层协议,而是IP层的协议。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。

ICMP数据报格式:

ICMP数据报格式

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。

用PING测试连通性

2.traceroute(UNIX中的名字)在Windows中的命令是tracert。它用来跟踪一个分组源点到终点的路径

获得到目的主机的路由信息