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

news2024/10/5 20:28:05

目录

一、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_ttl
                              Start 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=device
                              Specify a network interface to operate with
  -m max_ttl  --max-hops=max_ttl
                              Set the max number of hops (max TTL to be
                              reached). Default is 30
  -N squeries  --sim-queries=squeries
                              Set the number of probes to be tried
                              simultaneously (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 either
                              initial udp port value for "default" method
                              (incremented by each probe, default is 33434), or
                              initial seq for "icmp" (incremented as well,
                              default from 1), or some constant destination
                              port 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 (IPv6
                              traffic class) value for outgoing packets
  -l flow_label  --flowlabel=flow_label
                              Use specified flow_label for IPv6 packets
  -w waittime  --wait=waittime
                              Set the number of seconds to wait for response to
                              a probe (default is 5.0). Non-integer (float
                              point) values allowed too
  -q nqueries  --queries=nqueries
                              Set the number of probes per each hop. Default is
                              3
  -r                          Bypass the normal routing and send directly to a
                              host on an attached network
  -s src_addr  --source=src_addr
                              Use source src_addr for outgoing packets
  -z sendwait  --sendwait=sendwait
                              Minimal time interval between probes (default 0).
                              If the value is more than 10, then it specifies a
                              number in milliseconds, else it is a number of
                              seconds (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 and
                              print results directly after the corresponding
                              addresses
  -M name  --module=name      Use specified module (either builtin or external)
                              for traceroute operations. Most methods have
                              their shortcuts (`-I' means `-M icmp' etc.)
  -O OPTS,...  --options=OPTS,...
                              Use module-specific option OPTS for the
                              traceroute module. Several OPTS allowed,
                              separated by comma. If OPTS is "help", print info
                              about 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 port
                              is 53)
  -D  --dccp                  Use DCCP Request for tracerouting (default port
                              is 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 and
                              print if it differs
  -V  --version               Print version info and exit
  --help                      Read this help and exit

Arguments:
+     host          The host to traceroute to
      packetlen     The full packet length (default is the length of an IP
                    header plus 40). Can be ignored or increased to a minimal
                    allowed 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 packets
 1  gateway (192.168.1.254)  0.563 ms  0.667 ms  0.824 ms
 2  221.225.102.1 (221.225.102.1)  5.111 ms  5.075 ms  5.067 ms
 3  141.124.111.202.dial.sz.js.dynamic.163data.com.cn (202.111.124.141)  8.588 ms  8.627 ms  8.651 ms
 4  222.92.174.181 (222.92.174.181)  9.041 ms  9.085 ms  9.097 ms
 5  202.97.15.134 (202.97.15.134)  34.176 ms  35.279 ms 202.97.93.102 (202.97.93.102)  32.934 ms
 6  * * *
 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 packets
 1  gateway (192.168.1.254)  0.572 ms  0.641 ms  0.789 ms
 2  221.225.102.1 (221.225.102.1)  5.238 ms  5.261 ms  5.297 ms
 3  141.124.111.202.dial.sz.js.dynamic.163data.com.cn (202.111.124.141)  9.637 ms  9.673 ms  9.708 ms
 4  * * *
 5  202.97.15.134 (202.97.15.134)  34.953 ms * 202.97.15.138 (202.97.15.138)  35.193 ms
 6  * * *
 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 packets
 1  gateway (192.168.1.254)  0.518 ms  0.666 ms  0.842 ms
 2  221.225.102.1 (221.225.102.1)  4.837 ms  4.872 ms  4.913 ms
 3  141.124.111.202.dial.sz.js.dynamic.163data.com.cn (202.111.124.141)  9.723 ms  9.761 ms  9.801 ms
 4  * * *
 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.coloradmin.cn/o/1699235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STL库 —— unordered_set与unordered_map的封装

这里要对 unordered_set 与 unordered_map 进行封装,封装时使用的是上一篇中学的 HashBucket 。不仅要完成封装,同时要写入迭代器。 一、HashBucket 的修改 1.1 节点的修改 T 首先来认识一下使用 unordered_set 和 ordered_map 时的区别: …

基于物联网架构的电子小票服务系统

1.电子小票物联网架构 采用感知层、网络层和应用层的3层物联网体系架构模型,电子小票物联网的架构见图1。 图1 电子小票物联网架构 感知层的小票智能硬件能够取代传统的小票打印机,在不改变商家原有收银系统的前提下,采集收音机待打印的购物…

SDK——如何快速上手一个接口驱动任务(以iic为例)

如何快速上手一个接口驱动任务:(这里以iic为例) 文章目录 一、注意这里有一些基本概念需要知道:1.关于主从模式的选择(以iic为例)2.关于外设的中断模式(intr)和轮询模式(polled)2.1…

【学习心得】回归任务的评估指标决定系数R^2

一、决定系数是什么? scikit-learn库在进行回归任务的时候,进行模型评估时的score()方法,默认采取的是计算的是决定系数(Coefficient of Determination),通常表示为得分。这个值衡量了模型预测值与实际观测…

系统思考—问题分析与持续改进

刚刚为一家500强企业完成了《系统思考—问题分析与持续改进》的课程。学员们开始意识到,不能仅仅停留在冰山上层事件去解决问题,而是要深入观察隐藏在背后的趋势变化。学会如何识别系统中的深层次原因,并从全局视角来制定更加有效的改进策略。…

DockerNetwork

Docker Network Docker Network 是 Docker 引擎提供的一种功能,用于管理 Docker 容器之间以及容器与外部网络之间的网络通信。它允许用户定义和配置容器的网络环境,以便容器之间可以相互通信,并与外部网络进行连接。 Docker Network 提供了以…

vulnhub靶场之FunBox-8

一.环境搭建 1.靶场描述 Its a box for beginners and can be pwned in the lunch break. This works better with VirtualBox rather than VMware 2.靶场下载 Funbox: Lunchbreaker ~ VulnHub 3.靶场启动 二.信息收集 1.寻找靶场真实IP地址 nmap -sP 192.168.2.0/24 arp-…

正运动控制器:视觉纠偏和找孔

一、用户主界面CCD参数设置 通过主界面CCD参数设置,学习如何操作计算相机中心与电批中心的偏移量,以及相机标定的功能。 1、相机中心与电批中心的偏移量计算 1.1、在用户主界面点击CCD参数按钮,进入CCD设置界面。 主界面 CCD参数设置界面 1…

Python中tkinter入门编程9

在《Python中tkinter编程入门8-CSDN博客》中提到,tkinter中的Canvas表示画布,可以在画布中显示文字和图片。除了以上功能外,还可以在Canvas中添加对鼠标或键盘的响应。 1 为Canvas添加事件响应 可以通过Canvas的bind()方法添加对鼠标或键盘…

蓝桥杯-班级活动

题目描述 小明的老师准备组织一次班级活动。班上一共有 ( n ) 名(( n ) 为偶数)同学,老师想把所有的同学进行分组,每两名同学一组。为了公平,老师给每名同学随机分配了一个 ( n ) 以内的正整数作为 id,第 …

UCOSII_STM32F1移植详细过程(一)

UCOSII_STM32F1移植详细过程(一) 1、概述2、关于C/OS3、移植过程(文件描述与提取)1.软件工程文件夹描述2.提取工程中有用的文件3.提取ST标准外设库有用的文件2.新建、修改文件 1、概述 该文写针对初学C/OS的朋友,基于…

python数据分析-CO2排放分析

导入所需要的package import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import datetime %matplotlib inline plt.rcParams[font.sans-serif] [KaiTi] #中文 plt.rcParams[axes.unicode_minus] False #负号 数据清洗…

RedHat9 | DNS剖析-建立子域并进行区域委派

一、实验环境 1、委派DNS服务器 域名空间由多个域构成,DNS提供了将域名空间划分为1个或多个区域的方法,这样使得管理更加方便。在域的规模增大后,可以为域添加附加域,上级域为父域,下级域为子域,下列案例…

00Java准备工作

目录 JDK的安装目录 JAVA环境变量的配置 JDK的安装目录 目录名称说明bin该路径下存放了JDK的各种工具命令,javac和java就放在这个目录conf该路径下存放了JDK的相关配置文件include该路径下存放了一些平台特定的头文件jmods该路径下存放了JDK的各种模块legal该路径下存放了JD…

Windows下安装配置深度学习环境

Windows下安装配置深度学习环境 1. 准备工作 1.1 环境准备 操作系统:win10 22H2 GPU:Nvidia GeForce RTX 3060 12G 1.2 安装Nvidia驱动、cuda、cuDNN 下载驱动需要注册并登录英伟达账号。我这里将下面用到的安装包放到了百度网盘,可以关注微信…

【MATLAB】信号的熵

近似熵、样本熵、模糊熵、排列熵|、功率谱熵、奇异谱熵、能量熵、包络熵 代码内容: 获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复信号的熵本公众号致力于解决找代码难,写代码怵。各位有什么急需…

JavaRedis-主从集群-分片-数据结构-回收处理-缓存问题

一、主从集群 1.主从集群 主从集群读写分离,主能读能写,从只能读,读的数据是同步主的 docker搭建: docker-compose 这里设置网络模式为model,就直接暴露在了宿主机中,就不用映射端口了 不改就是默认的桥…

Java进阶学习笔记30——BigDecimal

BigDecimal: 用于解决浮点型运算的,出现结果失真的问题。 运行结果: package cn.ensource.d4_bigdecimal;import java.math.BigDecimal;public class Test {public static void main(String[] args) {// 目标:了解BigDecimal类do…

蓝桥楼赛第30期-Python-第三天赛题 统计学习数据题解

楼赛 第30期 Python 模块大比拼 统计学习数据 介绍 JSON(JavaScript Object Notation, /ˈdʒeɪsən/)是一种轻量级的数据交换格式,最初是作为 JavaScript 的子集被发明的,但目前已独立于编程语言之外,成为了通用的…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【00】补充

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【00】补充 WindowsCMD插件IDEAVsCode MavenvagrantDocker解决MySQL连接慢问题启动(自动)Docker注意切换到root用户远程访问MySQL MyBatisPlus代码地址参考 WindowsC…