traceroute命令结果分析

Posted lida2003

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了traceroute命令结果分析相关的知识,希望对你有一定的参考价值。

traceroute命令结果分析

1. 基本原理

客户端发送的数据包,服务器在收到这个数据包的时候会返回1个端口不可达的ICMP错误信息,客户端通过判断收到的错误信息是TTL超时还是端口不可达来判断数据包是否到达目标主机,具体的流程:

  1. 客户端发送⼀个TTL为1的数据包,到达第1站路由器之后TTL被减去1,返回了1个超时的ICMP数据包,客户端得到第1跳路由器的地址。
  2. 客户端发送⼀个TTL为2的数据包,在第2跳的路由器节点处超时,得到第2跳路由器的地址。
  3. 客户端发送⼀个TTL为3的数据包,数据包成功到达目标主机,返回1个端口不可达错误,traceroute结束。

注:当路由节点或者目标主机不反馈任何响应时,从命令结果上可以看到“*”号超时信息。

通常在实现的时候,会有两种报文构造方式:UDPICMP

  • 从理论的角度ICMP属于L3,而UDP属于L4,且ICMP属于IP管理报文,因而ICMP属于网络管理报文,而UDP更偏向应用报文。越高层的应用被墙的可能越高,因此得不到相应的追踪结果就可想而知。
  • 从应用的角度来说,TCP/UDP都是同一个级别的应用层报文,如果服务不需要支持UDP,可以把UDP协议给封掉(比如:HTTP/HTTPS服务器)。

这里我们只是help下命令,接下去我们需要从实际的角度去看下这两种报文对于结果分析的影响。

$ traceroute --help
Usage:
  traceroute [ -46dFITnreAUDV ] [ -f first_ttl ] [ -g gate,... ] [ -i device ] [ -m max_ttl ] [ -N squeries ] [ -p port ] [ -t tos ] [ -l flow_label ] [ -w MAX,HERE,NEAR ] [ -q nqueries ] [ -s src_addr ] [ -z sendwait ] [ --fwmark=num ] host [ packetlen ]
Options:
  -4                          Use IPv4
  -6                          Use IPv6
  -d  --debug                 Enable socket level debugging
  -F  --dont-fragment         Do not fragment packets
  -f first_ttl  --first=first_ttl
                              Start from the first_ttl hop (instead from 1)
  -g gate,...  --gateway=gate,...
                              Route packets through the specified gateway
                              (maximum 8 for IPv4 and 127 for IPv6)
  -I  --icmp                  Use ICMP ECHO for tracerouting
  -T  --tcp                   Use TCP SYN for tracerouting (default port is 80)
  -i device  --interface=device
                              Specify a network interface to operate with
  -m max_ttl  --max-hops=max_ttl
                              Set the max number of hops (max TTL to be
                              reached). Default is 30
  -N squeries  --sim-queries=squeries
                              Set the number of probes to be tried
                              simultaneously (default is 16)
  -n                          Do not resolve IP addresses to their domain names
  -p port  --port=port        Set the destination port to use. It is either
                              initial udp port value for "default" method
                              (incremented by each probe, default is 33434), or
                              initial seq for "icmp" (incremented as well,
                              default from 1), or some constant destination
                              port for other methods (with default of 80 for
                              "tcp", 53 for "udp", etc.)
  -t tos  --tos=tos           Set the TOS (IPv4 type of service) or TC (IPv6
                              traffic class) value for outgoing packets
  -l flow_label  --flowlabel=flow_label
                              Use specified flow_label for IPv6 packets
  -w MAX,HERE,NEAR  --wait=MAX,HERE,NEAR
                              Wait for a probe no more than HERE (default 3)
                              times longer than a response from the same hop,
                              or no more than NEAR (default 10) times than some
                              next hop, or MAX (default 5.0) seconds (float
                              point values allowed too)
  -q nqueries  --queries=nqueries
                              Set the number of probes per each hop. Default is
                              3
  -r                          Bypass the normal routing and send directly to a
                              host on an attached network
  -s src_addr  --source=src_addr
                              Use source src_addr for outgoing packets
  -z sendwait  --sendwait=sendwait
                              Minimal time interval between probes (default 0).
                              If the value is more than 10, then it specifies a
                              number in milliseconds, else it is a number of
                              seconds (float point values allowed too)
  -e  --extensions            Show ICMP extensions (if present), including MPLS
  -A  --as-path-lookups       Perform AS path lookups in routing registries and
                              print results directly after the corresponding
                              addresses
  -M name  --module=name      Use specified module (either builtin or external)
                              for traceroute operations. Most methods have
                              their shortcuts (`-I' means `-M icmp' etc.)
  -O OPTS,...  --options=OPTS,...
                              Use module-specific option OPTS for the
                              traceroute module. Several OPTS allowed,
                              separated by comma. If OPTS is "help", print info
                              about available options
  --sport=num                 Use source port num for outgoing packets. Implies
                              `-N 1'
  --fwmark=num                Set firewall mark for outgoing packets
  -U  --udp                   Use UDP to particular port for tracerouting
                              (instead of increasing the port per each probe),
                              default port is 53
  -UL                         Use UDPLITE for tracerouting (default dest port
                              is 53)
  -D  --dccp                  Use DCCP Request for tracerouting (default port
                              is 33434)
  -P prot  --protocol=prot    Use raw packet of protocol prot for tracerouting
  --mtu                       Discover MTU along the path being traced. Implies
                              `-F -N 1'
  --back                      Guess the number of hops in the backward path and
                              print if it differs
  -V  --version               Print version info and exit
  --help                      Read this help and exit

Arguments:
+     host          The host to traceroute to
      packetlen     The full packet length (default is the length of an IP
                    header plus 40). Can be ignored or increased to a minimal
                    allowed value

2. IP地址种类

2.1 A类IP地址

A类地址的表示范围为:0.0.0.0~126.255.255.255,默认网络掩码为:255.0.0.0,A类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址,即高端位0,接下来7位表示网络ID,其余24位表示宿主机ID。A类地址分配给具有大量主机(直接个人用户)而局域网络个数较少的型网络。例如IBM公司的网络。

A类地址适合于网络较少而节点较多的情况,网络数为128个,每一网向络的节点数为1600个。

2.2 B类IP地址

B类地址的表示范围为:128.0.0.0~223.255.255.255,默认网络掩码为:255.0.0.0。B类地址分配给一般的中型网络。B类网络用第一、二组数字表示网络的地址,后面两组数字代表网络上的主机地址,即高端位10,接下来14位表示网络ID,其余16位表示宿主机ID。

B类地址适合于网络数和节点数适中的情况,网络数为16000个,每一网络的节点数为64000个。

2.3 C类IP地址

C类地址的表示范围为:192.0.0.0.~223.255.255.255,默认网络掩码为:255.255.255.0;C类地址分配给小型网络,如一般的局域网和校园网,它可连接的主机数量是最少的,采用所属的用户分为若干的网段进行管理。C类网络用前三组数字表示网络的地址,最后一组数字作为网络上的主机地址,即高端位110,接下来的21位表示网络ID,其余8位表示宿主机ID。

C类地址适合于网络数较多而节点较少的情况,网络数为2百万个,每个网络的节点数为256个。

2.4 D类地址用于多点广播(Multicast)。

D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

2.5 E类IP地址

以“llll0”开始,为将来使用保留。 全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。

3. 测试

注1:两次测试间隔10分钟;每次测试两个命令顺序执行。
注2:命令反馈结果第一行显示跟踪目标地址,跳跃数(30),以及报文大小。

3.1 第一次

$ traceroute www.taobao.com
traceroute to www.taobao.com (111.3.86.235), 30 hops max, 60 byte packets
 1  192.168.68.1 (192.168.68.1)      0.278 ms  0.325 ms  0.368 ms
 2  192.168.1.1 (192.168.1.1)        1.411 ms  1.524 ms  1.536 ms
 3  10.105.0.1 (10.105.0.1)          4.352 ms  4.567 ms  4.683 ms
 4  111.0.94.77 (111.0.94.77)        4.500 ms  5.054 ms  5.023 ms
 5  183.248.154.69 (183.248.154.69)  9.122 ms  211.138.114.177 (211.138.114.177)  6.865 ms 183.248.154.61 (183.248.154.61)  16.148 ms
 6  112.11.232.210 (112.11.232.210)  9.169 ms  6.408 ms  120.199.239.98 (120.199.239.98)    7.845 ms
 7  111.0.36.182 (111.0.36.182)      8.210 ms  111.3.81.238 (111.3.81.238)         7.701 ms 111.0.36.154 (111.0.36.154)  7.605 ms
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
$ traceroute -I www.taobao.com
traceroute to www.taobao.com (111.3.86.234), 30 hops max, 60 byte packets
 1  192.168.68.1 (192.168.68.1)      0.241 ms  0.306 ms  0.342 ms
 2  192.168.1.1 (192.168.1.1)        0.990 ms  1.102 ms  1.418 ms
 3  10.105.0.1 (10.105.0.1)          4.671 ms  4.764 ms  4.804 ms
 4  111.0.94.73 (111.0.94.73)        6.610 ms  6.625 ms  6.621 ms
 5  117.148.181.29 (117.148.181.29)  6.435 ms  6.423 ms  6.437 ms
 6  112.15.224.74 (112.15.224.74)    9.931 ms  7.048 ms  7.534 ms
 7  111.0.36.154 (111.0.36.154)      9.137 ms  8.817 ms  9.016 ms
 8  192.168.11.10 (192.168.11.10)    8.990 ms  9.101 ms  8.963 ms
 9  10.120.120.6 (10.120.120.6)      9.181 ms  8.235 ms  8.474 ms
10  111.3.86.234 (111.3.86.234)      8.100 ms  8.237 ms  8.375 ms

3.2 第二次

$ traceroute www.taobao.com
traceroute to www.taobao.com (111.3.86.235), 30 hops max, 60 byte packets
 1  192.168.68.1 (192.168.68.1)        0.598 ms  0.547 ms  0.522 ms
 2  192.168.1.1 (192.168.1.1)          1.403 ms  1.526 ms  1.495 ms
 3  10.105.0.1 (10.105.0.1)            4.463 ms  5.138 ms  5.386 ms
 4  111.0.94.77 (111.0.94.77)          5.163 ms  5.132 ms  5.209 ms
 5  112.11.232.49 (112.11.232.49)      11.981 ms 120.199.246.237 (120.199.246.237)  9.461 ms 117.148.181.13 (117.148.181.13)    6.458 ms
 6  120.199.239.114 (120.199.239.114)  10.846 ms 112.15.224.54 (112.15.224.54)      6.480 ms 183.248.154.242 (183.248.154.242)  8.207 ms
 7  111.0.36.154 (111.0.36.154)        8.221 ms  111.0.36.178 (111.0.36.178)        8.809 ms 111.0.36.174 (111.0.36.174)        8.211 ms
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
$ traceroute -I www.taobao.com
traceroute to www.taobao.com (111.3.86.235), 30 hops max, 60 byte packets
 1  192.168.68.1 (192.168.68.1)        0.222 ms  0.259 ms  0.305 ms
 2  192.168.1.1 (192.168.1.1)          0.936 ms  1.066 ms  1.237 ms
 3  10.105.0.1 (10.105.0.1)            4.427 ms  4.738 ms  4.877 ms
 4  111.0.94.77 (111.0.94.77)          4.593 ms  4.988 ms  5.064 ms
 5  183.248.154.69 (183.248.154.69)    9.011 ms  9.519 ms  9.508 ms
 6  183.248.154.246 (183.248.154.246)  9.904 ms  7.145 ms  7.526 ms
 7  111.0.36.186 (111.0.36.186)        9.717 ms  9.403 ms  9.364 ms
 8  192.168.11.54 (192.168.11.54)      8.532 ms  8.707 ms  9.090 ms
 9  10.120.120.1 (10.120.120.1)        9.075 ms  9.063 ms  9.051 ms
10  111.3.86.235 (111.3.86.235)        9.036 ms  8.130 ms  8.150 ms

4. 总结

  1. 第一层C类地址(192.168.68.1) 我的本地路由器(防火墙)
  2. 第二层C类地址(192.168.1.1) 运营商接入光纤猫
  3. 第三层A类地址(10.105.0.1) 运营商小区光纤路由器
  4. 第四层A类地址(111.0.94.73/77) 猜测运营商内部网络
  5. 第五层
  • 第一次:UDP-B类地址(183.248.154.69、211.138.114.177、183.248.154.61)、ICMP-A类地址(117.148.181.29)
  • 第二次:UDP-A类地址(112.11.232.49、120.199.246.237、117.148.181.13)、ICMP-B类地址(183.248.154.69)
  1. 第六层: 可能存在UDP打洞的情况
  • 第一次:UDP-A类地址(112.11.232.210、120.199.239.98)、ICMP-A类地址(112.15.224.74)
  • 第二次:UDP-A/B类地址(120.199.239.114、112.15.224.54、183.248.154.242)、ICMP-B类地址(183.248.154.246)
  1. 第七层 猜测淘宝服务器关联网外地址(CDN节点或者什么的)
  • 第一次:UDP-A类地址(111.0.36.182、111.3.81.238、111.0.36.154)、ICMP-A类地址(111.0.36.154)
  • 第二次:UDP-A类地址(111.0.36.154、111.0.36.178、111.0.36.174)、ICMP-A类地址(111.0.36.186)
  1. 第八层C类地址(192.168.11.10/54) // 内部网络IP
  2. 第九层A类地址(10.120.120.6/1) // 内部网络IP
  3. 第十层A类地址(111.3.86.234/235)

以上是关于traceroute命令结果分析的主要内容,如果未能解决你的问题,请参考以下文章

traceroute输出分析linux - 路由器ip地址

traceroute 详解及结果出现*的分析

traceroute----追踪数据包在网络上的传输过程

介绍一个好用的网络工具traceroute命令

网络实用命令——traceroute/tracert

Windows Azure Virtual Machine (40) 在Azure VM使用MTR进行traceroute