Linux系统命令traceroute详解(语法、选项、原理和实例)

2024-05-26 23:52

本文主要是介绍Linux系统命令traceroute详解(语法、选项、原理和实例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、traceroute概述

二、语法

1、基本语法

2、命令选项

三、帮助信息

四、示例

1. 使用默认模式(ICMP Echo)追踪到目标主机

2. 使用UDP模式(需要root权限)追踪到目标主机

3. 不解析IP地址为主机名,直接显示IP地址

4. 探测包使用UDP,端口设置为6888

5. 设置查询次数为n次

6、跳数设置为m次

五、输出结果解释

六、工作原理

七、Traceroute的安装

八、使用traceroute的注意事项


一、traceroute概述

        在Linux系统下,traceroute是一个网络诊断工具,用于追踪一个数据包从源点到目的地所经过的路由路径。它通过向目的地发送一系列的 UDP ICMP 数据包,并记录每个数据包所经过的路由器,来显示数据包到达目的地的路径。

二、语法

1、基本语法

        traceroute的基本语法如下:

        traceroute [选项] 目标主机

        其中,

                [选项] 是可选的参数,用于定制traceroute的行为;

                目标主机 可以是目标主机的域名或IP地址。

2、命令选项

        Traceroute常用选项如下:

-I:使用ICMP Echo模式发送数据包。这是traceroute命令的默认模式。

-U:使用UDP模式发送数据包。该模式下的traceroute命令需要以root权限运行。

-T:使用TCP模式发送数据包。同样,该模式下的traceroute命令需要以root权限运行。

-n:不要解析IP地址为主机名,以IP地址形式显示主机名。

-s 源地址:指定源地址,可以是主机名或IP地址。

-p 端口号:指定源端口,以查找防火墙规则或过滤器的规则对目标主机的响应是否过滤。默认端口号通常为33434(UDP模式)。

-q 查询次数:设置查询次数,默认值为3。每次查询会增加TTL值,直到到达目标主机或达到最大的TTL值。

-m 跳数:设置最大的TTL值,默认值为30。该值指定了数据包能经过的最大路由器数量。当数据包的TTL值达到该值时,数据包会被丢弃。

-w 等待时间:指定每个数据包的超时时间。

三、帮助信息

        在linux的命令行输入

                traceroute  --help

        结果如下:

[root@localhost ~]# 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 waittime ] [ -q nqueries ] [ -s src_addr ] [ -z sendwait ] [ --fwmark=num ] host [ packetlen ]
Options:-4                          Use IPv4-6                          Use IPv6-d  --debug                 Enable socket level debugging-F  --dont-fragment         Do not fragment packets-f first_ttl  --first=first_ttlStart from the first_ttl hop (instead from 1)-g gate,...  --gateway=gate,...Route packets through the specified gateway(maximum 8 for IPv4 and 127 for IPv6)-I  --icmp                  Use ICMP ECHO for tracerouting-T  --tcp                   Use TCP SYN for tracerouting (default port is 80)-i device  --interface=deviceSpecify a network interface to operate with-m max_ttl  --max-hops=max_ttlSet the max number of hops (max TTL to bereached). Default is 30-N squeries  --sim-queries=squeriesSet the number of probes to be triedsimultaneously (default is 16)-n                          Do not resolve IP addresses to their domain names-p port  --port=port        Set the destination port to use. It is eitherinitial udp port value for "default" method(incremented by each probe, default is 33434), orinitial seq for "icmp" (incremented as well,default from 1), or some constant destinationport for other methods (with default of 80 for"tcp", 53 for "udp", etc.)-t tos  --tos=tos           Set the TOS (IPv4 type of service) or TC (IPv6traffic class) value for outgoing packets-l flow_label  --flowlabel=flow_labelUse specified flow_label for IPv6 packets-w waittime  --wait=waittimeSet the number of seconds to wait for response toa probe (default is 5.0). Non-integer (floatpoint) values allowed too-q nqueries  --queries=nqueriesSet the number of probes per each hop. Default is3-r                          Bypass the normal routing and send directly to ahost on an attached network-s src_addr  --source=src_addrUse source src_addr for outgoing packets-z sendwait  --sendwait=sendwaitMinimal time interval between probes (default 0).If the value is more than 10, then it specifies anumber in milliseconds, else it is a number ofseconds (float point values allowed too)-e  --extensions            Show ICMP extensions (if present), including MPLS-A  --as-path-lookups       Perform AS path lookups in routing registries andprint results directly after the correspondingaddresses-M name  --module=name      Use specified module (either builtin or external)for traceroute operations. Most methods havetheir shortcuts (`-I' means `-M icmp' etc.)-O OPTS,...  --options=OPTS,...Use module-specific option OPTS for thetraceroute module. Several OPTS allowed,separated by comma. If OPTS is "help", print infoabout available options--sport=num                 Use source port num for outgoing packets. Implies`-N 1'--fwmark=num                Set firewall mark for outgoing packets-U  --udp                   Use UDP to particular port for tracerouting(instead of increasing the port per each probe),default port is 53-UL                         Use UDPLITE for tracerouting (default dest portis 53)-D  --dccp                  Use DCCP Request for tracerouting (default portis 33434)-P prot  --protocol=prot    Use raw packet of protocol prot for tracerouting--mtu                       Discover MTU along the path being traced. Implies`-F -N 1'--back                      Guess the number of hops in the backward path andprint if it differs-V  --version               Print version info and exit--help                      Read this help and exitArguments:
+     host          The host to traceroute topacketlen     The full packet length (default is the length of an IPheader plus 40). Can be ignored or increased to a minimalallowed value
[root@localhost ~]#
[root@localhost ~]#

四、示例

1. 使用默认模式(ICMP Echo)追踪到目标主机

        traceroute www.vidisit.cn

        实际操作如下:

[root@localhost ~]# traceroute vidisit.cn
traceroute to vidisit.cn (118.123.16.102), 30 hops max, 60 byte packets1  gateway (192.168.1.254)  0.563 ms  0.667 ms  0.824 ms2  221.225.102.1 (221.225.102.1)  5.111 ms  5.075 ms  5.067 ms3  141.124.111.202.dial.sz.js.dynamic.163data.com.cn (202.111.124.141)  8.588 ms  8.627 ms  8.651 ms4  222.92.174.181 (222.92.174.181)  9.041 ms  9.085 ms  9.097 ms5  202.97.15.134 (202.97.15.134)  34.176 ms  35.279 ms 202.97.93.102 (202.97.93.102)  32.934 ms6  * * *7  * * *8  * * *9  * * *
10  118.123.16.102 (118.123.16.102)  34.674 ms !X  35.554 ms !X  34.200 ms !X
[root@localhost ~]#
[root@localhost ~]#

2. 使用UDP模式(需要root权限)追踪到目标主机

        sudo traceroute -U vidisit.cn


        实际操作如下:

[root@localhost ~]# traceroute -U vidisit.cn
traceroute to vidisit.cn (118.123.16.102), 30 hops max, 60 byte packets1  gateway (192.168.1.254)  0.572 ms  0.641 ms  0.789 ms2  221.225.102.1 (221.225.102.1)  5.238 ms  5.261 ms  5.297 ms3  141.124.111.202.dial.sz.js.dynamic.163data.com.cn (202.111.124.141)  9.637 ms  9.673 ms  9.708 ms4  * * *5  202.97.15.134 (202.97.15.134)  34.953 ms * 202.97.15.138 (202.97.15.138)  35.193 ms6  * * *7  * * *8  * * *9  * * *
10  118.123.16.102 (118.123.16.102)  36.319 ms !X  36.426 ms !X  38.104 ms !X
[root@localhost ~]#

3. 不解析IP地址为主机名,直接显示IP地址

        命令如下:

        traceroute -n www.vidisit.cn

4. 探测包使用UDP,端口设置为6888

        命令如下:

        traceroute -p 6888 www.vidisit.cn

5. 设置查询次数为n次

        也就是把探测包的个数设置为值n,命令如下:

         traceroute -q 5 www.example.com

6、跳数设置为m次

        命令如下:

        traceroute -m 10 www.vidisit.cn

        输出如下:

[root@localhost ~]# traceroute -m  5 vidisit.cn
traceroute to vidisit.cn (118.123.16.102), 5 hops max, 60 byte packets1  gateway (192.168.1.254)  0.518 ms  0.666 ms  0.842 ms2  221.225.102.1 (221.225.102.1)  4.837 ms  4.872 ms  4.913 ms3  141.124.111.202.dial.sz.js.dynamic.163data.com.cn (202.111.124.141)  9.723 ms  9.761 ms  9.801 ms4  * * *5  202.97.93.110 (202.97.93.110)  33.380 ms 202.97.15.110 (202.97.15.110)  35.038 ms 202.97.92.250 (202.97.92.250)  34.232 ms
[root@localhost ~]#

五、输出结果解释

        traceroute的输出结果通常分为多列,每列代表一个“跳点”(即数据包经过的路由器或主机)。每一行代表一个跳点,通常包括:

 (1)跳点的序号(从1开始)。

 (2)该跳点的IP地址。

 (3)主机名(如果使用了-n选项,则不会显示主机名)。

 (4)三个时间值(ms),分别代表三次尝试到达该跳点所需的时间。如果某个时间值为星号,则表示该次尝试超时。

六、工作原理

        Traceroute的工作原理主要基于ICMPInternet Control Message Protocol)和IP头部的TTLTime To Live)字段。如下图所示:

        Traceroute通过发送不同TTL值的IP数据包来追踪数据包从源主机(源主机SA)到目的主机(目标主机DA)所经过的路由。

        具体来说,第一步,Traceroute首先发送一个TTL1IP数据包,这个数据包的TTL每经过一个路由器时减1,直到TTL变为0,此时路由器会将该数据包丢弃并返回一个ICMP超时消息给源主机。Traceroute接收到这个ICMP消息后,就知道该路由器存在于路径上。

        接着,第2步,Traceroute会发送下一个TTL2IP数据包,以此类推,直到数据包到达目的主机(目标主机DA)。

        当数据包到达目的(主机目标主机DA)时,目的主机的操作系统会返回一个ICMP不可达消息,因为目的主机的端口号通常不会用于Traceroute发送的UDP数据包。这样,Traceroute就能知道目的主机已经到达。

        此外,Traceroute还可以通过发送UDP数据包来检测目的主机的可达性。这些UDP数据包的端口号通常是一个大于30000的随机值,以避免与常规应用程序的端口冲突。当这些UDP数据包到达目的主机时,目的主机的操作系统会返回一个ICMP不可达消息,表明UDP数据包的目的端口不可达。

        Traceroute通过这种方式,可以记录下从源主机到目的主机所经过的每个路由器的IP地址,以及每个路由器处理数据包的时间。这样,用户就可以看到数据包从源到目的地的完整路径。

七、Traceroute的安装

        在CentOS系统中,traceroute 通常可以通过包管理器安装。对于大多数CentOS版本,traceroute 可能已经预装,如果没有安装,可以使用 yum 包管理器安装。

        sudo yum install traceroute

        实际操作如下:

[root@localhost ~]# yum install traceroute
已加载插件:fastestmirror
Determining fastest mirrors
epel/x86_64/metalink                                                                                                                      | 6.2 kB  00:00:00* base: mirrors.ustc.edu.cn* epel: mirrors.tuna.tsinghua.edu.cn* extras: mirrors.nju.edu.cn* updates: mirrors.nju.edu.cn
base                                                                                                                                      | 3.6 kB  00:00:00
epel                                                                                                                                      | 4.3 kB  00:00:00
extras                                                                                                                                    | 2.9 kB  00:00:00
updates                                                                                                                                   | 2.9 kB  00:00:00
(1/4): epel/x86_64/updateinfo                                                                                                             | 1.0 MB  00:00:02
(2/4): updates/7/x86_64/primary_db                                                                                                        |  27 MB  00:00:03
(3/4): epel/x86_64/group                                                                                                                  | 399 kB  00:00:03
(4/4): epel/x86_64/primary_db                                                                                                             | 8.7 MB  00:00:19
正在解决依赖关系
--> 正在检查事务
---> 软件包 traceroute.x86_64.3.2.0.22-2.el7 将被 安装
--> 解决依赖关系完成依赖关系解决=================================================================================================================================================================Package                                 架构                                版本                                        源                                 大小
=================================================================================================================================================================
正在安装:traceroute                              x86_64                              3:2.0.22-2.el7                              base                               59 k事务概要
=================================================================================================================================================================
安装  1 软件包总下载量:59 k
安装大小:92 k
Is this ok [y/d/N]: y
Downloading packages:
traceroute-2.0.22-2.el7.x86_64.rpm                                                                                                        |  59 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在安装    : 3:traceroute-2.0.22-2.el7.x86_64                                                                                                             1/1验证中      : 3:traceroute-2.0.22-2.el7.x86_64                                                                                                             1/1已安装:traceroute.x86_64 3:2.0.22-2.el7完毕!
[root@localhost ~]#
[root@localhost ~]#

八、使用traceroute的注意事项

        在使用UDP或TCP模式时,traceroute可能会受到防火墙或安全设备的限制,因为这些模式需要发送额外的数据包。

         ICMP Echo模式(默认模式)通常较为通用,但也可能在某些情况下受到限制。

        在使用traceroute命令时,请确保您有权访问目标主机,并尊重目标主机的网络安全策略。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


这篇关于Linux系统命令traceroute详解(语法、选项、原理和实例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005942

相关文章

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完