带Ping的玩具Traceroute

2022-02-20 17:38:24

$ttl在{1..30}中;以ping-4-C1-t$ttl为例。com&&;打破完成|来自| nl-s和#39的grep-i' -来自router1 lon的w 2 1。利诺德。com(212.111.33.229)icmp_seq=1生存时间从if-0-1-0-0超过2。gw1。lon1。gb。利诺德。com(109.74.207.10)icmp_seq=1生存时间从be5787超过3。rcr51。lon10。地图集科根科。com(204.68.252.58)icmp_seq=1生存时间从be2589超过4。ccr41。lon13。地图集科根科。com(154.54.59.37)icmp_seq=1生存时间从be2099超过5。ccr31。bos01。地图集科根科。com(154.54.82.34)icmp_seq=1从Verizon DMS获得的生存时间超过6次。bos01。地图集科根科。com(154.54.11.54)icmp_seq=1从ae-66开始的生存时间超过7。核心1。bsa。edgecastcdn。净(152.195.233.129)icmp_seq=1生存时间从93.184.216.34(93.184.216.34)超过了864字节:icmp_seq=1 ttl=57时间=63.0毫秒

上面的输出是在Debian GNU/Linux 11.2(bullseye)系统上获得的。例如,上面的循环发送具有不同生存时间(TTL)值的多个ICMP回显请求以到达主机。通用域名格式。TTL作为每个数据包的Internet协议(IP)报头中的8位字段出现。它是IPv4报头中的第9个八位字节,也是IPv6报头中的第8个八位字节。

当到达目的地的路径上的路由器接收到数据包时,它会将IP报头中的TTL值减一。如果减量操作后TTL值变为0,路由器将以"响应;超过34岁的寿命;ICMP消息。因此,TTL值设置为1的echo请求会给我们一个ICMP";超过34岁的寿命;来自路径中第一个路由器的消息,TTL值为2的下一个echo请求从路径中的第二个路由器获得类似的ICMP消息,依此类推。当我们收到成功的ICMP回显回复时,跟踪路由完成。

$traceroute示例。comtraceroute就是一个例子。com(93.184.216.34),最多30跳,60字节数据包1路1龙。利诺德。com(212.111.33.229)0.602 ms 1.202 ms 1.326 ms 2 if-0-1-0-1-0。gw1。lon1。gb。利诺德。com(109.74.207.14)0.502 ms if-11-1-0-0-0。gw2。lon1。gb。利诺德。com(109.74.207.26)0.401 ms if-11-0-0-0-0。gw2。lon1。gb。利诺德。com(109.74.207.30)0.379 ms 3 be5787。rcr51。lon10。地图集科根科。com(204.68.252.58)0.573 ms 0.563 ms 0.566 ms 4 be2589。ccr41。lon13。地图集科根科。com(154.54.59.37)1.271 ms 1.311 ms ldn-bb1-link。ip。12.99。净辐射(62.115.122.188)1.400毫秒5 be2099。ccr31。bos01。地图集科根科。com(154.54.82.34)63.511 ms 63.540 ms nyk-bb1-link。ip。12.99。net(62.115.112.244)73.397 ms 6 nyk-b1-link。ip。12.99。net(62.115.135.131)70.113 ms verizondms。bos01。地图集科根科。com(154.54.11.54)63.657 ms nyk-b1-link。ip。12.99。净空(62.115.135.131)70.190毫秒7 ae-66。核心1。bsa。edgecastcdn。净(152.195.233.129)63.535毫秒edgecast-ic317659-nyk-b6。ip。12.99卡斯特。net(62.115.147.199)77.802 ms ae-66。核心1。bsa。edgecastcdn。净含量(152.195.233.129)63.582 ms 8 93.184.216.34(93.184.216.34)62.895 ms ae-71。核心1。纽约。edgecastcdn。净含量(152.195.69.139)72.312 ms ae-70。核心1。纽约。edgecastcdn。净含量(152.195.68.141)69.419 ms 9 93.184.216.34(93.184.216.34)70.827 ms 62.896 ms 73.342 ms

上面输出的每一行对应一个跃点。每行显示一个或多个地址。每个跃点的结果中最多可以看到三个地址。这是因为目标有多条路径,traceroute命令默认情况下会为每个跃点发送3个UDP探测数据包。通过这种方式,它最终发现了多条通往目的地的路线。这里值得注意的是,默认情况下,traceroute发送UDP数据包,而不是ICMP echo请求,使用不同的TTL值作为探测数据包。但路由发现机制保持不变。发送每个探测数据包后,它会等待ICMP";生存时间超过了信息";从落在通往目的地的路径上的路由器。

通过比较上面的两个输出,我们可以看到使用ping的toy traceroute找到的路由是traceroute命令找到的几个路由之一。

对于{1..30}中的ttl;以ping-C1-T1-m$ttl为例。com&&;打破完成|来自| nl-s和#39的grep-i' -W2

在macOS上,ping命令的-t选项指定了一个超时(而不是IP TTL),以防止它等待太长时间,等待我们不知道的成功回音回复';我不指望收到。此外,在macOS上,ping命令的-m选项指定IP TTL。