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 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/332515.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端已死? Bootstrap--CSS组件

目录 Bootstrap 下载 Bootstrap--全局CSS样式 栅格系统 栅格参数 正常显示 实例 代码演示: 排版 代码演示 表格 代码演示 表单 代码演示 等等...(文档很清晰了) Bootstrap--组件 结合演示:(页面) Bootstrap Bootstrap v3 中文文档 Bootstrap 是最受欢迎的 HT…

leetcode:计数质数

class Solution { public:// 如果 x 是质数&#xff0c;那么大于 x 的 x 的倍数 2x,3x… 一定不是质数int countPrimes(int n) {vector<int> isPrime(n, 1);int ans 0;for (int i 2; i < n; i) {if (isPrime[i]) {ans 1;if ((long long)i * i < n) {for (int j …

二十九篇:构建未来:信息系统的核心框架与应用

构建未来&#xff1a;信息系统的核心框架与应用 1. 引言 在这个充满挑战和机遇的信息时代&#xff0c;信息系统已经成为现代组织不可或缺的神经中枢。它们不仅革新了我们处理信息的方式&#xff0c;更是极大地增强了决策制定的效率和质量。在这篇文章中&#xff0c;我将分享我…

C++ 常用UI库

AWTK github gitee doc scons 类似RT-Thread element github C Cross platfrom C GUI libraries&#xff0c;QT可替代方案。调试包 SDL GUI cegui 创作不易&#xff0c; 小小的支持一下吧&#xff01;

Qt 概述

Qt 背景介绍 什么是 Qt Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的&#xff0c;很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模式&#xff0c;开发者可以通过简单的拖拽和组合来实…

Kafka 安装教程和基本操作

一、简介 Kafka 是最初由 Linkedin 公司开发&#xff0c;是一个分布式、分区的、多副本的、多订阅者&#xff0c;基于 zookeeper 协调的分布式日志系统&#xff08;也可以当做 MQ 系统&#xff09;&#xff0c;常见可以用于 web/nginx 日志、访问日志&#xff0c;消息服务等等…

vue3快速入门(局部使用)

目录 前置知识JavaScript-导入导出 入门操作 变量渲染页面 局部使用vue的实现步骤 vue指令 v-for v-bind v-if v-show v-on v-model 生命周期 前置知识JavaScript-导入导出 正常情况在html导入js文件是全部导入&#xff0c;这样会导致性能上的损失 。 JS提供的…

5. C++网络编程-UDP协议的实现

UDP是无连接的。 UDP Server网络编程基本步骤 创建socket&#xff0c;指定使用UDP协议将socket与地址和端口绑定使用recv/send接收/发送数据 由于UDP是无连接的&#xff0c;直接侦听就行使用close关闭连接 这个UDP接收数据的时候用的API是recvfrom,发送数据是sendto 客户端 …

【html】网页布局模板01---简谱风

模板效果: 这是一种最简单,最干净的一种网页布局。 模板介绍: 模板概述: 这个模板是一个基础的网页布局模板,包括一个头部区域(header),其中包含网站标题(logo)和导航菜单(nav),以及一个页脚区域(copy),用于显示版权信息。整体布局简洁明了,适合作为各种类…

基于单片机设计的多功能数字电压表开发

摘 要&#xff1a;在电路设计中我们时常会用到电压表&#xff0c;过去大部分电压表还是模拟的&#xff0c;虽然精度较高但模拟电压表采用用指针式&#xff0c;里面是磁电或电磁式结构&#xff0c;所以响应较慢。为适应许多高速信号领域目前已广泛使用数字电压表。数字电压表的诞…

架构师系列-定时任务解决方案

定时任务概述 在很多应用中我们都是需要执行一些定时任务的&#xff0c;比如定时发送短信&#xff0c;定时统计数据&#xff0c;在实际使用中我们使用什么定时任务框架来实现我们的业务&#xff0c;定时任务使用中会遇到哪些坑&#xff0c;如何最大化的提高定时任务的性能。 我…

Meta发布Chameleon模型预览,挑战多模态AI前沿

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Jupyter Lab 软件安装与使用

软件简介 Jupyter Lab 软件是一个基于web 的交互式开发环境&#xff0c;集成了代码编辑器、终端、文件管理器等功能&#xff0c;使得开发者可以在一个界面中完成各种任务。JupyterLab是Jupyter Notebook的全面升级&#xff0c;是一个集文本编辑器、终端以及各种个性化组件于一…

企业如何做好 SQL 质量管理?

研发人员写 SQL 操作数据库想必一定是一类基础且常见的工作内容。如何避免 “问题” SQL 流转到生产环境&#xff0c;保证数据质量&#xff1f;这值得被研发/DBA/运维所重视。 什么是 SQL 问题&#xff1f; 对于研发人员来说&#xff0c;在日常工作中&#xff0c;大部分都需要…

【C/C++】Makefile文件的介绍与基本用法

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

重学java 46.集合 ① Collection集合

事常与人违&#xff0c;事总在人为 —— 24.5.26 集合 知识导航 1.集合的特点以及作用 2.使用collection接口中的方法 3.使用迭代器迭代集合 4.ArrayList以及LinkedList的使用 5.使用增强for遍历集合 一、单列集合框架的介绍 1.长度可变的容器&#xff1a;集合 2.集合的特点 a.…

神器EasyRecovery2024中文电脑版下载!让数据恢复不再难

在数字化时代&#xff0c;数据就是我们的财富。无论是重要的工作报告&#xff0c;还是那些珍贵的生活瞬间照片&#xff0c;或是我们与朋友间的聊天记录&#xff0c;都储存在我们的电脑或手机中。然而&#xff0c;有时候&#xff0c;意外总是突如其来&#xff0c;电脑突然崩溃&a…

汇编原理(二)

寄存器&#xff1a;所有寄存器都是16位&#xff08;0-15&#xff09;&#xff0c;可以存放两个字节 AX,BX,CX,DX存放一般性数据&#xff0c;称为通用寄存器 AX的逻辑结构。最大存放的数据为2的16次方减1。可分为AH和AL&#xff0c;兼容8位寄存器。 字&#xff1a;1word 2Byte…

DEM、DSM和DTM之间的区别及5米高程数据获取

在日常的学习工作中我们经常会遇到DEM、DSM和DTM等术语&#xff0c;它们的含义类似&#xff0c;甚至相互替换。那么它们之间有什么区别&#xff1f;这里我们对这些术语进行介绍。 DEM&#xff08;数字高程模型&#xff0c;Digital Elevation Model&#xff09;&#xff1a; 定义…

Java类

一.什么是类&#xff1f; 在src文件夹下面用一个Text类&#xff0c;这个Text就是这一个类的类名&#xff0c;所以说&#xff0c;一个Java文件里面就存在一个类&#xff0c;&#xff08;在Java中有一个习惯&#xff0c;一个Java文件里面&#xff0c;只写一个类&#xff09;。 &…