• Traceroute程序


    Linux和Unix中为traceroute,Windows中对应的是Tracert。如:Tracert www.baidu.com   输出为路由信息。

    C:UsersAdministrator>Tracert www.baidu.com
    
    通过最多 30 个跃点跟踪
    到 www.a.shifen.com [119.75.217.56] 的路由:
    
      1    <1 毫秒   <1 毫秒   <1 毫秒 192.168.1.1
      2    <1 毫秒   <1 毫秒   <1 毫秒 125.216.240.254
      3     3 ms     2 ms     1 ms  222.201.128.157
      4    <1 毫秒   <1 毫秒   <1 毫秒 222.201.129.22
      5    20 ms    24 ms    14 ms  222.201.129.17
      6     1 ms    <1 毫秒   <1 毫秒 192.168.82.6
      7     1 ms    <1 毫秒    1 ms  192.168.66.113
      8     *       24 ms    <1 毫秒 202.112.19.41
      9     *        *        2 ms  scn-rgw1.gznet.edu.cn [202.112.19.101]
     10     1 ms    <1 毫秒   <1 毫秒 101.4.116.34
     11    19 ms    17 ms    17 ms  101.4.112.38
     12    40 ms    39 ms    39 ms  101.4.116.69
     13    47 ms    35 ms    46 ms  101.4.112.1
     14     *        *        *     请求超时。
     15    50 ms    48 ms    48 ms  202.112.6.58
     16    38 ms    38 ms    38 ms  192.168.0.5
     17    38 ms    38 ms    39 ms  10.65.190.130
     18    38 ms    37 ms    38 ms  119.75.217.56
    
    跟踪完成。
    119.75.217.56 即为百度地址。

    一、工作原理:

      1、信源主机发送一个TTL(Time to Live)字段为1的UDP数据报给目的主机,处理这份数据报的第一个路由器将TTL值减1,丢弃该数据报,并发回一份超时ICMP报文。这样就得到了该路径中的第一个路由器的地址

      2、然后Traceroute程序发送一份TTL值为2的数据报,这样我们就可以得到第二个路由器的地址。继续这个过程直至该数据报到达目的主机。但是目的主机哪怕接收到TTL值为1的IP数据报,也不会丢弃该数据报并产生一份超时ICMP报文,这是因为数据报已经到达其最终目的地。那么我们该如何判断是否已经到达目的主机了呢?

      3、Traceroute程序发送一份UDP数据报给目的主机,但它选择一个不可能的值作为UDP端口号(大于30 000) ,使目的主机的任何一个应用程序都不可能使用该端口。因为,当该数据报到达时,将使目的主机的 UDP模块产生一份“端口不可达”错误ICMP报文。这样,Traceroute程序所要做的就是区分接收到的ICMP报文是超时还是端口不可达,以判断什么时候结束。

    二、IP源站选路

      通常IP路由是动态的,即每个路由器都要判断数据报下面该转发到哪个路由器。应用程序对此不进行控制,而且通常也并不关心路由。不过可以采用Traceroute程序工具来发现实际的路由。

        源站选路的思想是由发送者指定路由。它可以采用以下两种形式:

    1)严格的源路由选择。发送端指明IP数据报所必须采用的确切路由。如果一个路由器发现源路由所指定的下一个路由器不在其直接连接的网络上,那么它就返回一个“源站路由失败”的ICMP差错报文。
    2) 宽松的源站选路。发送端指明了一个数据报经过的IP地址清单,但是数据报在清单上指明的任意两个地址之间可以通过其他路由器。

  • 相关阅读:
    恢复误删的进程在使用的文件【转】
    高效获得Linux函数调用栈/backtrace的方法【转】
    V4L2开发要点【转】
    Linux中Grep常用的15个例子【转】
    1.Linux电源管理-休眠与唤醒【转】
    3.2. 使​​​​​​​用​​​​​​​ CPUFREQ 调​​​​​​​节​​​​​​​器​​​​​​​【转】
    Linux动态调频系统CPUFreq之一:概述【转】
    android Gui系统之SurfaceFlinger(1)---SurfaceFlinger概论【转】
    非常好的一篇对linux信号(signal)的解析 (转载)【转】
    Linux信号-信号集&信号屏蔽字&捕捉信号【转】
  • 原文地址:https://www.cnblogs.com/wiessharling/p/3395136.html
Copyright © 2020-2023  润新知