网络协议之ICMP应用分析
一、什么是ICMP协议
网络本身是不可靠的,在网络传输过程中,可能会发生许多突发事件并导致数据传输失败。位于网络层的IP协议是一个无连接的协议,它不会处理网络层传输中的故障,而位于网络层的ICMP协议却恰好弥补了IP的缺限,它使用IP协议进行信息传递,向数据包中的源端节点提供发生在网络层的错误信息反馈。
ICMP全称Internet Control Message Protocol,中文名为因特网控制报文协议,它的报头长8字节,结构如图1所示。
ICMP协议提供的诊断报文类型如表1所示。
ICMP提供多种类型的消息为源端节点提供网络层的故障信息反馈,它的报文类型可以归纳为以下5个大类:
1、诊断报文(类型8,代码0;类型0,代码0);
2、目的不可达报文(类型3,代码0-15);
3、重定向报文(类型5,代码0-4);
4、超时报文(类型11,代码0-1);
5、信息报文(类型12-18)。
二、分析网络中的ICMP诊断数据包
要对网络中的ICMP报文的类型和代码进行查看,需要对ICMP报文进行解码,解码可借助网络检测分析软件实现。下图(图2)是使用科来网络分析系统5.0在网络中捕获到的ICMP数据包。
从图2中可知,当前ICMP协议返回的类型和代码都是3,这表示192.168.10.1主机向192.168.10.44主机发了一个ICMP报文,此报文通知192.168.10.44主机,192.168.10.44的上一次请求报文失败,失败的原因是目标端口不可达。查看其解码信息,我们发现有两个IP协议的解码,上一个IP解码是这个ICMP诊断数据包的IP报头,其中长度字段的值是56,下一个IP解码是指192.168.10.44请求报文的IP的头,可以看到其长度字段的值是160。
当然,如果网络中存在其他几种情况的ICMP诊断报文数据包,科来网络分析系统5.0也会将其进行捕获并解码,通过解码信息中的类型和代码,便可找出传输的故障。
三、使用ICMP协议的常见操作
通过分析,我们总结出使用ICMP协议的常见操作如下:
1.目的不可达:如果第三层设备不能再向前转发某个IP数据段,它就会使用ICMP来传送一个信息返回给发送端以通告这一情况;
2.缓冲区满:如果第三层设备用于接收输入数据的内存缓冲区满时,它就会使用ICMP向外源端发送该状态信息;
3.跳:每个IP数据报被分配的一个允许被路由转换个数的数值,称为跳;
4.Ping(因特网探测):使用ICMP回应信息在互联网络上检查计算机物理连接的连通;
5.Tracert或Trace-route:Tracert或Trace-route通过使用ICMP的超时机制,从而发现一个数据包在穿越互联网络时所经历的路径。
[ 本帖最后由 老蔡 于 2008-12-11 13:39 编辑 ] |