Ping/Tracert
Ping
Ping的工作过程
在Ping过程中,发起端会发送ICMP(Internet Control Message Protocol) Echo Request报文到指定的某个地址,然后等待的应答。目的端接收到ICMP Echo Request后,将返回ICMP Echo Reply报文给发起端。若在超时时间之内ICMP Echo Reply报文能够到达发起端,说明目的端可达。否则,说明目的端不可达,并在发起端显示超时。
Ping命令是把ICMP报文中的标识符置为发送该ICMP报文的进程的ID号,这样即使在同一台主机上同时运行了多个Ping程序,可以识别出返回的信息。
Ping命令每发送一个ICMP Echo Request报文,报文序号就加1(从1开始增加),在不同的Ping过程中,发送ICMP Echo Request的数量也有所不同,默认情况发送5个,如果对端可达,则在对端会相应回应5个和请求端同样序号的ICMP Echo Reply报文。也可以通过命令行参数设置发送ICMP Echo Request报文的个数。报文在转发过程中,如果TTL字段的值减为0,报文到达的路由器就会向发起端发送ICMP差错报文(TTL超时报文),表明远程设备不可达。
Ping检测Trunk成员口
Ping除了可对物理接口进行检测外,也可对逻辑接口三层Trunk进行检测。
Trunk是由多个物理接口捆绑在一起所组成的一个逻辑接口,每一个成员口的传输路径都不一样,其承载业务的相应时延、抖动和丢包率等也不尽相同。因此,当一个Trunk承载的业务质量大幅下降的时候,无法准确判断是Trunk中的哪一个成员口出了问题。通过Ping检测Trunk成员口,实现对某一实际物理链路的检测,方便用户精确定位。其具体实现原理如下:
若要实现对某一个指定的Trunk成员口端到端的链路状态进行检测,需要ICMP Echo Request报文和ICMP Echo Reply报文走同一条成员口链路,即目的端所返回的ICMP Echo Reply报文通过ICMP Echo Request报文的入接口发送。
Tracert
Tracert的工作过程
源端首先发送3个TTL字段的值都为1的UDP数据报给远端设备,第一个报文默认使用33434的端口号作为目标设备的接受报文端口,后面报文依次加1。TTL为1的数据报到达某个路由器以后随即超时,路由器响应源设备一个ICMP的超时报文,之后源端再发送3个UDP数据报,这次更改TTL值为2,即经过2个路由器以后,响应源端ICMP超时报文,依次类推,直到这些UDP报文到达了目标设备。
目标设备接收到报文后,由于报文的目的端口是一个在目标设备没有应用的端口,目标设备就会响应ICMP port unreachable信息给源端,表示目标端口不可达,同时说明Tracert执行完毕。从而可以从源端显示的结果中,看到达到目标设备所经过的路径。
Tracert发送数据报的TTL值最大可以到30,每一次发送如果在指定的时间内没有回应报文,在发送端就会显示超时,如果发送30跳的值后,仍然显示为超时,表明无法达到目标设备,测试失败。