专栏首页howtouselinuxtraceroute使用方法总结

traceroute使用方法总结

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

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

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

1、命令格式

traceroute 参数

2、命令功能

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

具体参数格式:traceroute -dFlnrvx-g<网关>...-m<存活数值>-s<来源地址>-w<超时秒数>数据包大小

3、命令参数

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

4、使用实例

实例1:traceroute 用法简单、最常用的用法

命令:traceroute www.baidu.com

输出:

root@localhost ~# traceroute www.baidu.com

traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets

1 192.168.74.2 (192.168.74.2) 2.606 ms 2.771 ms 2.950 ms

2 211.151.56.57 (211.151.56.57) 0.596 ms 0.598 ms 0.591 ms

3 211.151.227.206 (211.151.227.206) 0.546 ms 0.544 ms 0.538 ms

4 210.77.139.145 (210.77.139.145) 0.710 ms 0.748 ms 0.801 ms

5 202.106.42.101 (202.106.42.101) 6.759 ms 6.945 ms 7.107 ms

6 61.148.154.97 (61.148.154.97) 718.908 ms * bt-228-025.bta.net.cn (202.106.228.25) 5.177 ms

7 124.65.58.213 (124.65.58.213) 4.343 ms 4.336 ms 4.367 ms

8 202.106.35.190 (202.106.35.190) 1.795 ms 61.148.156.138 (61.148.156.138) 1.899 ms 1.951 ms

9 * * *

30 * * *

root@localhost ~#

说明:

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

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

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

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

实例2:跳数设置

root@localhost ~# traceroute 10.43.116.161

traceroute to 10.43.116.161 (10.43.116.161), 30 hops max, 60 byte packets

1 10.43.85.1 (10.43.85.1) 3.232 ms 13.354 ms 23.230 ms

2 10.43.66.157 (10.43.66.157) 9.944 ms 20.061 ms 30.136 ms

3 10.43.66.125 (10.43.66.125) 0.926 ms 1.668 ms 2.364 ms

4 10.43.65.5 (10.43.65.5) 2.350 ms 3.242 ms 4.083 ms

5 10.43.2.170 (10.43.2.170) 1.527 ms 2.767 ms 4.066 ms

6 10.43.116.161 (10.43.116.161) 0.267 ms 0.267 ms 0.331 ms

root@localhost ~# traceroute -m 3 10.43.116.161

traceroute to 10.43.116.161 (10.43.116.161), 3 hops max, 60 byte packets

1 10.43.85.1 (10.43.85.1) 8.294 ms 18.561 ms 28.237 ms

2 10.43.66.157 (10.43.66.157) 5.317 ms 15.045 ms 25.474 ms

3 10.43.66.125 (10.43.66.125) 0.954 ms 1.635 ms 2.327 ms

root@localhost ~#

说明:使用参数 -m 设置仅发送 3 跳报文,即使没有探测到主机也不在发送。

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

root@localhost ~# traceroute -n www.baidu.com

traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets

1 211.151.74.2 5.430 ms 5.636 ms 5.802 ms

2 211.151.56.57 0.627 ms 0.625 ms 0.617 ms

3 211.151.227.206 0.575 ms 0.584 ms 0.576 ms

4 210.77.139.145 0.703 ms 0.754 ms 0.806 ms

5 202.106.42.101 23.683 ms 23.869 ms 23.998 ms

6 202.106.228.37 247.101 ms * *

7 61.148.146.29 5.256 ms 124.65.58.213 4.386 ms 4.373 ms

8 202.106.35.190 1.610 ms 61.148.156.138 1.786 ms 61.148.3.34 2.089 ms

9 * * *

30 * * *

root@localhost ~# traceroute www.baidu.com

traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets

1 211.151.74.2 (211.151.74.2) 4.671 ms 4.865 ms 5.055 ms

2 211.151.56.57 (211.151.56.57) 0.619 ms 0.618 ms 0.612 ms

3 211.151.227.206 (211.151.227.206) 0.620 ms 0.642 ms 0.636 ms

4 210.77.139.145 (210.77.139.145) 0.720 ms 0.772 ms 0.816 ms

5 202.106.42.101 (202.106.42.101) 7.667 ms 7.910 ms 8.012 ms

6 bt-228-025.bta.net.cn (202.106.228.25) 2.965 ms 2.440 ms 61.148.154.97 (61.148.154.97) 431.337 ms

7 124.65.58.213 (124.65.58.213) 5.134 ms 5.124 ms 5.044 ms

8 202.106.35.190 (202.106.35.190) 1.917 ms 2.052 ms 2.059 ms

9 * * *

30 * * *

root@localhost ~#

说明:注意第6条路由器不在显示域名。

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

root@localhost ~# traceroute -q 4 www.baidu.com

traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets

1 211.151.74.2 (211.151.74.2) 40.633 ms 40.819 ms 41.004 ms 41.188 ms

2 211.151.56.57 (211.151.56.57) 0.637 ms 0.633 ms 0.627 ms 0.619 ms

3 211.151.227.206 (211.151.227.206) 0.505 ms 0.580 ms 0.571 ms 0.569 ms

4 210.77.139.145 (210.77.139.145) 0.753 ms 0.800 ms 0.853 ms 0.904 ms

5 202.106.42.101 (202.106.42.101) 7.449 ms 7.543 ms 7.738 ms 7.893 ms

6 61.148.154.97 (61.148.154.97) 316.817 ms bt-228-025.bta.net.cn (202.106.228.25) 3.695 ms 3.672 ms *

7 124.65.58.213 (124.65.58.213) 3.056 ms 2.993 ms 2.960 ms 61.148.146.29 (61.148.146.29) 2.837 ms

8 61.148.3.34 (61.148.3.34) 2.179 ms 2.295 ms 2.442 ms 202.106.35.190 (202.106.35.190) 7.136 ms

9 * * * *

30 * * * *

root@localhost ~#

说明:可见每一个路由器有4个回复报文时间。

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

//本机为10.43.85.162

root@localhost ~# traceroute -r 10.43.85.223

traceroute to 10.43.85.223 (10.43.85.223), 30 hops max, 60 byte packets

1 10.43.85.223 (10.43.85.223) 1.126 ms 1.127 ms 1.117 ms

root@localhost ~# traceroute -r 10.43.42.199

traceroute to 10.43.42.199 (10.43.42.199), 30 hops max, 60 byte packets

connect: Network is unreachable

说明:主要用于验证目标主机是否和本机在一个子网下

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

root@localhost ~# traceroute -w 3 www.baidu.com

traceroute to www.baidu.com (61.135.169.105), 30 hops max, 40 byte packets

1 211.151.74.2 (211.151.74.2) 2.306 ms 2.469 ms 2.650 ms

2 211.151.56.1 (211.151.56.1) 0.621 ms 0.613 ms 0.603 ms

3 211.151.227.206 (211.151.227.206) 0.557 ms 0.560 ms 0.552 ms

4 210.77.139.145 (210.77.139.145) 0.708 ms 0.761 ms 0.817 ms

5 202.106.42.101 (202.106.42.101) 7.520 ms 7.774 ms 7.902 ms

6 bt-228-025.bta.net.cn (202.106.228.25) 2.890 ms 2.369 ms 61.148.154.97 (61.148.154.97) 471.961 ms

7 124.65.58.221 (124.65.58.221) 4.490 ms 4.483 ms 4.472 ms

8 123.126.6.198 (123.126.6.198) 2.948 ms 61.148.156.6 (61.148.156.6) 7.688 ms 7.756 ms

9 * * *

30 * * *

说明:时间粒度太大,无法看出结果

understanding traceroute

Exploring ICMP Protocol with Examples

Understanding Ping Command and ICMP with Examples

What is ICMP type?

icmp port

原文链接:https://www.howtouselinux.com/post/traceroute

相关文章

  • Android Notification使用方法总结

    如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    砸漏
  • CListCtrl控件使用方法总结

    今天第一次用CListCtrl控件,遇到不少问题,查了许多资料,现将用到的一些东西总结如下: 以下未经说明,listctrl默认view 风格为report ...

    _gongluck
  • Tablayout简单使用方法总结

    在项目中使用viewpager的时候大多数都是和TabPagerIndicator结合使用,TabPagerIndicator是第三方的,使用起来比较繁琐;

    砸漏
  • Android WebView的使用方法总结

    1、打开指定url网页; 2、点击链接可以跳转到下一页,并更新标题; 3、按back键或左箭头可以返回上一页; 4、当webview显示的是第一级url时...

    砸漏
  • Android onCreateOptionsMenu的使用方法总结

    任何一款软件都少不了对“菜单”的使用。在Android下,每一个activity都捆绑了一个Menu,要想定义和使用菜单,都必须在Activity下进行操作,复...

    砸漏
  • android使用mysql的方法总结

    第一种是通过连接服务器,再由服务器读取数据库来实现数据的增删改查,这也是我们常用的方式。

    砸漏
  • Lombok介绍、使用方法和总结

    1 Lombok背景介绍 官方介绍如下: Project Lombok makes java a spicier language by adding 'han...

    猿人谷
  • Linux 中firewall的使用方法总结

    以上就是Linux 中firewall的简单实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    砸漏
  • php fread函数使用方法总结

    php fread函数用于读取文件(可安全用于二进制文件),其语法是fread(file,length),参数file必需,指规定要读取打开文件,length ...

    砸漏
  • 迭代式开发使用方法总结

          为什么我在这里主要讨论迭代式软件开发?本文在此抛开千篇一律的理论,拟就根据多年的实践,总结出一套比较务实、可操作性强的方法,以期望在有限的资源下确保...

    庞小明
  • 关于DevExpress的XtraTreeList使用方法总结

    跟着阿笨一起玩NET
  • Python request使用方法及问题总结

    模拟postman访问接口,具体参照七、python接口开发(二) 三、postman访问接口,本篇文章调用的接口,也是来自于接口开发的源码,阅读本篇文章最好...

    砸漏
  • JavaScript 常用方法总结

    经常使用的 JS 方法,今天记下,以便以后查询 /* 手机类型判断 */ var BrowserInfo = { userAgent: navigator.us...

    前朝楚水
  • JQuery常用方法总结

    1.json的创建方式 <script> $(function () { //第一种 var my = new Peop...

    用户1055830
  • Docker常用方法总结

    这个方法也可以用来打开多个窗口方便管理。使用方法是你可以先在主屏幕使用tmux开两个分屏,一个屏先用docker run运行一个容器,然后在另一个屏幕使用上面命...

    marsggbo
  • Newtonsoft.Json.Linq 常用方法总结

    Newtonsoft.Json.Linq 不支持直接获取数组,但是可以获取 List,然后再转化为数组。

    丹枫无迹
  • jquery 常用方法总结

    jQuery顶级对象 缩写$    window.jQuery   window.$

    用户1503405
  • Linux下SVN的一些使用方法总结

    近期的一个项目不方便 Check 到本地,需要在测试服务器上进行编写和测试,所以就研究了一下如何在 Linux 命令行下使用 SVN。

    大江小浪
  • 使goroutine同步的方法总结

    在前面并发性能对比的文章中,我们可以看到Golang处理大并发的能力十分强劲,而且开发也特别方便,只需要用go关键字即可开启一个新的协程。

    李海彬

扫码关注云+社区

领取腾讯云代金券