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) 显示本机至 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: 数据报传输路径追踪的更多相关文章
- Linux命令学习(20):traceroute命令
版权声明 更新:2017-06-13博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下面的mv命令. 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 ...
- 《Linux命令学习手册》系列分享专栏
<Linux命令学习手册>系列分享专栏 <Linux命令学习手册>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/207 ...
- 【Linux】linux命令大全
[注意]:命令[compgen -b]可以列出所有当前系统支持的命令. 109个Linux命令 目录 1 文件管理... 5 1.1 basename. 5 1.2 ...
- linux学习(1):linux命令大全
Linux命令 目录 1 文件管理... 5 1.1 basename. 5 1.2 cat 5 1.3 cd. 5 1.4 ...
- 45 个常用Linux 命令,让你轻松玩转Linux!
Linux 的命令确实非常多,然而熟悉 Linux 的人从来不会因为 Linux 的命令太多而烦恼.因为我们仅仅只需要掌握常用命令,就完全可以驾驭 Linux. 接下来,让我们一起来看看都有那些常用的 ...
- (3)Linux命令分类汇总(7~12)
Linux命令分类汇总(7~12) (七)用户管理命令(12个) 1 useradd cdgs 添加用户. 2 usermod 修改系统已经存在的用户属性. 3 userdel ...
- 干货分享:盘点那些最常用的Linux命令,需熟记!
- 166个最常用的Linux命令,哪些你还不知道?
linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心. 线上查 ...
随机推荐
- UVA 624 - CD (01背包 + 打印物品)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- Spring Controller参数为空串的处理方式
控制器参数为String类型 Spring框架接收到传入的空串后,此参数被赋值为空串,不为null. 控制器参数为非String类型 Spring框架接收到传入的空串后,此参数被赋值为null.
- weak nonatomic strong等介绍(ios)
@property的属性weak nonatomic strong等介绍(ios) 2014-12-02 18:06 676人阅读 评论(0) 收藏 举报 学习ios也已经快半个月了,也尝试做简单的应 ...
- 基于EF的数据外键关联查询
现在很多ORM不自带外键关联的实体查询,比如我查询用户,用时将关联的角色信息查询出来,那么就要进行2次查询,很麻烦.而我现在要做的就是基于EF的外键关联查询.很方便的. 首先,创建基础查询的BaseS ...
- Mysql,JDBC封装
1.完成对数据库的表的增删改的操作 2.查询返回单条记录 3.查询返回多行记录 4.可以使用反射机制来封装,查询单条记录 5.反射机制,查询多条记录 package myjdbc; import ja ...
- 简单的玩玩etimer <contiki学习笔记之九 补充>
这幅图片是对前面 <<contiki学习笔记之九>> 的一个补充说明. 简单的玩玩etimer <contiki学习笔记之九> 或许,自己正在掀开contiki ...
- PI-webservice05-SAP调用外部webservice
在用webservice进行数据传输的过程中,SAP系统与.net开发的信息系统之间的数据调用.如何用SAP调用外部的.net系统发布的webservice程序来获取外部的数据,详情请见下文: 1,创 ...
- 常见AutoCAD病毒(acad.fas、acad.lsp)清除方法
常见AutoCAD病毒(acad.fas.acad.lsp)清除方法 acad.fas.acad.lsp这两种病毒是最常见的CAD病毒了,而且往往同一时候出现.因为其本身对系统并不具备危害性,不过恶作 ...
- [Jest] Track project code coverage with Jest
Jest comes pre-packaged with the ability to track code coverage for the modules you're testing, but ...
- 解决easyui-datagrid在ie中无法reload问题
easyui在页面载入时,会自己主动填充datagrid中的数据,当加入.改动.删除后,会触发reload事件,对datagrid进行又一次载入. 这个过程在FireFox中没有问题,用firebug ...