• 每天一个Linux命令(49)traceroute命令


        traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes。

        (1)用法:

        用法: traceroute [参数] [主机]

        (2)功能:

        功能: 通过traceroute可以知道信息从计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。
        traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址。

     

        (3)选项参数:

          1) -m       设置检测数据包的最大存活数值TTL的大小。

          2) -n        直接使用IP地址而非主机名称。

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

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

          5) -q       设置发送探测包的个数

        (4)实例:

          1)[root@localhost sunjimeng]# traceroute www.baidu.com        查询到百度的站点经过的路径

    [root@localhost sunjimeng]# traceroute www.baidu.com
    traceroute to www.baidu.com (14.215.177.37), 30 hops max, 60 byte packets
     1  192.168.142.2 (192.168.142.2)  0.116 ms  0.071 ms  0.132 ms
     2  * * *
     3  * * *
     4  * * *
     5  * * *
    ......
    30 * * *

        注意:

          有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。     

          2)[root@localhost sunjimeng]# traceroute -q 4 www.baidu.com      把探测包的个数设置为值4(默认是三次)

    [root@localhost sunjimeng]# traceroute -q 4 www.baidu.com
    traceroute to www.baidu.com (14.215.177.38), 30 hops max, 60 byte packets
     1  192.168.142.2 (192.168.142.2)  0.114 ms  0.143 ms  0.103 ms  0.135 ms
     2  * * * *
     3  * * * *
     4  * * * *
     5  * * * *
    ......
    30 * * * *

          3)[root@localhost sunjimeng]# traceroute -n www.baidu.com         显示IP地址,不查主机名

    [root@localhost sunjimeng]# traceroute -n www.baidu.com
    traceroute to www.baidu.com (14.215.177.38), 30 hops max, 60 byte packets
     1  192.168.142.2  0.151 ms  0.107 ms  0.060 ms              
     2  * * *
     3  * * *
     4  * * *
     5  * * *
    ......
    30 * * *

      注意:

      有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n参数来避免DNS解析,以IP格式输出数据。

          4)[root@localhost sunjimeng]# traceroute -m 5 www.baidu.com      设置跳数

    [root@localhost sunjimeng]# traceroute -m 5 www.baidu.com
    traceroute to www.baidu.com (14.215.177.38), 5 hops max, 60 byte packets
     1  192.168.142.2 (192.168.142.2)  0.100 ms  0.130 ms  0.052 ms
     2  * * *
     3  * * *
     4  * * *
     5  * * *
    [root@localhost sunjimeng]# 

            5)[root@localhost sunjimeng]# traceroute -r www.baidu.com       绕过正常的路由表,直接发送到与当前主机相连的IP地址

    [root@localhost sunjimeng]# traceroute -r www.baidu.com
    traceroute to www.baidu.com (14.215.177.38), 30 hops max, 60 byte packets
    connect: 网络不可达
    [root@localhost sunjimeng]# traceroute -r 0.0.0.0
    traceroute to 0.0.0.0 (0.0.0.0), 30 hops max, 60 byte packets
     1  localhost (127.0.0.1)  0.104 ms  0.012 ms  0.009 ms

        (5)其他:

        traceroute的工作原理:

          Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field):

      首先,traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地。当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram,发现第2 个路由器......

      traceroute 每次将送出的datagram的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目的地后,该主机并不会送回ICMP time exceeded消息,因为它已是目的地了,那么traceroute如何得知目的地到达了呢? Traceroute在送出UDP datagrams到目的地时,它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),所以当此UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息,而当traceroute 收到这个消息时,便知道目的地已经到达了。所以traceroute 在Server端也是没有所谓的Daemon 程式。

       Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 ,Traceroute都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。

        windows下的tracert:      

        在大多数情况下,我们会在linux主机系统下,直接执行命令行:  traceroute hostname。

        而在Windows系统下是执行tracert的命令:                             tracert hostname。   

  • 相关阅读:
    [C++] Class (part 2)
    [C++] Class (part 1)
    [c++] Inline Function
    [C++] in-class initializer
    简易线程池Thread Pool
    js里function的apply vs. bind vs. call
    webix custom component-九宫格
    webix源码阅读
    比特币的原理+问题
    wpf中UserControl的几种绑定方式
  • 原文地址:https://www.cnblogs.com/MenAngel/p/5589839.html
Copyright © 2020-2023  润新知