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) 显示本机至 example.com 数据包的传输路径。

[huey@huey-K42JE ~]$ 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 返回信息过滤掉。

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

  1. Linux命令学习(20):traceroute命令

    版权声明 更新:2017-06-13博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下面的mv命令. 2 ...

  2. 运维工程师必会的109个Linux命令

    运维工程师必会的109个Linux命令 版本1.0 崔存新 更新于2009-12-26 目录 1 文件管理 6 1.1 basename 6 1.2 cat 6 1.3 cd 7 1.4 chgrp ...

  3. 《Linux命令学习手册》系列分享专栏

    <Linux命令学习手册>系列分享专栏 <Linux命令学习手册>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/207 ...

  4. 【Linux】linux命令大全

    [注意]:命令[compgen -b]可以列出所有当前系统支持的命令. 109个Linux命令 目录 1       文件管理... 5 1.1          basename. 5 1.2    ...

  5. linux学习(1):linux命令大全

    Linux命令 目录 1       文件管理... 5 1.1          basename. 5 1.2          cat 5 1.3          cd. 5 1.4      ...

  6. 45 个常用Linux 命令,让你轻松玩转Linux!

    Linux 的命令确实非常多,然而熟悉 Linux 的人从来不会因为 Linux 的命令太多而烦恼.因为我们仅仅只需要掌握常用命令,就完全可以驾驭 Linux. 接下来,让我们一起来看看都有那些常用的 ...

  7. (3)Linux命令分类汇总(7~12)

    Linux命令分类汇总(7~12) (七)用户管理命令(12个) 1    useradd cdgs   添加用户. 2     usermod 修改系统已经存在的用户属性. 3    userdel ...

  8. 干货分享:盘点那些最常用的Linux命令,需熟记!

  9. 166个最常用的Linux命令,哪些你还不知道?

    linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心.     线上查 ...

随机推荐

  1. URAL 2066 Simple Expression (水题,暴力)

    题意:给定三个数,让你放上+-*三种符号,使得他们的值最小. 析:没什么好说的,全算一下就好.肯定用不到加,因为是非负数. 代码如下: #pragma comment(linker, "/S ...

  2. 解北大OJ1088滑雪问题的记录

    问题: Time Limit:1000MS   Memory Limit:65536K Total Submissions:67600   Accepted:24862 Description Mic ...

  3. 在Java中super和this的区别

    摘要:在Java中我们会时常用到super及this的用法,现在我主要来区分一下super.和this.及superL()及this()之间的区别,来对它们的认识和了解: 1.this的用法在Java ...

  4. 设置mysql服务器远程连接

    使用“Ctrl + R”组合键快速打开cmd窗口,并输入“cmd”命令,打开cmd窗口. 使用“mysql -uroot -proot”命令可以连接到本地的mysql服务. 使用“use mysql” ...

  5. LinkedList类

    LinkedList类 LinkedList类和ArrayList,Vector基本相同,都有增.删.改.查等方法.LinkedList是继承List接口. import java.util.*; p ...

  6. Spring Batch Concepts Chapter

    Spring Batch Concepts Chapter The below figure shows two kinds of Spring Batch components:infrastruc ...

  7. 创建动态组-以OU为单位

    选择“Windows 计算机”为对象,因为监视对象是以计算机为单位 ==================== 以下方式则无组成员返回: 此时要求返回的对象为AD用户或组,猜测SCOM没有监视到该用户或 ...

  8. C++转义字符使用

    编码过程中字符串可能过长,这通常须要换行,对于换行转义字符\ ,使用时要保证\后无空格,否则会出现"error C2017:非法的转义字符 "错误 如 //  ''\"后 ...

  9. Ubuntu Kylin14.04终于可以使用root登陆了

    Ubuntu Kylin14.04怎样使用root登陆? 方法:找到/usr/share/lightm/ightm.conf.d         用gedit或者vi 打开50-unity-greet ...

  10. 【HMTL】3D标签球

    这是一个3D TAG 在网站展示中是个不错的东东,能让人眼前一亮,值得收藏. 这个是效果: 源码下载: 点 击 下 载