【Linux】网络诊断 traceroute命令详解

目录

一、traceroute概述

1.1 traceroute命令简介

1.2 命令格式

1.3 原理

1.4 命令功能

二、使用实例

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

实例2:跳数设置

实例3:设置探测数据包数量

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

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

实例6:探测包使用的基本UDP端口设置6888


网络诊断相关命令或工具使用:

【Linux】网络诊断 ping命令详解_linux ping-CSDN博客

【网络】抓包工具Wireshark下载安装和基本使用教程-CSDN博客

【网络】网络层ICMP协议-CSDN博客


一、traceroute概述


1.1 traceroute命令简介


traceroute跟踪从IP网络到给定主机的路由数据包。它利用IP协议的生存时间(TTL)字段,并尝试从通往主机的路径上的每个网关引出ICMP TIME_EXCEEDED响应,它默认发送的数据包大小是60字节(IPv4,CentOS7.X)。

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

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

traceroute hostname

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

tracert hostname

1.2 命令格式


官方释义翻译:

traceroute跟踪从IP网络到给定主机的路由数据包。它利用IP协议的生存时间(TTL)字段,并尝试从通往主机的路径上的每个网关引出ICMP TIME_EXCEEDED响应。

traceroute唯一需要的参数是目标主机的名称或IP地址。可选的packet_length是探测报文的总大小(IPv4默认60字节,IPv6默认80字节)

程序试图通过启动带有TTL(生存时间)的探测数据包来跟踪IP数据包将遵循的路由到某些internet主机,然后侦听来自网关的ICMP“超时”回复。我们以ttl为1开始探测,然后再增加1,直到我们得到ICMP“端口不可达”(或TCP重置),这意味着我们到达了“主机”,或者达到了最大值(默认为30跳)。每个ttl设置发送三个探测(默认情况下) 打印出一行显示ttl、网关地址和每个探针的往返时间。如果需要,可以在地址后面加上其他信息。如果探测答案来自不同的网关,则将打印每个响应系统的地址。如果在5.0秒(默认)内没有响应,则为该探测打印“*”(星号)。

在行程时间之后,可以打印一些附加的注释:!H, !N,或!P(主机,网络或协议不可达),!S(源路由失败),!F(需要分片),!X(管理禁止通信),!V(主机优先级违反),!C(优先级有效切断),或!<num> (ICMP不可达代码<num>)。如果几乎所有探测都导致某种不可达,traceroute将放弃并退出。

1.3 原理


traceroute程序完整过程:首先它发送一份TTL字段为1的IP数据包给目的主机,处理这个数据包的第一个路由器将TTL值减1,然后丢弃该数据报,并给源主机发送一个ICMP报文(“超时”信息,这个报文包含了路由器的IP地址,这样就得到了第一个路由器的地址),然后traceroute发送一个TTL为2的数据报来得到第二个路由器的IP地址,继续这个过程,直至这个数据报到达目的主机。

如图所示,在IPv4中,ICMP报文属于IP子协议,协议(Protocal)字段值为1表示该报文携带了ICMPv4。

如图所示,为ICMPv4的报文格式。所有的ICMP报文都以8位的类型(Type)和代码(Code)字段开始,其后的16位校验和(CheckSum)字段涵盖了整个报文。

其中各字段的含义如下:

  • 类型(Type):指定 ICMP 报文的类型,占 1 个字节。常见类型有:回显应答(Echo Reply:0)、回显请求(Echo Request:8)等。
  • 代码(Code):指定 ICMP 报文的代码,占 1 个字节。用于进一步描述 ICMP 报文,与 Type 字段组合使用。
  • 校验和(Checksum):校验和,用于检查 ICMP 报文是否有损坏,占 2 个字节。
  • 数据(Data):数据,可变长度。可以是任意数据,长度由具体的 ICMP 报文类型和代码决定。

基于ICMP报文的traceroute是这样实现的:让你在客户端输入 traceroute 命令+ip时, 客户端就发起一个ICMP回显请求报文,第一个数据包,TTL=1,这样第一跳路由器收到后,要转发出去时,会将TTL减一,即TTL=0, 就丢弃,然后第一跳路由器就返回一个ICMP超时的错误信息,客户端收到后,会判断是否收到ICMP 回显应答 报文? 如果还没收到,就会继续发送回显请求报文,TTL加1进行尝试,当到底服务器后,服务器就会发送ICMP 回显应答报文。

1、客户端发送第一个TTL=1的ICMP 回显请求报文,第1跳路由器收到后,查看目的地址进行转发,转发前会将TTL会减1,减完后TTL=0,就丢弃该数据包,并向客户端返回TTL超时的ICMP报文。客户端收到,TTL超时ICMP报文,从报文里面的源地址,得到第1跳地址:10.10.10.10

2、由于客户端发现还没收到回显应答的ICMP报文,于是继续尝试发送,TTL进行加1。第1跳路由器收到后,根据目的地址进行转发,转发出去时,TTL减1,减完后TTL=1。第2跳路由器收到后,查看目的地址进行转发,转发前会将TTL会减1,减完后TTL=0,就丢弃该数据包,并向客户端返回TTL超时的ICMP报文。
 

客户端收到,TTL超时ICMP报文,从报文里面的源地址,得到第2跳地址:20.20.20.20

3、由于客户端仍然还没收到 回显应答 的ICMP报文,于是继续尝试发送,TTL进行加1。第1跳路由器收到后,根据目的地址进行转发,转发出去时,TTL减1,减完后TTL=2。第2跳路由器收到后,查看目的地址进行转发,转发前会将TTL会减1,减完后TTL=1, TTL不是0,路由器就继续转发。数据包终于到达服务器啦!服务器查看目的地址,就是找我的,于是继续解封装,查看IP数据部分(ICMP),发现是回显请求的ICMP报文,于是向客户端发送一个 回显应答的ICMP报文。

客户端收到,回显应答的ICMP报文,确认UDP数据包已成功到达服务器了,traceroute结束,并记录源IP地址:192.168.2.1

1.4 命令功能


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

具体参数格式:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

命令参数:

参数

释义

-d

使用Socket层级的排错功能。

-f

设置第一个检测数据包的存活数值TTL的大小。

-F

不要分割数据包。

-g

设置来源路由网关,最多可设置8个。

-i

使用指定的网络界面送出数据包。

-I

使用ICMP ECHO进行跟踪路由

-T

使用TCP SYN进行跟踪路由(默认端口为80)

-m

设置检测数据包的最大存活数值TTL的大小。

-N

同时发送探测报文的个数。同时发送多个探针可以提高速度traceroute很大。默认值为16。

-n

直接使用IP地址而非主机名称。

-p

设置UDP传输协议的通信端口。

-r

忽略普通的Routing Table,直接将数据包送到远端主机上。

-s

设置本地主机送出数据包的IP地址。

-t

设置检测数据包的TOS数值。

-v

详细显示指令的执行过程。

-w

设置等待远端主机回报的时间。

-x

开启或关闭数据包的正确性检验。


二、使用实例


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

命令:

traceroute www.baidu.com 

输出:

[root@hdp105 ~]#  traceroute www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 30 hops max, 60 byte packets1  * * *2  * * *3  124.89.90.205 (124.89.90.205)  4.446 ms  4.398 ms  3.707 ms4  123.139.0.85 (123.139.0.85)  3.225 ms 123.139.1.29 (123.139.1.29)  12.200 ms 123.139.1.177 (123.139.1.177)  2.085 ms5  * 221.11.0.145 (221.11.0.145)  35.491 ms *6  219.158.111.233 (219.158.111.233)  33.572 ms * 221.11.0.45 (221.11.0.45)  33.728 ms7  110.242.66.166 (110.242.66.166)  65.619 ms 110.242.66.170 (110.242.66.170)  65.541 ms *8  110.242.66.178 (110.242.66.178)  20.313 ms 221.194.45.134 (221.194.45.134)  20.487 ms 110.242.66.182 (110.242.66.182)  19.403 ms9  221.194.45.134 (221.194.45.134)  22.095 ms * 221.194.45.130 (221.194.45.130)  19.838 ms.....
29  * * *
30  * * *

说明:

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

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

实例2:跳数设置

命令:限制路由经过 10跳停止

traceroute -m 10 www.baidu.com

输出:

[root@hdp105 ~]# traceroute -m 10 www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 10 hops max, 60 byte packets1  * * *2  * * *3  124.89.90.205 (124.89.90.205)  5.417 ms  5.530 ms  5.287 ms4  123.139.1.29 (123.139.1.29)  1.992 ms 123.139.1.177 (123.139.1.177)  1.968 ms 123.139.2.161 (123.139.2.161)  1.945 ms5  * 221.11.0.1 (221.11.0.1)  2.090 ms *6  219.158.111.233 (219.158.111.233)  35.322 ms 221.11.0.69 (221.11.0.69)  28.003 ms *7  219.158.111.233 (219.158.111.233)  33.298 ms  33.255 ms *8  221.194.45.130 (221.194.45.130)  20.088 ms 110.242.66.170 (110.242.66.170)  20.029 ms 221.194.45.130 (221.194.45.130)  20.582 ms9  * * 221.194.45.134 (221.194.45.134)  21.801 ms
10  * * *
[root@hdp105 ~]# 

实例3:设置探测数据包数量

命令:限制路由经过 10跳且 每一跳发送4个探测数据包

[root@hdp105 ~]# traceroute -q 4 -m 10 www.baidu.com
traceroute to www.baidu.com (110.242.68.3), 10 hops max, 60 byte packets1  * * * *2  * * * *3  124.89.90.205 (124.89.90.205)  3.536 ms  3.507 ms  2.734 ms  3.425 ms4  * * * 123.139.2.37 (123.139.2.37)  2.599 ms5  221.11.0.1 (221.11.0.1)  2.756 ms  2.727 ms  5.096 ms  7.570 ms6  * 221.11.0.169 (221.11.0.169)  22.440 ms 221.11.0.69 (221.11.0.69)  27.588 ms *7  * 110.242.66.186 (110.242.66.186)  25.913 ms 219.158.111.233 (219.158.111.233)  21.579 ms 110.242.66.178 (110.242.66.178)  20.378 ms8  221.194.45.130 (221.194.45.130)  23.732 ms 110.242.66.162 (110.242.66.162)  20.793 ms 221.194.45.130 (221.194.45.130)  20.476 ms  23.077 ms9  221.194.45.134 (221.194.45.134)  24.247 ms * * *
10  * * * *
[root@hdp105 ~]# 

如下图可以看到 发送4个探测数据包 输出了 4个数据包的时间

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

命令:

traceroute -n -m 10 www.baidu.com

输出:

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

命令:

traceroute -r www.baidu.com

输出:

实例6:探测包使用的基本UDP端口设置6888

命令:

traceroute -p 6888 www.baidu.com

输出:

[root@hdp105 ~]# traceroute -p 6888 -m 10 www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 10 hops max, 60 byte packets1  * * *2  * * *3  124.89.90.205 (124.89.90.205)  2.079 ms  2.502 ms  2.440 ms4  123.139.0.85 (123.139.0.85)  2.280 ms 123.139.2.161 (123.139.2.161)  1.945 ms 123.139.1.29 (123.139.1.29)  2.212 ms5  * 221.11.0.53 (221.11.0.53)  27.007 ms *6  221.11.0.97 (221.11.0.97)  22.444 ms * *7  110.242.66.170 (110.242.66.170)  20.305 ms * *8  110.242.66.174 (110.242.66.174)  20.119 ms 221.194.45.130 (221.194.45.130)  19.840 ms 221.194.45.134 (221.194.45.134)  21.036 ms9  * 221.194.45.130 (221.194.45.130)  20.001 ms *
10  * * *
[root@hdp105 ~]# 

参考文章:

【Linux】网络诊断 ping命令详解_linux ping-CSDN博客

traceroute 命令,Linux traceroute 命令详解:显示数据包到主机间的路径 - Linux 命令搜索引擎

Linux命令:traceroute命令(路由跟踪)-CSDN博客

原文链接:linux网络命令--traceroute_traceroute命令详解-CSDN博客

动态图解 | 9分钟让你明明白白看懂Traceroute(路由追踪)的原理与实现

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

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

相关文章

一小时掌握:使用ScrapySharp和C#打造新闻下载器

引言 爬虫技术是指通过编程的方式&#xff0c;自动从互联网上获取和处理数据的技术。爬虫技术有很多应用场景&#xff0c;比如搜索引擎、数据分析、舆情监测、电商比价等。爬虫技术也是一门有趣的技术&#xff0c;可以让你发现网络上的各种有价值的信息。 本文将介绍如何使用…

leetcode 142 环形链表II

题目 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使…

C语言经典算法之简单选择排序算法

目录 前言 建议&#xff1a; 简介&#xff1a; 一、代码实现 二、时空复杂度&#xff1a; 时间复杂度&#xff1a; 空间复杂度&#xff1a; 三、算法的特性&#xff1a; 四、总结 前言 建议&#xff1a; 1.学习算法最重要的是理解算法的每一步&#xff0c;而不是记住…

MySQl导入与导出远程备份

文章目录 一. navicat导入导出 二. mysqldump命令导入导出导入导出 三. load data infile命令导入导出导入导出 四. 远程备份导入导出思维导图 一. navicat 导入 右键——>运行SQL文件 导出 选中要导出的表➡右键➡转储SQL文件➡数据和结构 二. mysqldump命令导入导出…

Oracle全系列版本官网下载保姆及教程

Oracle全系列版本官网下载方法 下面以下载Oracle12cR2为例说明下载的整个过程。 基本步骤如下&#xff1a; 先注册一个Oracle账号并登录&#xff1b;进入到客户下载页面搜索要下载的数据库版本&#xff1b;得到Oracle下载器(Oracle_SSN_DML_xxxxx.exe)&#xff0c;注意&#xf…

智慧公厕:颠覆传统公共厕所管理的未来之路

公共卫生设施一直是城市管理中的重要环节&#xff0c;而智慧公厕作为一种全新的公用卫生设施&#xff0c;以其融合了物联网、大数据、云计算等新型信息技术的特点&#xff0c;引起了人们的广泛关注。通过智能化手段的管理和服务&#xff0c;智慧公厕不仅解决了传统公厕中存在的…

微机原理常考填空以及注意事项

以下&#xff1a; 1&#xff0c;两条高位地址线未参加地址译码&#xff0c;则对应的地址范围它的容量是多少倍&#xff1f; 答&#xff1a;公式CPU的地址线&#xff08;假设16位&#xff09;&#xff08;它的低位地址线一般进入片内A0~A10&#xff0c;高位A11就是A、A12就是B、…

DNS

目录 一、名字解析介绍和DNS 1.1.什么是DNS 1.2.域名体系结构 1.3.DNS查询方式 1.4.DNS解析过程 1.5.DNS服务器类型 二、安装配置 2.1.DNS软件bind 2.2.修改权限 和 监听地址 2.3.手写域名配置文件 2.4.手写数据库配置文件 2.5检测文件格式的命令 一、名字解析介绍和…

【OpenCV学习笔记12】- 更改颜色空间

关于 OpenCV 官方文档的核心操作告一段落&#xff0c;接下来开始图像处理的学习。学习笔记中会记录官方给出的例子&#xff0c;也会给出自己根据官方的例子完成的更改代码&#xff0c;同样彩蛋的实现也会结合多个知识点一起实现一些小功能&#xff0c;来帮助我们对学会的知识点…

【数学建模美赛M奖速成系列】数据可视化(二)

数据可视化&#xff08;二&#xff09; 写在前面百分比堆叠线条图优点缺点实现pythonmatlab 火山图优点实现pythonmatlab 最后 写在前面 上一篇文章为大家分享了山脊图和气泡图的绘图方法与代码&#xff0c;这里学姐为继续为大家分享百分比堆叠线条图和火山图&#xff0c;包含…

R语言【文章复现】——集成式地绘制高分辨率的多样性分布图,对方法的检验和优化,以及处理思路的思考

参考文献 本文对一篇 2022 年发表在 New Phytologist 的绘图方法文章中的技术路线进行复现。 An integrated high-resolution mapping shows congruent biodiversity patterns of Fagales and Pinales Summary 文中,作者针对在全球尺度上绘制物种分布图提出了一种全新的方法…

华为网络设备 通过路由器子接口 Dot1q终结子接口实现跨VLAN通信

(二层交换机直接跳过三层交换价接入路由器时才使用该配置。推荐使用三层交换机建立VLANIF配置更简洁明了。如果VLAN较少可直接配置&#xff1b;路由器接口&#xff0c;一个物理接口一个VLAN) S1配置 vlan batch 2 to 3interface GigabitEthernet0/0/1port link-type trunkpor…

为什么代码里需要try/catch

throw 语句用来抛出一个用户自定义的异常,在抛出错误时&#xff0c;throw 之后的语句将不会执行 const getApi (data) > {if (isNaN(data)) {throw new Error(Parameter is not a number!);console.log(bar) // 这句永远不会执行&#xff0c;throw之后的代码都不会}}情况一…

[Python练习]使用Python爬虫爬取豆瓣top250的电影的页面源码

1.安装requests第三方库 在终端中输入以下代码&#xff08;直接在cmd命令提示符中&#xff0c;不需要打开Python&#xff09; pip install requests -i https://pypi.douban.com/simple/ 从豆瓣网提供的镜像网站下载requests第三方库 pip install requests 是从国外网站下…

喜报 ,思迈特荣获广东省“专精特新”企业认定,再创新高

近日&#xff0c;广东省工业和信息化厅发布 2023年专精特新中小企业名单&#xff0c;思迈特软件凭借专业技术实力、创新研发能力、行业影响力以及卓越的企业文化&#xff0c;经过层层选拔&#xff0c;荣获广东省“专精特新”企业认定。思迈特商业智能与大数据分析软件成功上架&…

智能制造工业互联网建设方案——青创智通工业物联网

智能制造已经成为工业发展的重要趋势。智能制造系统架构与工业物联网建设方案作为实现智能制造的关键环节&#xff0c;对于推动工业转型升级和提升企业竞争力具有重要意义。青创智通工业物联网重点探讨智能制造系统架构与工业物联网建设方案的核心要素、实施步骤和未来发展方向…

MySQL进阶篇(六)InnoDB 引擎

一、逻辑存储结构 &#xff08;1&#xff09;表空间 表空间是 InnoDB 存储引擎逻辑结构的最高层&#xff0c; 如果用户启用了参数 innodb_file_per_table(在 8.0版本中默认开启) &#xff0c;则每张表都会有一个表空间&#xff08;xxx.ibd&#xff09;&#xff0c;一个 mysql 实…

可视可交互!在全志H618上用OpenCV读取图像显示到PyQt5窗口上

OpenCV能够处理图像、视频、深度图像等各种类型的视觉数据&#xff0c;在某些情况下&#xff0c;尽管OpenCV可以显示窗口&#xff0c;但PyQt5可能更适合用于创建复杂的交互式应用程序&#xff0c;而自带GPU的H618就成为了这些图像显示的最佳载体。 这里分享一个代码&#xff0…

高精度PWM脉宽调制信号转模拟信号隔离变送器1Hz~10KHz转0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA

主要特性: >>精度等级&#xff1a;0.1级。产品出厂前已检验校正&#xff0c;用户可以直接使用 >>辅助电源&#xff1a;8-32V 宽范围供电 >>PWM脉宽调制信号输入: 1Hz~10KHz >>输出标准信号&#xff1a;0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等&…

云联接:揭开SD-WAN神秘面纱,颠覆你对网络的认知!

云联接&#xff08;Cloud Connect&#xff09;源于软件定义广域网&#xff08;SD-WAN&#xff09;。 软件定义广域网由于技术应用性强&#xff0c;近年来从一个由软件定义网络&#xff08;SDN&#xff09;部分衍生的分支概念发展为大规模普适的实践技术&#xff0c;已成为建立…