每天一个linux命令(40): traceroute命令

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

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

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

traceroute hostname

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

tracert hostname

命令格式

$ traceroute [参数] [主机]

命令功能

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

具体参数格式:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>…][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

命令参数

命令 描述
-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 开启或关闭数据包的正确性检验

使用实例

例一 :traceroute 用法简单、最常用的用法

$ traceroute yelog.github.com
traceroute to yelog.github.com (151.101.192.133), 30 hops max, 60 byte packets
 1  vrouter (192.168.0.1)  0.443 ms  0.565 ms  0.684 ms
 2  112.208.32.1.pldt.net (112.208.32.1)  14.518 ms  22.454 ms  23.080 ms
 3  119.93.255.197 (119.93.255.197)  24.492 ms  25.380 ms  26.328 ms
 4  210.213.131.66.static.pldt.net (210.213.131.66)  29.942 ms 210.213.131.70.static.pldt.net (210.213.131.70)  28.209 ms  28.992 ms
 5  122.2.175.30.static.pldt.net (122.2.175.30)  32.429 ms  32.765 ms 210.213.128.29.static.pldt.net (210.213.128.29)  35.165 ms
 6  210.213.130.162.static.pldt.net (210.213.130.162)  32.147 ms  31.403 ms  32.107 ms
 7  las-b3-link.telia.net (62.115.13.128)  198.546 ms  190.829 ms  191.039 ms
 8  las-b21-link.telia.net (213.155.131.82)  194.301 ms las-b21-link.telia.net (62.115.116.179)  191.927 ms las-b21-link.telia.net (213.155.131.84)  194.433 ms
 9  * * *
10  * * *

说明:

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

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

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

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

例二 :跳数设置

$ traceroute -m 10 www.baidu.com

例三 :显示IP地址,不查主机名

$ traceroute -n www.baidu.com

例四 :探测包使用的基本UDP端口设置6888

$ traceroute -p 6888 www.baidu.com

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

$ traceroute -q 4 www.baidu.com

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

$ traceroute -r www.baidu.com

例七 :把对外发探测包的等待响应时间设置为3秒

$ traceroute -w 3 www.baidu.com

Traceroute的工作原理

Traceroute最简单的基本用法是:traceroute hostname

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地址,三个包每次来回所花时间。

 
标签: traceroute
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Centos-跟踪数据传输路由状态-traceroute cento
    traceroute  显示网卡数据包传输到指定主机的路径信息,追踪数据传输路由状况,默认数据包大小38字节 相关选项  -i          使用指定网络接口发送数据  -n         使用IP而不使用主机名  -v         显示命令的执行过程
    02-09
  • 路由追踪程序Traceroute分析与科普
    路由追踪程序Traceroute分析与科普
    *本文原创作者:ArkTeam/YSYY,转载须注明来自FreeBuf.COM 一、路由追踪程序traceroute/tracert Traceroute是Linux和Mac OS等系统默认提供的路由追踪小程序,Tracert是Windows系统默认提供的路由追踪小程序。二者的功能相同,都能探测数据包从源地址到目的地
  • [原]关于nmap和traceroute在虚拟机里使用的问题
    这两个问题非常普遍,但是你几乎不会在网上找到什么答案,这两个问题是:1.你曾经在VMWare中执行nmap,但没有成功!请看《NMAP through VMWare Workstation NAT Interface》解决方案,请看《千万不要在VMWare的NAT模式下使用nmap》。2.你曾经在VMWare中执行tra
  • Linux常用网络工具之路由扫描工具traceroute使用介绍
    Linux常用网络工具之路由扫描工具traceroute使
    这篇文章主要介绍了Linux常用网络工具之路由扫描工具traceroute使用介绍,本文讲解了traceroute基本使用、traceroute使用技巧等内容,需要的朋友可以参考下
点击排行