理解traceroute命令

北慕城南 提交于 2019-12-05 20:33:18

Trceroute为路由跟踪命令

   格式:traceroute  [选项]  IP或域名。

  功能:通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当我们不能连接自己的服务器了,可以使用这条命令,在哪个节点上出现了***说明哪个节点出现了问题

  选项

    -d:使用Socket层级的排错功能

    -f<存活时间>:设置第一个检测数据包的存活数值TTL的大小

    -F:设置勿离断位

    -g<网关>:设置来源路由网关,最多可设置8个

    -i<网络界面>:使用指定的网络界面送出数据包

    -l:使用ICMP回应取代UDP资料信息

    -m<存活数值>:设置检测数据包的最大存活数值TTL的大小

    -n:直接使用IP地址而非主机名

    -p<通信端口>:设置UDP传输协议的通信端口

    -r:忽略普通的Routing Table,直接将数据包送到远端主机上

    -s<来源地址>:设置本地主机送出数据包的TOS数值

    -v:详细显示指令的执行过程

    -w<超时秒数>:设置等待远端主机回报的时间

    -x:开启或关闭数据包的正确性检验

  参数:指定目的主机IP地址或主机名

  工作原理

    主机通过不断的发出报文,并设置第一个报文的TTL=1;这样当报文到达第一个网关,将TTL减1后等于0,就会将报文丢弃,并发出一个ICMP差错报告报文,通过这个差错报告报文,主机就能找到丢掉报文的网关的IP,并将其显示,然后发出第二个,设置TTL=2;这次通过第一个网关后,TTL还剩下1,再到达第二个网关时,TTL=0,报文也将被丢弃,并返回差错报告报文,如此反复,直到找到了目标机或者超过了最大的跳转数(我这里是30),当然,并非所有的网关ip都能收集到,因为有些网关设置了不会理睬你的报文。

  试试这个命令:这个命令有一个作用是,我们可以看到本机周围路由器的拓扑,看一下主机的要经过的局域网内的路由器,最终从哪个路由器到达广域网。

     1.首先,我们用这个命令看一下当前主机的网关,将手机和主机连接到同一路由器,看一下手机ip,内网IP为192.168.31.47,根据ip地址使用traceroute命令

           Traceroute  192.168.31.47

           traceroute to 192.168.31.47 (192.168.31.47), 30 hops max, 60 byte packets

            1  192.168.31.47 (192.168.31.47)  6.642 ms  7.699 ms  4.149 ms

        结果并没有看到网关的ip,因为我们使用的局域网地址,因为路由器判断为局域网地址会直接进行转发,并发送到目标机,路由器也就不会发处ICMP报文。

     2.这次我们使用本机广域网ip地址,看看会发生什么,打开一个虚拟机,设置网络为桥接模式(这样虚拟机在网络上与主机平等),百度一下ip地址,得到广域网的Ip地址58.210.35.227

           Traceroute 58.210.35.227

           1  XiaoQiang (192.168.31.1)  2.509 ms  2.047 ms  1.960 ms

           2  172.16.79.254 (172.16.79.254)  5.512 ms  10.808 ms  5.415 ms

           3  58.210.35.227 (58.210.35.2272)  5.268 ms  5.205 ms *

        通过两个路由器最终到了目标机,第一个应该就是我们的网关,因为他是跟本机同为局域网ip,其次是第二个,也是局域网ip地址,应该是路由器之上的路由器,

     3.我们测试一个更远的ip地址试试看看这上面还有什么

           traceroute baidu.com

           XiaoQiang (192.168.31.1)  3.171 ms  3.064 ms  3.059 ms

            2  172.16.79.254 (172.16.79.254)  11.618 ms  19.041 ms  26.926 ms

            3  10.10.10.2 (10.10.10.2)  5.888 ms  5.823 ms  5.761 ms

            4  58.211.218.73 (58.211.218.73)  5.672 ms  5.903 ms  5.809 ms

            5  218.94.213.129 (218.94.213.129)  9.832 ms 61.177.12.249 (61.177.12.249)  10.862 ms 61.177.12.253 (61.177.12.253)  9.714 ms

              ……

        一下又多了看到了两个,10.10.10.2是一个私有ip显然也是局域网的路由器,而58.211.218.73,与我们的公网ip显然存在一个子网中,应该就是通向外围的总路由器,

     4.现在来试试USTC-SZpro路由器里面的拓扑,将自电脑连接上USETC-SZpro的wifi,然后试试traceroute以前在局域网的电脑。他的ip是58.210.35.227

           traceroute 58.210.35.227

           1  CloudGW.lan (172.16.96.254)  4.134 ms  15.975 ms  17.560 ms

            2  58.210.35.229 (58.210.35.229)  1135.399 ms !H  1135.372 ms !H  1140.820 ms !

           居然直接就能通过172.16.96.254访问到,那也就意味着USTC-SZpro就是172.16.35.227,赶紧看一下自己的默认网关,果然,当前网关就是172.16.96.254 

       来看看我们得到的结果:   

                                                              

                                                                 小小的网络拓扑图

 

    

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!