实验12 网际控制报文协议ICMP的应用
一、实验目的
验证ping命令和tracert命令的工作原理。
二、实验环境
·Cisco Packet Tracer模拟器
三、实验过程
1.构建网络拓扑并进行信息标注,将所需要配置的IP地址写在对应的主机或者路由器旁边,如图1所示。
图1 网络拓扑
2.配置主机H1,H2的IP地址、路由器的IP地址、子网掩码、静态路由,如图2,3,4所示。
图2 主机IP地址以及子网掩码配置
图3 路由器端口IP地址配置
图4 路由器静态路由配置
3.观察主机H1-H2是否能正常通信,判断拓扑是否建立成功,配置正确,让主机H1使用ping 192.168.1.1与主机H2通信,结果如图5所示。经过两次超时,是因为经过了两个路由器,有两次ARP的影响。
图5 H1与H2之间的通信
4.跟踪数据报从H1到达H2经过了哪些路由器,通过命令tracter 192.168.1.1来查看,结果如图6所示。图中给出了经过各个路由器的相关端口。
图6 数据包到达H2经过的路径
5.切换到仿真模式下H2 pingH1,如图7所示,观察ping命令是如何通过ICMP实现的,并且过滤协议,只保留ICMP协议,主机H2的封装细节如图8所示,PING进程创建了一个ICMP“回送请求”报文并将其传送给下层进程。
图7 让主机H2ping主机H1
图8 在主机H2上的PDU信息
6.点击捕获前进,当数据包到达主机H1时,查看封装的PDU细节,如图
9所示。此时ICMP收到的数据包是一个ICMP数据包,此时ICMP进程将会对其处理,ICMP进程收到一个“回送请求”报文,
图9 主机H1上的PDU信息
7.点击捕获前进,当主机H2收到响应报文之后,第一次ICMP请求就结束了,如图10所示。
图10 第一次ICMP请求报文结束
8.仿真模式下H1tracertH2,如图11所示,观察tracert命令是如何通过ICMP实现的,再查看主机H1上的PDU信息,如图12所示。Trace route进程启动下一个追踪,Trace route进程创建一个ICMP“回送请求”报文并将其发送给下一层进程。
图11 仿真模式下H1tracertH2
图12 查看主机H1的PDU信息
9.再次查看主机H1上的出站PDU详情,发现TTL字段被设置成为了1,如图13所示。这说明当转发到下一个路由器的时候,就会将TTL减1,也就是置为0,那么此时路由器就会丢弃这个ICMP报文,如图14所示,并给源主机H1发送一个ICMP差错报告(类型是时间超过),此时查看路由器上的PDU信息,如图15所示。设备发送一个ICMP“时间超过”报文。
图13 出站PDU中的TTL被设置成1
图14 路由器丢弃这个ICMP报文
图15 路由器上的PDU信息
10.主机H1获取路径上的第一个路由器需要发送三个ICMP报文,并且也要收到三个ICMP响应报文才算找到第一个路由器,如下图所示,第一个路由器的IP地址为192.168.0.254,如图16所示。
图16 主机H1找到第一个路由器
11.同理,主机H1要找到第二个路由器,就需要将TTL的值设置为2,然后就去找找到的话,也是需要进行三次ICMP报文的传送以及收到三个ICMP报文的响应,才算找到第二个路由器,如图17所示。同理找到第三个路由器,主机H1将TTL字段设置为3,找到第三个路由器如图18所示。
图17 主机H1找到第二个路由器
图18 主机H1找到第三个路由器
四、实验小结
-
Ping命令和tracert命令都是基于网际控制报文协议(ICMP)实现的。Ping命令用于测试主机之间、主机与路由器之间以及路由器与路由器之间的连通性。而tracert命令则用于探测从源主机到目的主机之间经过的路由器路径。
-
Ping命令利用ICMP中的询问报文机制,源主机发送ICMP请求报文,目的主机则返回相应的应答报文,以确认连通性。
-
使用tracert命令时,发出的数据包的生存时间(TTL)初始值为1。当数据包经过第一个路由器时,TTL值减1,变为0,此时数据包会被丢弃,并向源主机发送一个ICMP差错报告(“时间超过”报文),从而告知源主机该数据包未能成功到达目的地。
-
tracert命令不仅依赖于询问报文,还利用差错报文来获取路径信息,从而逐步确定源主机到目的主机之间的路由路径。