Linux 命令 - traceroute: 数据报传输路径追踪

traceroute 工具用于跟踪数据报的传输路径:当数据报从一台计算机传向另一台计算机时,会经过多重的网关,traceroute 命令能够找到数据报传输路径上的所有路由器。通过 traceroute 工具跟踪到的传输路径只是这两台计算机之间众多通路中的一条,所以不能肯定火假设数据报会永远只走这一条通路。

traceroute 过程

1. 将传递到目的 IP 地址的 ICMP Echo Request 消息的 TTL 值设置为 1,该数据报经过第一个路由器时,其 TTL 值减去 1,此时新产生的 TTL 值为 0。

2. 由于 TTL 值被置为 0,路由器判断此时不应该尝试继续转发数据报,而是直接抛弃该数据报。由于数据报的生存周期(TTL 值)已经到期,这个路由器会发送一个 ICMP 时间超时,即 TTL 值过期信息返回到客户端计算机。

3. 此时,发出 traceroute 命令的客户端计算机将显示该路由器的名称,之后可以再发送一个 ICMP Echo 消息并把 TTL 值设置为 2。

4. 第一个路由器仍然对这个 TTL 值减 1,然后,如果可能的话,将这个数据报转发到传输路径上的下一跳。当数据报抵达第二个路由器,TTL 值会再被减去 1,变成 0。

5. 第二个路由器会像第一个路由一样,抛弃掉这个数据报,并像第一个路由器那样返回一个 ICMP 超时消息。

6. 该过程会一直持续,traceroute 命令不停递增 TTL 值,而传输路径上的路由器不断递减该值,直到数据报最终抵达预期的目的地。

7. 当目的计算机接收到 ICMP Echo Request 消息时,会回传一个 ICMP Echo Reply 消息。

命令格式

traceroute [options] [host]

命令参数

-4
  使用 IPv4。

-6
  使用 IPv6。

-I
  使用 ICMP ECHO 探测。

-T
  使用 TCP SYN 探测。

-U
  使用 UDP 数据报探测,这是默认的探测方式。

-d
  启用 Socket 级的调试功能(如果 Linux 内核支持的话)。

-F
  设置 Don’t Fragment 位,不允许 IP 封包分段。

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

--help
  打印帮助信息

-m max_ttl
  指定探测时的最大跳数,即 TTL 的最大值,默认值为 30。

-n
  显示信息时不会尝试将 IP 地址映射成主机名称。

-p port
  设置目的端口号。对于 ICMP 追踪,则是指定 ICMP 的序列值。

-q nqueries
  设置每一跳的探测包数量,默认值为 3 。

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

-t tos
  当使用 IPv4 时,设置 Type of Service 值;使用 IPv6 时,则设置 Traffic Control 值。

-V
  打印版本信息

-w waittime
  设置等待测试响应的秒数,默认值为 5.0。

实例

a) 显示本机至 10.6.0.30 数据报的传输路径。

[[email protected] ~ ~]$ traceroute example.com
traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets
 1  10.1.228.254 (10.1.228.254)  1.545 ms  1.470 ms  1.381 ms
 2  192.168.100.2 (192.168.100.2)  0.818 ms  0.691 ms  0.601 ms
 3  * * *
 4  * * *
 5  * * *
...
28  * * *
29  * * *
30  * * *

记录序号从 1 开始,每行记录表示一跳,每一跳表示一个网关。除了主机名称与其 IP 地址外,每行记录还有 3 个时间,即默认的 -q 值。这些时间值表示数据报抵达路由器的往返时间。以 * * * 表示的记录,是因为在默认的等待时间 5.0 秒内没有接收到 ICMP 响应。这可能是因为防火墙把 ICMP 返回信息过滤掉。

时间: 2024-09-29 08:29:03

Linux 命令 - traceroute: 数据报传输路径追踪的相关文章

【Linux】linux命令大全

109个Linux命令 目录 1       文件管理... 5 1.1          basename. 5 1.2          cat 5 1.3          cd. 5 1.4          chgrp. 5 1.5          chmod. 6 1.6          chown. 7 1.7          comm.. 7 1.8          cp. 7 1.9          cut 8 1.10        dd. 8 1.11      

(4)Linux命令分类汇总(7~16)

Linux命令分类汇总(7~12) (七)用户管理命令(12个) 1    useradd cdgs   添加用户. 2     usermod 修改系统已经存在的用户属性. 3    userdel -r/删家目录 删除用户. 4    groupadd 添加用户组. 5      passwd 修改用户密码. 6   chage 修改用户密码有效期限. 7      id 看用户的uid,gid归属的用户组 8      su -:改变用户目录 切换用户身份. 9           vis

linux命令之ps命令

1.管道 linux命令管道通过|表示.一般在linux命令中|(管道)之前的命令会输出大量的结果,|(管道)之后的命令一般就是带有条件的,只将|前满足条件的结果显示出来. 2.grep命令 grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 3.ps命令 ps命令是process status的缩写,用于查看进程状态. 下面对命令选

每天一个linux命令目录(转)

转载: http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstandards.iteye.com/blog/786653 3.linux命令五分钟系列 4.其他互联网资料,google,baidu等搜索引擎 一. 文件目录操作命令: 1.每天一个

《Linux命令应用大词典》一书,讲述729个命令,1935个例子

<Linux命令应用大词典>涵盖了Linux系统常用的命令,内容涉及基础入门.系统管理.网络管理.网络安全.服务器配置和程序编译等多方面,共计729个命令,1935个例子,内容非常全面.每一个命令都讲述了它的功能描述.命令语法.选项含义和命令实例,内容清晰明了,正所谓一书在手,万事不愁. <Linux命令应用大词典>可以作为读者学习Linux系统的参考书.案头书,遇到不懂的命令或命令选项一查即可:适合Linux爱好者.Linux系统管理工程师.培训机构教师和学生以及高等院校计算机专

最有用的Linux命令行使用技巧集锦

最近在Quora上看到一个问答题目,关于在高效率Linux用户节省时间Tips.将该题目的回答进行学习总结,加上自己的一些经验,记录如下,方便自己和大家参考. 下面介绍的都是一些命令行工具,这些工具在几位回答者的日常工作中都很有用.对于任何不了解的命令,请使用"man <COMMANDNAME>"查看,或者使用Google.有些命令需要先用 yum, apt-get install 命令安装. 1.基本命令 了解基本的bash 通读整个bash man page. 学习VI

[转]每天一个linux命令目录

http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstandards.iteye.com/blog/786653 3.linux命令五分钟系列 4.其他互联网资料,google,baidu等搜索引擎 一. 文件目录操作命令: 1.每天一个linu

【转】每天一个linux命令目录

原文网址:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstandards.iteye.com/blog/786653 3.linux命令五分钟系列 4.其他互联网资料,google,baidu等搜索引擎 一. 文件目录操作命令: 1.每天一

linux命令之ps

概述 有时候系统管理员可能只关心现在系统中运行着哪些程序,而不想知道有哪些进程在运行.由于一个应用程序可能需要启动多个进程.所以在同等情况下,进程的数量要比程序多的多.使用ps可以确定有哪些进程正在运行和运行的状态.进程是否结束.进程有没有僵死.哪些进程占用了过多的资源等等. -A 显示所有进程(等价于-e)(utility)-a 显示一个终端的所有进程,除了会话引线ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示. 最常用的方法是ps -aux,然后再利用一