IP协议可以将数据从一个网络传送到另外一个网络,实现各种不同网络之间的互联。但是IP协议提供的是无连接的服务,它不能保证数据的可靠到达,也就是说,在传输过程中,可能会出现数据包的丢失、差错,或者由于各IP分组的传输路径不同而不能按原来的顺序到达等。为了提高IP数据包成功交付的机会,在网络层引入了因特网控制报文协议(ICMP,Internet Control Message Protocol)。
ICMP是一种网络层的差错报告机制,它允许路由器或目的主机报告差错情况和提供有关异常情况的报告。可以说ICMP是一个子协议,它的报文是作为IP数据包的数据,加上IP数据包的首部,组成IP数据包发送出去的。
1.ICMP报文
ICMP报文被封装在IP数据包中,作为其的数据部分,具体的格式如图4-13所示。
图4-13 ICMP报文格式及封装
ICMP报文有两大类,即ICMP差错报告报文和ICMP询问报文,每一类有若干种,如表4-5所示。
表4-5 ICMP报文类型
续表
(1)ICMP差错报告报文有五种:①终点不可达,类型3;②源站抑制,类型4;③改变路由(重定向),类型5;④时间超过,类型11;⑤参数问题,类型12。
图4-14 ICMP差错报告报文的数据字段(www.xing528.com)
不应发送ICMP差错报告报文(图4-14)的几种情况:①ICMP差错报告报文出错;②一个分片的数据报片的所有后续数据报片出错;③具有多播地址的数据报出错;④具有特殊地址(如127.0.0.0或0.0.0.0)的数据报出错。
(2)ICMP询问报文有四种:①回送请求和回答报文,类型8和0;②时间戳请求和回答报文,类型13和14;③掩码地址请求和回答报文,类型17和18;④路由器询问和通告报文,类型10和9。
2.ICMP应用举例
ICMP协议可以让路由器或者目的主机,在IP数据报出现差错的时候,通知源主机。下面介绍一个使用ICMP协议的常用应用程序——Ping命令。
Ping(Packet InterNet Groper),是一个应用层的通信协议,是TCP/IP协议的一部分,常用作网络诊断工具。作为一个因特网包探索器,Ping用来测试两个主机之间网络的连通性。
Ping是应用层直接使用网络层ICMP的例子,它没有通过运输层的TCP或UDP。
Ping的工作原理:它使用了ICMP回送请求与回送回答报文。给目标IP地址的主机发送一个ICMP请求回显报文,要求对方返回一个同样大小的数据包,来确定两台网络机器是否连接相通,时延是多少。
如果测试网络的连通性,使用Ping的方法是(Windows操作系统):
平均=28ms是平均的响应时间,这个时间越小,说明你连接这个地址速度越快。
如果想查看本地的TCP/IP协议是否设置好,输入命令:Ping空格127.0.0.1,如果接收和发送的数据都相等,那就是完好的。屏幕显示信息如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。