显示数据包到主机间的路径,traceroute命令用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节。

通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。

traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址。

Traceroute 的实现一共有三种方法,分别是:

  • TCP traceroute(使用 tracetcp 程序可以实现)
  • UDP traceroute(Cisco 和 Linux 默认情况下使用)
  • ICMP traceroute ( MS Windows 默认情况下使用)

命令格式

traceroute(选项)(参数)

命令选项

  • -d:使用Socket层级的排错功能;
  • -f<存活数值>:设置第一个检测数据包的存活数值TTL的大小;
  • -F:设置勿离断位;
  • -g<网关>:设置来源路由网关,最多可设置8个;
  • -i<网络界面>:使用指定的网络界面送出数据包;
  • -I:使用ICMP回应取代UDP资料信息;
  • -m<存活数值>:设置检测数据包的最大存活数值TTL的大小;
  • -n:直接使用IP地址而非主机名称;
  • -p<通信端口>:设置UDP传输协议的通信端口;
  • -r:忽略普通的Routing Table,直接将数据包送到远端主机上。
  • -s<来源地址>:设置本地主机送出数据包的IP地址;
  • -t<服务类型>:设置检测数据包的TOS数值;
  • -v:详细显示指令的执行过程;
  • -w<超时秒数>:设置等待远端主机回报的时间;
  • -x:开启或关闭数据包的正确性检验。

命令参数

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

简单用法

> traceroute rumenz.com
traceroute to rumenz.com (203.195.152.245), 64 hops max, 52 byte packets1  192.168.0.1 (192.168.0.1)  1.242 ms  0.949 ms  2.494 ms2  192.168.1.1 (192.168.1.1)  1.337 ms  1.101 ms  0.953 ms3  100.64.0.1 (100.64.0.1)  4.663 ms  28.187 ms  3.346 ms4  111.175.227.145 (111.175.227.145)  7.321 ms  12.203 ms  10.503 ms5  111.175.210.221 (111.175.210.221)  4.810 ms  7.400 ms  3.673 ms6  202.97.17.5 (202.97.17.5)  20.276 ms202.97.98.25 (202.97.98.25)  38.174 ms202.97.17.1 (202.97.17.1)  28.942 ms7  * 113.96.5.158 (113.96.5.158)  26.277 ms *8  * * *9  14.18.199.106 (14.18.199.106)  22.518 ms  20.543 ms  22.583 ms
10  * * 14.18.199.74 (14.18.199.74)  22.378 ms
11  * * *
12  * * *
13  * * *
14  203.195.152.245 (203.195.152.245)  25.766 ms  21.599 ms *

记录按序列号从1开始,每个记录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用traceroute -q 4 rumenz.com,表示向每个网关发送4个数据包。

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

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

如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。

设置跳数

> traceroute -m 10 rumenz.com
traceroute to rumenz.com (203.195.152.245), 10 hops max, 52 byte packets1  192.168.0.1 (192.168.0.1)  1.829 ms  0.746 ms  1.684 ms2  192.168.1.1 (192.168.1.1)  2.326 ms  3.365 ms  1.203 ms3  100.64.0.1 (100.64.0.1)  4.659 ms  5.613 ms  4.055 ms4  111.175.227.145 (111.175.227.145)  12.399 ms  7.991 ms  8.013 ms5  111.175.210.221 (111.175.210.221)  6.997 ms  10.958 ms  4.180 ms6  202.97.98.29 (202.97.98.29)  21.216 ms202.97.98.25 (202.97.98.25)  21.428 ms *7  * * *8  * * *9  * 14.18.199.106 (14.18.199.106)  22.443 ms  20.399 ms
10  * * *

显示IP地址,不查主机名

> traceroute -n rumenz.com
traceroute to rumenz.com (203.195.152.245), 64 hops max, 52 byte packets1  192.168.0.1  2.484 ms  1.271 ms  0.813 ms2  192.168.1.1  1.320 ms  1.103 ms  1.075 ms3  100.64.0.1  2.914 ms  4.107 ms  4.372 ms4  111.175.227.145  7.279 ms  7.915 ms  9.007 ms5  111.175.210.221  3.729 ms  4.100 ms  4.160 ms6  202.97.29.49  25.172 ms202.97.34.66  23.798 ms202.97.29.53  18.034 ms7  * * *8  * * *9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * 203.195.152.245  21.635 ms  22.201 ms

把探测包的个数设置为值4

> traceroute -q 4 rumenz.com
traceroute to rumenz.com (203.195.152.245), 64 hops max, 52 byte packets1  192.168.0.1 (192.168.0.1)  2.265 ms  2.010 ms  0.669 ms  1.103 ms2  192.168.1.1 (192.168.1.1)  1.159 ms  1.207 ms  1.082 ms  1.181 ms3  100.64.0.1 (100.64.0.1)  6.105 ms  4.068 ms  2.737 ms  3.858 ms4  111.175.227.145 (111.175.227.145)  12.785 ms  11.772 ms  11.710 ms  7.463 ms5  111.175.210.221 (111.175.210.221)  11.646 ms  5.033 ms  4.373 ms  5.631 ms6  * 202.97.29.57 (202.97.29.57)  21.332 ms *202.97.17.5 (202.97.17.5)  26.080 ms7  * * * *8  * * * *9  14.18.199.106 (14.18.199.106)  26.460 ms  20.790 ms  25.815 ms *
10  * * 14.18.199.74 (14.18.199.74)  22.642 ms *
11  * * * *
12  * * * *
13  * * * *
14  203.195.152.245 (203.195.152.245)  22.046 ms  22.201 ms  20.328 ms  24.846 ms

绕过正常的路由表,直接发送到网络相连的主机

> traceroute -r rumenz.com
traceroute to rumenz.com (203.195.152.245), 64 hops max, 52 byte packets
traceroute: sendto: Network is unreachable1 traceroute: wrote rumenz.com 52 chars, ret=-1*traceroute: sendto: Network is unreachable
traceroute: wrote rumenz.com 52 chars, ret=-1*traceroute: sendto: Network is unreachable
traceroute: wrote rumenz.com 52 chars, ret=-1

探测包的等待响应时间设置为3秒

> traceroute -w 3 rumenz.com
traceroute to rumenz.com (203.195.152.245), 64 hops max, 52 byte packets1  192.168.0.1 (192.168.0.1)  2.835 ms  0.894 ms  0.967 ms2  192.168.1.1 (192.168.1.1)  1.289 ms  1.174 ms  1.091 ms3  100.64.0.1 (100.64.0.1)  3.327 ms  2.985 ms  4.280 ms4  111.175.227.145 (111.175.227.145)  13.337 ms  12.301 ms  9.081 ms5  111.175.210.221 (111.175.210.221)  3.484 ms  5.052 ms  4.033 ms6  202.97.98.25 (202.97.98.25)  19.580 ms202.97.17.1 (202.97.17.1)  21.139 ms202.97.34.66 (202.97.34.66)  21.232 ms7  * * 113.96.5.82 (113.96.5.82)  26.111 ms8  * * *9  * 14.18.199.106 (14.18.199.106)  22.279 ms *
10  * * *
11  * * *
12  * * *
13  * * *
14  * 203.195.152.245 (203.195.152.245)  22.335 ms  21.387 ms

Traceroute的工作原理

UDP 和 ICMP Traceroute

Traceroute 的基本原理是向外发送带有逐次递增 TTL 的数据包从而获取的路径中每一跳的信息。

Host A 向 Host B 做 traceroute,Host A 第一次会发出一个 TTL=1 的数据包,当该数据包到达 R1 时,TTL 会变为 0 (网络上每经过一跳 TTL 会减去 1),R1 会将 TTL=0 的数据包丢弃并返回一个 ICMP Time Exceeded 给 Host A。Host A 发出第二个数据包并将 TTL 增加1 (TTL=2),该数据包到达 R2 后 TTL=0,R2 向 Host A 返回 ICMP Time Exceeded。依此类推,直到 TTL 增加到一个合适的值让数据包顺利到达 Host B,Host B 会返回一个 Final Replay 给 Host A。

UDP 和 ICMP traceroute 的区别就在于向外发送的数据包(上图中红色标明的 packet)和最后的 final reply。

  • UDP 向外发送的是一个 UDP 数据包,final reply 是 ICMP Destination Unreachable
  • ICMP 向外发送的是一个 ICMP Echo Request,final reply 是 ICMP Echo Reply

TCP Traceroute

TCP traceroute 同样利用了 TTL 来探测网络路径但是它向外发送的是 TCP SYN 数据包,这样做最大的好处就是穿透防火墙的几率更大因为 TCP SYN 看起来是试图建立一个正常的 TCP 连接。

关于 Cisco 的 traceroute 更详细的资料可以参考 Cisco Using the traceroute Command on Operating Systems (Document ID:22826).

原文链接:https://rumenz.com/rumenbiji/linux-traceroute.html
微信公众号:入门小站

Linux之traceroute命令相关推荐

  1. php tracert,Windows下tracert命令和Linux下traceroute命令

    Windows下tracert命令和Linux下traceroute命令 通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(so ...

  2. linux系统跟踪路由命令,Linux下traceroute命令的使用方法

    在Linux系统中,traceroute命令可用于显示数据包经过的路由器的ip地址,了解行走路径,在Linux系统和windows系统中的名称有些不同,不熟悉Linux系统的朋友可能一时没认出来,下面 ...

  3. linux的traceroute命令详解

    traceroute命令详解 traceroute [-46dFITUnrAV] [-f first_ttl] [-g gate,...] [-i device] [-m max_ttl] [-p p ...

  4. Linux之traceroute命令使用详解—网络故障定位(三)

    现实世界中的网络是由无数的计算机和路由器组成的一张的大网,应用的数据包在发送到服务器之前都要经过层层的路由转发.而Traceroute是一种常规的网络分析工具,用来定位到目标主机之间的所有路由器 原理 ...

  5. Linux traceroute 命令详解

    traceroute 命令 Linux中traceroute 命令用于显示数据包到目的主机的路径 Windows中路由追踪命令是tracert. traceroute 指令可以追踪你发送的数据包在网络 ...

  6. linux上跟踪命令,Linux traceroute命令

    作为开发人员针对网络的路由追踪是经常使用的,Linux系统的traceroute命令.windows系统的tracert命令,接下来吾爱编程就为大家详细的介绍一下linux系统traceroute命令 ...

  7. 【Linux】一步一步学Linux——traceroute命令(167)

    00. 目录 文章目录 00. 目录 01. 命令概述 02. 命令格式 03. 常用选项 04. 参考示例 05. 附录 01. 命令概述 traceroute命令用于追踪数据包在网络上的传输时的全 ...

  8. traceroute命令---Linux学习笔记

    介绍: 通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可 ...

  9. linux系统里route -n不起作用,Linux系统中traceroute命令使用详解

    Linux系统中traceroute命令可以追踪到网络数据包的路由途径.下面由学习啦小编为大家整理了linux系统中traceroute命令使用详解,希望对大家有帮助! Linux系统中tracero ...

最新文章

  1. mongodb的安装以及客户端
  2. 用计算机写作ppt文库,[百度文库.ppt
  3. Python开发【第八篇】:网络编程 Socket
  4. Keil 5安装激活教程
  5. update语句中使用子查询
  6. Matlab 2016b+TimeSat 3.1中文经典安装及使用教程(附下载地址)
  7. android mvc使用方法,详细学习android mvc设计模式教程
  8. NVMe闪存存储系统设计挑战
  9. 一图看懂B站2020Q2财报
  10. VS2012连接数据库问题
  11. 【转】crc16几种标准校验算法及c语言代码
  12. python敲七游戏代码_敲七游戏数字表
  13. C语言面试题 - 指针概念
  14. 打印预览和实际的打印不一致问题
  15. WordPress网站配置腾讯云cdn缓存
  16. matlab中concur怎么用,Matlab的concur、repmat、kron、reshape函数介绍
  17. 教你快速分割每段视频并自动分段导出保存
  18. 【认知觉醒:开启自我改变的原动力】
  19. Vue安装element ui踩坑
  20. 根证书,解决win7 sp1 64位系统在线安装VS2017 或VS2019的失败

热门文章

  1. 同样的棋牌游戏,不同的价格,不同公司的价格差距这么大?
  2. 【8月】给你的第五封信
  3. 【人机交互与普适计算】 2019年-中国计算机学会推荐国际学术会议和期刊目录(九)
  4. 基于Android平台高校学生综合素质测评系统
  5. 代谢物表达值做关系网络图(cytoscape)
  6. 怎么批量打印CAD文件?CAD文件批量打印教程
  7. 数据库建表的 15 个最佳实践方式
  8. 面积误差三种计算表达的比较
  9. 免ROOT使用Frida(不修改源代码)
  10. 【智能家居】壁画音响制作