首页 理论教育ICMP报文格式及种类|计算机网络技术

ICMP报文格式及种类|计算机网络技术

【摘要】:ICMP 报文格式及数据封装方式如图6.11所示。图6.11ICMP 报文格式ICMP 报文首部的前4 个字节各部分的含义如下:类型(8 位)指出了报文的主要类型。ICMP 报文主要有差错报告报文和询问报文两种类型,表6.5 为ICMP 报文主要类型的类型值与所属类型的对应关系。表6.5ICMP 报文主要类型的类型值与类型对应关系代码(8 位)提供报文的某些信息,以便进一步区分某种报文类型的几种不同情况。

ICMP 报文由8 个字节的首部和可变长的数据两部分组成。虽然对每种类型的报文,报文首部的后4 个字节不同,但前4 个字节都是相同的。ICMP 报文格式及数据封装方式如图6.11所示。

图6.11 ICMP 报文格式

ICMP 报文首部的前4 个字节各部分的含义如下:

(1)类型(8 位)

指出了报文的主要类型。ICMP 报文主要有差错报告报文和询问报文两种类型,表6.5 为ICMP 报文主要类型的类型值与所属类型的对应关系。

表6.5 ICMP 报文主要类型的类型值与类型对应关系

(2)代码(8 位)

提供报文的某些信息,以便进一步区分某种报文类型的几种不同情况。

(3)检验和(16 位)(www.chuimin.cn)

提供整个ICMP 报文的检验和,检验和算法与IP 数据报首部检验和计算相同。

ICMP 报文首部的后4 个字节内容与ICMP 的类型有关,最后面是数据字段。

ICMP 协议中共定义了13 种报文(如表6.5 所述),主要使用情况为:

①目的站不可达。当路由器无法转发或传送IP 数据报时,就会向源结点发回该报文。将数据送达目的结点通常涉及网络、路由、主机、协议和端口等问题,因此,目的站不可达包括网络不可达、目的主机不可达、协议不可达、端口不可达、源路由失败、目的网络不可知和目的主机不可知等情况。

②源点抑制。当数据报到达太快,以至于主机或路由器无法处理时,就会发出源点抑制报文,请求源主机放慢发送数据报的速率。它提供了一种拥塞数据控制机制。

③改变路由(重定向)。互联网路由表通常在很长时间是不会发生变化的,但当路由器检测到一台主机使用了非优化路由时,就会向其发送一个重定向报文,使主机下次发送数据报时选择更好的路由。

④回送应答/回送请求。此类报文提供了一种测试两个实体之间是否能够通信的手段。

⑤路由器通告/路由器询问。此类报文主要用来使主机获知本地网络上路由器的IP 地址以及路由器是否正常工作。主机可将路由器询问报文进行广播或多播,接收到询问报文的一个或多个路由器则使用路由器通告报文告知其路由选择信息。即使没有主机询问,路由器也可以周期性地发送路由器通告报文,表示自己和其他路由器的存在情况。

需要指出的是,ICMP 的差错报告采用路由器—源主机的单向数据传输模式,路由器发现数据报传送错误时,只向源主机报告差错原因。而ICMP 的询问报文主要目的是实现对网络故障的诊断和网络控制,在设计时采取的是双向数据传输模式。例如,在ICMP 询问报文中,一个结点发送出信息请求,然后由目的结点用特定的格式进行信息的应答,这种请求—应答的方式即为双向数据传输。