首页 理论教育 计算机网络中ICMP的实际应用

计算机网络中ICMP的实际应用

时间:2023-11-09 理论教育 版权反馈
【摘要】:ICMP的一个重要应用就是分组网间探测,用来测试两台主机之间的连通性。PING是应用层直接使用网络层ICMP的一个例子。主机一连发出4个ICMP回送请求报文。如果邮件服务器mail.163.com正常工作而且响应这个ICMP回送请求报文,那么它就发回ICMP回送回答报文。由于往返的ICMP报文上都有时间戳,因此很容易得出往返时间。R2就丢弃P2,并向源主机发送一个ICMP超过时间差错报告报文。图4-32用tracert命令获得目的主机的路由信息

计算机网络中ICMP的实际应用

ICMP的一个重要应用就是分组网间探测(Packet InterNet Groper,PING),用来测试两台主机之间的连通性。PING使用ICMP回送请求与回送回答报文。PING是应用层直接使用网络层ICMP的一个例子。它没有通过运输层的TCP或UDP。

Windows操作系统的用户可在接入互联网后转入MS DOS(单选择“开始”→“运行”选项,再输入“cmd”)。看见屏幕上的提示符后,就输入“Ping Hostname”(这里的Host⁃name是要测试连通性的主机名或它的IP地址),按Enter键后就可看到结果。

图4-31所示为从南京的一台主机到新浪网的邮件服务器mail.163.com的连通性测试结果。主机一连发出4个ICMP回送请求报文。如果邮件服务器mail.163.com正常工作而且响应这个ICMP回送请求报文(有的主机为了防止恶意攻击就不理睬外界发送过来的这种报文),那么它就发回ICMP回送回答报文。由于往返的ICMP报文上都有时间戳,因此很容易得出往返时间。最后显示出的是统计结果:发送到哪个机器(IP地址),发送的、收到的和丢失的分组数(但不给出分组丢失的原因)以及往返时间的最小值、最大值和平均值。

图4-31 用Ping测试主机的连通性

另一个非常有用的应用是Traceroute(这是Unix操作系统中的名字),它的作用是跟踪一个分组从源点到终点的路径。在Windows操作系统中这个命令是tracert。下面简单介绍这个命令的工作原理。(www.xing528.com)

tracert命令从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报。第一个数据报P1的生存时间TTL设置为1。当P1到达路径上的第一个路由器R1时,路由器R1先收下它,接着把TTL值减1。由于TTL等于0,R1就把P1丢弃了,并向源主机发送一个ICMP时间超过差错报告报文。源主机接着发送第二个数据报P2,并把TTL设置为2。P2先到达路由器R1,R1收下后把TTL值减1再转发给路由器R2。R2收到P2时TTL为1,但减1后TTL值为0。R2就丢弃P2,并向源主机发送一个ICMP超过时间差错报告报文。这样一直继续下去。当最后个数据报刚刚到达目的主机时,数据报的TTL值是1。主机不转发数据报,也不把TTL值减1,但因IP数据报中封装的是无法交付的运输层的UDP用户数据报,因此目的主机要向源主机发送ICMP终点不可达差错报告报文。

这样,源主机达到了自己的目的,因为这些路由器和最后目的主机发来的ICMP报文正好给出了源主机想知道的路由信息——到达目的主机所经过的路由器的IP地址,以及到达其中的每一个路由器的往返时间。图4-32所示是从南京的一台主机向网易邮件服务器mail.163.com发出的tracert命令后所获得的结果。其中每行有3个时间出现,是因为对应于每一个TTL值,源主机要发送3次同样的IP数据报。

还应注意到,从原则上讲,IP数据报经过的路由器越多,所花费的时间也会越多。但从图4-32可看出,有时正好相反。这是因为互联网的拥塞程度随时都在变化,且很难预料到。因此,完全有这样的可能:经过更多的路由器反而花费更少的时间。

图4-32 用tracert命令获得目的主机的路由信息

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈