traceroute (Windows 系统下是tracert) 命令利用ICMP 协议定位您的计算机和目标计算机之间的所有路由器。TTL 值可以反映数据包经过的路由器或网关的数量,通过操纵独立ICMP 呼叫报文的TTL 值和观察该报文被抛弃的返回信息,traceroute命令能够遍历到数据包传输路径上的所有路由器。
此命令的适用范围:。CentOS7,Ubnutu16.04,Debian9,openSUSE15等以后版本系统已经默认不再集成这个命令,需要安装相应的软件traceroute

一、在介绍Traceroute的原理之前,需要了解几个技术名词:

IP协议
IP协议是TCP/IP协议族中最核心的部分,它的作用是在两台主机之间传输数据,所有上层协议的数据(HTTP、TCP、UDP等)都会被封装在一个个的IP数据包中被发送到网络上。

ICMP
ICMP全称为互联网控制报文协议,它常用于传递错误信息,ICMP协议是IP层的一部分,它的报文也是通过IP数据包来传输的。

TTL
TTL(time-to-live)是IP数据包中的一个字段,它指定了数据包最多能经过几次路由器。从我们源主机发出去的数据包在到达目的主机的路上要经过许多个路由器的转发,在发送数据包的时候源主机会设置一个TTL的值,每经过一个路由器TTL就会被减去一,当TTL为0的时候该数据包会被直接丢弃(不再继续转发),并发送一个超时ICMP报文给源主机。

二、原理:
Traceroute实现原理

1. 从源地址发出一个UDP探测包到目的地址,并将TTL设置为1;

2. 到达路由器时,将TTL减1;

3. 当TTL变为0时,包被丢弃,路由器向源地址发回一个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;

4. 当源地址收到该ICMP包时,显示这一跳路由信息;

5. 重复1~5,并每次设置TTL加1;

6. 直至目标地址收到探测数据包,并返回端口不可达通知(ICMP Port Unreachable);

7. 当源地址收到ICMP Port Unreachable包时停止traceroute。

注:

1. Linux和Mac OS等系统使用UDP包进行探测,目标端口号默认为33434,每次探测目标端口号加1。Traceroute故意使用了一个大于 30000 的目标端口号,以保证目标地址收到数据包后能够返回一个“端口不可达”的 ICMP 报文,于是源地址就可将端口不可达报文当作跟踪结束的标志。

2.Traceroute每跳默认发送3个探测包(发包的数量可通过-q进行设置),探测包的返回会受到网络情况的影响。如果防火墙封掉了ICMP的返回信息,那么相应的延时位置会以*显示。如果某台网关阻塞或者某台DNS出现问题,那么相应行的延时会变长。可以加-n 参数来避免DNS解析,以IP格式输出数据。

3.每个探测包都有唯一的标识号,使得Traceroute能够识别返回的包。UDP数据包使用递增的目标端口号进行标识。

三、命令格式:
traceroute[参数][主机]

-f   设置第一个检测数据包的存活数值TTL的大小,默认是1。

-i   使用指定的网络接口送出数据包,如果网络接口较多时有不同的网段可以使用这个参数来区分,从而测试不同的网段

-g   与-i参数相仿,只是-g后面接的是网管的ip地址,告诉Traceroute将IP源路由选项添加到传出数据包,该数据包通知网络通过指定网关路由数据包(大多数路由器出于安全原因禁用了源路由)。通常,允许多个网关(逗号分隔)。。

-I   使用ICMP回应取代UDP资料信息。

-m   指定最大ttl,默认30,可以理解为追踪路由的跳数。

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

-p   设置UDP传输协议的通信端口。

-q   设置每跳的探测数据包数。默认为3

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

-s   设置本地主机送出数据包的IP地址。

-t   设置检测数据包的TOS数值。

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

-w   设置等待远端主机回报的时间。

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

四、使用实例:

1、定位到目的主机的路由数量
-----------------------------------------------------------------------------

[root@mgt01 ~]# traceroute 10.253.0.230
traceroute to 10.253.0.230 (10.253.0.230), 30 hops max, 60 byte packets1  gateway (10.250.255.254)  20.977 ms  21.088 ms  21.169 ms2  oxmgt01 (10.253.0.230)  0.081 ms  0.078 ms  0.071 ms
[root@mgt01 ~]#

说明:
记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关(可以理解为一个路由器),我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 www.baidu.com ,表示向每个网关发送4个数据包。
有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据。
如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,也有助于解决问题。
————————————————

2、设置追踪的跳数
-------------------------------------------------
traceroute -m 10 www.baidu.com
-------------------------------------------------

3、从网络接口eth0进行网络追踪
-------------------------------------------------
traceroute -i eth0 www.baidu.com
-------------------------------------------------

4、探测包使用的基本UDP端口设置6888
-------------------------------------------------
traceroute -p 6888 www.baidu.com
-------------------------------------------------

5、把探测包的个数设置为值4
-------------------------------------------------
traceroute -q 4 www.baidu.com
-------------------------------------------------

6、把对外发探测包的等待响应时间设置为3秒
-------------------------------------------------
traceroute -w 3 www.baidu.com
------------------------------------------------

traceroute追踪路由命令相关推荐

  1. centos7查看路由的命令_Linux traceroute追踪路由命令详解

    1.traceroute traceroute指令输出到目标主机的路由包.Traceroute跟踪从IP网络到给定主机的路由数据包.它利用IP协议的生存时间(TTL)字段,并试图在通往主机的路径上从每 ...

  2. linux怎么做路由跟踪_Linux基础命令---traceroute追踪路由

    traceroute traceroute指令输出到目标主机的路由包.Traceroute跟踪从IP网络到给定主机的路由数据包.它利用IP协议的生存时间(TTL)字段,并试图在通往主机的路径上从每个网 ...

  3. linux怎么查看路由路径,linux traceroute追踪路由路径

    TraceRoute的工作原理 1.TraceRoute的工作原理: traceroute 有使用两种:使用ICMP的和使用UDP的.Microsoft 使用ICMP,所以win95上发出的trace ...

  4. linux 路由跟着命令,Linux基础命令---tracepath追踪路由

    tracepath tracepath指令可以追踪数据到达目标主机的路由信息,同时还能够发现MTU值.它跟踪路径到目的地,沿着这条路径发现MTU.它使用UDP端口或一些随机端口.它类似于Tracero ...

  5. Traceroute(路由追踪)的原理及实现

    Traceroute(路由追踪)的原理及实现 (1)相应的协议和原理 IP协议:IP协议是TCP/IP协议族中最核心的部分,它的作用是在两台主机之间传输数据,所有上层协议的数据(HTTP.TCP.UD ...

  6. windows下追踪路由

    追踪路由 tracert   目标ip/域名 测试两个ip是否畅通 ping    目标ip 在windows查看ip情况 ipconfig linux/unix下查看ip情况的使用 ifconfig

  7. linux怎么做路由跟踪_linux使用traceroute命令追踪路由

    Linux有一个基础的路由追踪软件:traceroute.# CentOS系统: yum update && yum install traceroute -y # Debian/Ub ...

  8. linux路径跟踪命令,Linux基础命令---tracepath追踪路由信息

    tracepath tracepath指令可以追踪数据到达目标主机的路由信息,同时还能够发现MTU值.它跟踪路径到目的地,沿着这条路径发现MTU.它使用UDP端口或一些随机端口.它类似于Tracero ...

  9. 网络诊断工具之—路由追踪tracert命令

    路由追踪-tracert   Tracert通过递增"生存时间   (TTL)"字段的值将"Internet   控制消息协议   (ICMP)   回响请求" ...

最新文章

  1. Cron表达式的详细用法
  2. ACMNO.31 C语言-宏求余 输入两个整数,求他们相除的余数。用带参的宏来实现,编程序。
  3. 《C++ Primer Plus》学习笔记 2.1.1 main()函数
  4. sun.misc.BASE64Encoder在Eclipse中不能直接使用的原因和解决方案
  5. 【python】openstack管理小工具(增删查改,批量ping)
  6. c++歌手大赛系统_计人即讯|第十届程序设计大赛
  7. 十一、 C++特性之begin()与end()
  8. java基础—System类的方法演示
  9. 04 循环结构概述和for语句的格式及其使用
  10. UDP协议相关及报文格式
  11. 12v服务器电源改可调_IBM服务器电源,艾默生7001578-j000 改造DIY成可调电源详细教程...
  12. 定制WES7紧急修复U盘
  13. c语言自学教程——博文总结
  14. xftp显示隐藏的文件夹及传输文件发生错误问题
  15. 【LaTex 中英文样式加粗】自由选择中英文字体样式,中英文字体粗黑程度设置
  16. Linux服务之DHCP服务篇(scp)
  17. DTI预处理及概率性纤维束追踪
  18. 【eCPRI】(1)基本概念
  19. 4.试用期个人工作总结(篇四)
  20. Threejs系列--10游戏开发--沙漠赛车游戏【基础事件处理器】

热门文章

  1. 利用百度API Store接口进行火车票查询
  2. Rapidshare Decompiler
  3. Windows API一日一练 55 FlushFileBuffers和SetFilePointer函数
  4. 计算机专业台式机好还是笔记本,科普:台式机显卡和笔记本显卡有啥不同?
  5. Python random 模块的总结
  6. 为什么报读托班都建议至少3个月以上?原因找到了!
  7. 微软的语音太逼真了,用来听小说舒服了
  8. chatGPT实现秒杀程序过程,真是让人感到不可思议
  9. IOS7开源项目集合
  10. Chrome 自动填充的表单是淡黄色的背景解决办法,