iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >linux中traceroute有什么用
  • 508
分享到

linux中traceroute有什么用

2023-06-16 01:06:13 508人浏览 独家记忆
摘要

这篇文章主要介绍linux中traceroute有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!traceroute 介绍traceroute 就如同它的名字一样,能够追踪到一个网络数据包传输经过的路由器路径。

这篇文章主要介绍linux中traceroute有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

traceroute 介绍

traceroute 就如同它的名字一样,能够追踪到一个网络数据包传输经过的路由器路径。这是 Linux 上的一个命令,windows 上类似的命令是  tracert。

tracert 默认使用 ICMP 包探测,traceroute 使用 UDP 包,也可以使用 ICMP 和 tcp 包探测,分别带上参数 -I和 -T  即可。

linux中traceroute有什么用

traceroute 主要用途

traceroute 利用 ICMP 差错报文,主要用来确定这几件事:

  • 确定通信双方路径上经过的路由器设备

  • 确定 UDP 包是否成功达到目的地

  • 发现路径 MTU

(1) 确定通信双方路径上经过的路由器设备 。利用 IP 包的 TTL 字段和超时类型的 ICMP 报文来实现。首先, traceroute 向目的地发送 IP  包,刚开始的时候,将 TTL 设置为 1,当经过第一个路由器时,TTL -1 = 0 引发超时错误,第一个路由器回复 ICMP  超时报文,源主机就可以知道路径第一个路由器的信息,随后 TTL 被设置为 2、3、4, ...,直到到达目的地,这样,沿途每个路由器都会向源主机回复 ICMP  超时报文, traceroute 就可以拿到所有的路由器信息了。

不过这里要 注意 ,并不是所有路由器都会返回 ICMP 报文,因为出于安全性考虑,大多数防火墙以及启用了防火墙功能的路由器都默认配置为不返回任何 ICMP  报文,管理员也会主动配置,所以这时使用 traceroute 就不一定能拿到所有路由器信息了。

(2) 确定包是否成功达到目的地 。使用上面的方法能拿到路由器信息,但并不能确定发的包是否到达目的地。traceroute 通过设置所发 UDP  包的端口号来解决了这个问题,因为 UDP 包的可用端口号范围 <3000,只要在发送 UDP 包的时候填入一个 >3000  的端口号,当包到达了目的地,但是由于端口不匹配,就会返回一个端口不可达的 ICMP 报文,这样源主机就可以确定包确实到了目的地了。

(3) 发现路径 MTU 。利用了 “需要分片但设置了不分片位” 类型的 ICMP 报文,如果某个源主机在发送一个 IP 包之前,对该 IP 包中的首部字段 DF  位设为 1,也就是“分片禁止位=1”,表示该包在传输的过程中不允许分片,如果中间某个路由器允许传输的最大路径 MTU  小于该包大小,就需要分片才能传输,但是由于设置了不分片位,路由器会将该包丢弃,并向源主机发送一个携带 MTU 信息的 ICMP  包,提醒源主机下次发包的大小不应超过该 MTU 的值。traceroute 就可以利用这种类型报文来逐一地确认传输路径上各个路由器之间的 MTU 值。

常用命令案例

traceroute 使用格式是:

traceroute「参数」「主机」

# traceroute --help  Usage:  traceroute [ -46dFITnreAUDV ] [ -f first_ttl ] [ -g gate,... ] [ -i device ] [ -m max_ttl ] [ -N squeries ] [ -p port ] [ -t tos ] [ -l flow_label ] [ -w MAX,HERE,NEAR ] [ -q nqueries ] [ -s src_addr ] [ -z sendwait ] [ --fwmark=num ] host [ packetlen ]

其中,选项主要有:

  • -4:使用 IPv4

  • -6:使用 IPv6

  • -d:开启 Socket 层的debug

  • -F:设置不分片位

  • -f first_ttl:设置第一跳 TTL 值,默认是1

  • -g gate:指定网关 gate 可路由的最大数据包数

  • -I:使用 ICMP echo 包探测

  • -T:使用 TCP SYN 包探测

  • -m max_ttl:设置 TTL 最大跳数,默认是 30

  • -N squeries:同时发送探测包的数量

  • -n:不进行 IP 到域名的解析

  • -p port:设置目的端口的值(默认是 33434),ICMP 就是设置初始序列号(默认为1 )

  • -t tos:设置 TOS 值(IPv6 是 TC 值)

  • -w  max,here,near:设置等待每一跳响应的时间,有三个值,max表示最大不能超过的时间(默认是5s),here表示同一跳时间的参考因子,near表示下一跳参考因子(这两个值意义不大)

  • -q nqueries:设置每一跳探测的次数,默认是 3

  • -r:绕过中间的路由探测,直接将包送达目的地

  • -s srcaddr:使用 srcaddr 作为发送包的源地址

  • --mtu:发现路径 MTU,等价于参数 -F-N1

① 最简单的用法

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  192.168.74.2 (192.168.74.2) 2.606 ms 2.771 ms 2.950 ms  211.151.56.57 (211.151.56.57) 0.596 ms 0.598 ms 0.591 ms  211.151.227.206 (211.151.227.206) 0.546 ms 0.544 ms 0.538 ms  210.77.139.145 (210.77.139.145) 0.710 ms 0.748 ms 0.801 ms  202.106.42.101 (202.106.42.101) 6.759 ms 6.945 ms 7.107 ms  61.148.154.97 (61.148.154.97) 718.908 ms * bt-228-025.bta.net.cn (202.106.228.25) 5.177 ms  124.65.58.213 (124.65.58.213) 4.343 ms 4.336 ms 4.367 ms  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  * * *  * * *  [root@localhost ~]#

可以看到,第一行输出探测的主机名和对应 IP,允许探测的最大跳数,以及发送的数据包字节数,后面每一行表示每一跳的信息,包括 IP 信息,3  个时延值(因为每一跳默认会发 3 次探测包)。

最后还会看到三个 ***,表示当前这一跳被防火墙过滤,探测包被丢弃。

② 设置 TTL 最大跳数:-m max_ttl

默认 TTL 是 30 跳。

[root@localhost ~]# traceroute -m 10 www.baidu.com  traceroute to www.baidu.com (61.135.169.105), 10 hops max, 40 byte packets  192.168.74.2 (192.168.74.2) 1.534 ms 1.775 ms 1.961 ms  211.151.56.1 (211.151.56.1) 0.508 ms 0.514 ms 0.507 ms  211.151.227.206 (211.151.227.206) 0.571 ms 0.558 ms 0.550 ms  210.77.139.145 (210.77.139.145) 0.708 ms 0.729 ms 0.785 ms  202.106.42.101 (202.106.42.101) 7.978 ms 8.155 ms 8.311 ms  bt-228-037.bta.net.cn (202.106.228.37) 772.460 ms bt-228-025.bta.net.cn (202.106.228.25) 2.152 ms 61.148.154.97 (61.148.154.97) 772.107 ms  124.65.58.221 (124.65.58.221) 4.875 ms 61.148.146.29 (61.148.146.29) 2.124 ms 124.65.58.221 (124.65.58.221) 4.854 ms  123.126.6.198 (123.126.6.198) 2.944 ms 61.148.156.6 (61.148.156.6) 3.505 ms 123.126.6.198 (123.126.6.198) 2.885 ms  * * *  * * *  [root@localhost ~]#

可以看到,最大跳数被该为 10 跳。

③ 每一跳不进行 DNS 解析,不显示主机名:-n

traceroute-n www.baidu.com

[root@localhost ~]# traceroute -n www.baidu.com  traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets  211.151.74.2 5.430 ms 5.636 ms 5.802 ms  211.151.56.57 0.627 ms 0.625 ms 0.617 ms  211.151.227.206 0.575 ms 0.584 ms 0.576 ms  210.77.139.145 0.703 ms 0.754 ms 0.806 ms  202.106.42.101 23.683 ms 23.869 ms 23.998 ms  202.106.228.37 247.101 ms * *  61.148.146.29 5.256 ms 124.65.58.213 4.386 ms 4.373 ms  202.106.35.190 1.610 ms 61.148.156.138 1.786 ms 61.148.3.34 2.089 ms  * * *  * * *  [root@localhost ~]#

可以看到相关的主机名已经去除。

④ 设置 UDP 端口号为 6666:-p

traceroute-p6666www.baidu.com

[root@localhost ~]# traceroute -p 6888 www.baidu.com  traceroute to www.baidu.com (220.181.111.147), 30 hops max, 40 byte packets  211.151.74.2 (211.151.74.2) 4.927 ms 5.121 ms 5.298 ms  211.151.56.1 (211.151.56.1) 0.500 ms 0.499 ms 0.509 ms  211.151.224.90 (211.151.224.90) 0.637 ms 0.631 ms 0.641 ms  * * *  220.181.70.98 (220.181.70.98) 5.050 ms 5.313 ms 5.596 ms  220.181.17.94 (220.181.17.94) 1.665 ms !X * *  [root@localhost ~]#

可以看到,报文到达了目的地,但是显示 !X,意思是“管理禁止通信”,对应 ICMP type=3,code=13  的报文。除此之外,还有以下这些标志:

  • !H、!N 、!P:分别表示 host、network、protocol 不可达

  • !S:源路由抑制(source route failed)

  • !F:需要分片但是没分片(fragmentation needed)

  • !V:违反主机优先级(host precedence violation)

  • !C:优先级终止生效(precedence cutoff in effect)

  • !\:ICMP 不可达代码(ICMP unreachable code \)

⑤ 设置探测包的个数:-q

traceroute-q4www.baidu.com

[root@localhost ~]# traceroute -q 4 www.baidu.com  traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets  211.151.74.2 (211.151.74.2) 40.633 ms 40.819 ms 41.004 ms 41.188 ms  211.151.56.57 (211.151.56.57) 0.637 ms 0.633 ms 0.627 ms 0.619 ms  211.151.227.206 (211.151.227.206) 0.505 ms 0.580 ms 0.571 ms 0.569 ms  210.77.139.145 (210.77.139.145) 0.753 ms 0.800 ms 0.853 ms 0.904 ms  202.106.42.101 (202.106.42.101) 7.449 ms 7.543 ms 7.738 ms 7.893 ms  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 *  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 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  * * * *  * * * *  [root@localhost ~]#

可以看到,每一跳探测输出了 4 个时延值。

⑥ 设置探测包的等待响应时间:-w

traceroute-w3www.baidu.com

[root@localhost ~]# traceroute -w 3 www.baidu.com  traceroute to www.baidu.com (61.135.169.105), 30 hops max, 40 byte packets  211.151.74.2 (211.151.74.2) 2.306 ms 2.469 ms 2.650 ms  211.151.56.1 (211.151.56.1) 0.621 ms 0.613 ms 0.603 ms  211.151.227.206 (211.151.227.206) 0.557 ms 0.560 ms 0.552 ms  210.77.139.145 (210.77.139.145) 0.708 ms 0.761 ms 0.817 ms  202.106.42.101 (202.106.42.101) 7.520 ms 7.774 ms 7.902 ms  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  124.65.58.221 (124.65.58.221) 4.490 ms 4.483 ms 4.472 ms  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  * * *  * * *  [root@localhost ~]#

⑦ 绕过中间的路由探测,直接将包送达目的地

traceroute-r www.baidu.com

[root@localhost ~]# traceroute -r www.baidu.com  traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets  Network is unreachable  [root@localhost ~]#

可以看到,直接显示网络不可达。

⑧ 探测路径 MTU

traceroute--mtu www.baidu.com

root@pclcache:~# traceroute --mtu www.baidu.com  traceroute to www.baidu.com (14.215.177.39), 30 hops max, 65000 byte packets  1 192.168.109.1 (192.168.109.1) 3.063 ms F=1500 2.908 ms *  2 192.168.98.36 (192.168.98.36) 1.686 ms 1.422 ms *  3 113.98.59.57 (113.98.59.57) 7.075 ms 7.544 ms 5.851 ms

可以看到,探测到 MTU F=1500。

以上是“linux中traceroute有什么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: linux中traceroute有什么用

本文链接: https://www.lsjlt.com/news/282014.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • linux中traceroute有什么用
    这篇文章主要介绍linux中traceroute有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!traceroute 介绍traceroute 就如同它的名字一样,能够追踪到一个网络数据包传输经过的路由器路径。...
    99+
    2023-06-16
  • Linux中traceroute命令怎么用
    这篇文章给大家分享的是有关Linux中traceroute命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux常用命令traceroute命令 用于追踪数据包在网络上的传输时的全部路径,它默认发送的...
    99+
    2023-06-28
  • Linux系统中traceroute命令怎么用
    这篇文章主要介绍Linux系统中traceroute命令怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在Linux系统中使用traceroute命令可以知道我们发送的信息你的计算机到互联网另一端的主机是走的什么...
    99+
    2023-06-28
  • Linux之traceroute命令的用法是什么
    traceroute命令是用来跟踪数据包在IP网络中的路径的工具。它发送一系列的数据包到目标主机,并显示这些数据包经过的每个中间路由...
    99+
    2023-10-22
    Linux
  • Linux中如何使用traceroute命令
    小编给大家分享一下Linux中如何使用traceroute命令,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Linux常用命令traceroute命令用于显示数据包到主机间的路径,traceroute指令让你追踪网络数据包...
    99+
    2023-06-28
  • 如何在Linux中使用traceroute命令
    这篇文章给大家介绍如何在Linux中使用traceroute命令,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.命令格式:traceroute[参数][主机]2.命令功能:traceroute指令让你追踪网络数据包的...
    99+
    2023-06-13
  • traceroute命令如何在Linux中使用
    本篇文章为大家展示了traceroute命令如何在Linux中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Linux traceroute命令使用方法实例详解一、默认使用的是UDP协议(300...
    99+
    2023-06-09
  • 如何使用Linux中traceroute命令
    本篇内容主要讲解“如何使用Linux中traceroute命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Linux中traceroute命令”吧!关于linux traceroute...
    99+
    2023-06-09
  • linux下traceroute命令怎么使用
    在Linux下,`traceroute`命令用于跟踪网络数据包从本地主机到目的主机的路径。下面是`traceroute`命令的使用方...
    99+
    2023-09-20
    linux
  • 非常有用的Linux网络诊断命令:traceroute
    简介 traceroute 是一个网络诊断工具,用于检测数据包从本机到目标主机经过的路由路径。它可以帮助我们分析出网络连接的瓶颈,定位网络问题,并帮助我们优化网络连接。在 Linux 系统中,trac...
    99+
    2023-09-30
    linux 网络 服务器
  • Linux中使用traceroute命令跟踪目标地址
    在Linux中,可以使用traceroute命令来跟踪目标地址。该命令可以显示数据包从本地主机到目标地址的路径,并显示每个中间节点(...
    99+
    2023-09-22
    Linux
  • Linux基础命令traceroute的用法
    这篇文章主要介绍“Linux基础命令traceroute的用法”,在日常操作中,相信很多人在Linux基础命令traceroute的用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux基础命令trac...
    99+
    2023-06-05
  • Linux中ACL有什么用
    这篇文章主要为大家展示了“Linux中ACL有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中ACL有什么用”这篇文章吧。ACL 是什么ACL的全称是 Access Contro...
    99+
    2023-06-12
  • linux中lvm有什么用
    这篇文章将为大家详细讲解有关linux中lvm有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言 每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各...
    99+
    2023-06-13
  • linux中Drawing有什么用
    这篇文章主要介绍了linux中Drawing有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 Drawing 是一个基本的图像编辑器,就像微软画图一样。有了这...
    99+
    2023-06-15
  • linux中Git有什么用
    这篇文章主要介绍了linux中Git有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。导航 &mdash;&mdash; 跳到之前的分支git ...
    99+
    2023-06-16
  • linux中Screen有什么用
    这篇文章主要介绍linux中Screen有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、screen命令是什么?Screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器。Screen中有会话...
    99+
    2023-06-13
  • Linux中file有什么用
    这篇文章主要为大家展示了“Linux中file有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中file有什么用”这篇文章吧。Linux file命令用于辨识文件类型。通过fil...
    99+
    2023-06-09
  • linux中scanimage有什么用
    这篇文章主要介绍了linux中scanimage有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。遇到 scanimage!scanimage 是一个命令行工具...
    99+
    2023-06-15
  • linux中perf有什么用
    这篇文章主要为大家展示了“linux中perf有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中perf有什么用”这篇文章吧。perf是linux系统中提供的性能分析工具,它基于...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作