ping 丢包或不通时链路测试说明 ping丢包率命令
zhezhongyun 2024-12-15 17:54 43 浏览
当客户端访问目标服务器出现 ping 丢包或 ping 不通时,可以通过 tracert 或 mtr 等工具进行链路测试来判断问题来源。本文先介绍了进行链路测试的相关工具,然后对测试结果分析及测试步骤进行了说明。
链路测试工具介绍
根据操作系统类型的不同,链路测试所使用的工具也有所不同。分别简要介绍如下。
Linux 环境下链路测试工具介绍
Windows 环境下链路测试工具介绍
Linux 环境下链路测试工具介绍
traceroute 命令行工具
mtr 命令行工具(建议优先使用)
traceroute 命令行工具
traceroute 是几乎所有 Linux 发行版本预装的网络测试工具,用于跟踪 Internet 协议(IP)数据包传送到目标地址时经过的路径。
traceroute 先发送具有小的最大存活时间值(Max_TTL)的 UDP 探测数据包,然后侦听从网关开始的整个链路上的 ICMP TIME_EXCEEDED 响应。探测从TTL=1 开始,TTL 值逐步增加,直至接收到ICMP PORT_UNREACHABLE 消息。ICMP PORT_UNREACHABLE 消息用于标识目标主机已经被定位,或命令已经达到允许跟踪的最大 TTL 值。
traceroute 默认发送 UDP 数据包进行链路探测。可以通过 -I 参数来指定发送 ICMP 数据包用于探测。
用法说明:
示例输出:
常见可选参数说明:
-d 使用Socket层级的排错功能。
-f 设置第一个检测数据包的存活数值TTL的大小。
-F 设置不要分段标识。
-g 设置来源路由网关,最多可设置8个。
-i 使用指定的网卡送出数据包。用于主机有多个网卡时。
-I 使用ICMP数据包替代 UDP 数据包进行探测。
-m 设置检测数据包的最大存活数值TTL的大小。
-n 直接使用IP地址而非主机名称(禁用 DNS 反查)。
-p 设置UDP传输协议的通信端口。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-s 设置本地主机送出数据包的IP地址。
-t 设置检测数据包的TOS数值。
-v 详细显示指令的执行过程。
-w 设置等待远端主机回包时间。
-x 开启或关闭数据包的正确性检验。
mtr 命令行工具(建议优先使用)
mtr (My traceroute)也是几乎所有 Linux 发行版本预装的网络测试工具。他把 ping和 traceroute 的功能并入了同一个工具中,所以功能更强大。
mtr 默认发送 ICMP 数据包进行链路探测。可以通过 -u 参数来指定使用 UDP 数据包用于探测。
相对于 traceroute 只会做一次链路跟踪测试,mtr 会对链路上的相关节点做持续探测并给出相应的统计信息。所以,mtr能避免节点波动对测试结果的影响,所以其测试结果更正确,建议优先使用。
用法说明:
示例输出:
常见可选参数说明:
-r 或 --report:以报告模式显示输出。
-p 或 --split:将每次追踪的结果分别列出来,而非如 --report统计整个结果。
-s 或 --psize:指定ping数据包的大小。
-n 或 --no-dns:不对IP地址做域名反解析。
-a 或 --address:设置发送数据包的IP地址。用于主机有多个IP时。
-4:只使用 IPv4 协议。
-6:只使用 IPv6 协议。
另外,也可以在 mtr 运行过程中,输入相应字母来快速切换模式,比如:
?或 h:显示帮助菜单。
d:切换显示模式。
n:切换启用或禁用 DNS 域名解析。
u:切换使用 ICMP或 UDP 数据包进行探测。
返回结果说明:
默认配置下,返回结果中各数据列的说明:
第一列(Host):节点IP地址和域名。如前面所示,按n键可以切换显示。
第二列(Loss%):节点丢包率。
第三列(Snt):每秒发送数据包数。默认值是10,可以通过参数 -c 指定。
第四列(Last):最近一次的探测延迟值。
第五、六、七列(Avg、Best、Wrst):分别是探测延迟的平均值、最小值和最大值。
第八列(StDev):标准偏差。越大说明相应节点越不稳定。
Windows 环境下链路测试工具介绍
TRACERT 命令行工具
WinMTR 工具(建议优先使用)
TRACERT 命令行工具
TRACERT (Trace Route) 是 Windows 自带的网络诊断命令行实用程序,用于跟踪 Internet 协议 (IP) 数据包传送到目标地址时经过的路径。
TRACERT 通过向目标地址发送 ICMP 数据包来确定到目标地址的路由。在这些数据包中,TRACERT 使用了不同的 IP“生存期”(TTL) 值。由于要求沿途的路由器在转发数据包前至少必须将 TTL 减少 1,因此 TTL 实际上相当于一个跃点计数器 (hop counter)。当某个数据包的 TTL 达到零 (0) 时,相应节点就会向源计算机发送一个 ICMP“超时”的消息。
TRACERT 第一次发送 TTL 为 1 的数据包,并在每次后续传输时将 TTL 增加 1,直到目标地址响应或达到 TTL 的最大值。中间路由器发送回来的 ICMP“超时”消息中包含了相应节点的信息。
用法说明:
示例输出:
常见可选参数说明:
-d:指定不将地址解析为主机名(禁用 DNS 反解)。
-h:maximum_hops,指定搜索目标地址时的最大跃点数。
-j: host-list,指定沿主机列表的松散源路由。
-w:timeout,由每个回复的 timeout 指定的等待毫秒数。
-R:跟踪往返行程路径(仅适用于 IPv6)。
-S:srcaddr,要使用的源地址(仅适用于 IPv6)。
-4:强制使用 IPv4。
-6:强制使用 IPv6。
target_host:目标主机域名或 IP 地址。
WinMTR 工具(建议优先使用)
WinMTR 是 mtr 工具在 Windows 环境下的图形化实现,但进行了功能简化,只支持 mtr部分参数的调整设置。WinMTR 默认发送ICMP 数据包进行探测,无法切换。
WinMTR 可以从其官方网站下载获取。
和 mtr 一样,相比 tracert,WinMTR 能避免节点波动对测试结果的影响,所以测试结果更正确。所以,在 WinMTR 可用的情况下,建议优先使用 WinMTR进行链路测试。
用法说明:
WinMTR 无需安装,直接解压运行即可。操作方法非常简单,说明如下:
如下图所示,运行程序后,在 Host 字段输入目标服务器域名或 IP(注意前面不要包含空格)。
点击 Start 开始测试(开始测试后,相应按钮变成了 Stop)。
运行一段时间后,点击 Stop 停止测试。
其它选项说明:
Copy Text to clipboard:将测试结果以文本格式复制到粘贴板。
Copy HTML to clipboard:将测试结果以 HTML 格式复制到粘贴板。
Export TEXT:将测试结果以文本格式导出到指定文件。
Export HTML:将测试结果以 HTML 格式导出到指定文件。
Options:可选参数,包括:
Interval(sec):每次探测的间隔(过期)时间。默认为 1 秒。
Ping size(bytes): ping 探测所使用的数据包大小,默认为 64 字节。、
Max hosts in LRU list: LRU 列表支持的最大主机数,默认值为 128。
Resolve names:通过反查 IP 以域名显示相关节点。
返回结果说明:
默认配置下,返回结果中各数据列的说明:
第一列(Hostname):节点 IP 或域名。
第二列(Nr):节点编号。
第三列(Loss%):节点丢包率。
第四列(Sent):已发送的数据包数量。
第五列(Recv):已成功接收的数据包数量。
第六、七、八、九列(Best 、Avg、Worst、Last):分别是到相应节点延迟的最小值、平均值、最大值和最后一次值。
第八列(StDev):标准偏差。越大说明相应节点越不稳定。
链路测试结果分析简要说明
由于 mtr(WinMTR)有更高的准确性。本文以其测试结果为例,对链路测试结果的分析进行简要说明。
后续说明,以如下链路测试结果示例图为基础进行阐述:
对链路测试结果进行分析时,需要关注如下要点:
网络区域
链路负载均衡
结合Avg(平均值)和 StDev(标准偏差)综合判断
Loss%(丢包率)的判断
关于延迟
网络区域
正常情况下,从客户端到目标服务器的整个链路,会显著的包含如下区域:
客户端本地网络(本地局域网和本地网络提供商网络):如前文链路测试结果示例图中的区域 A。如果该区域出现异常,如果是客户端本地网络相关节点出现异常,则需要对本地网络进行相应排查分析。否则,如果是本地网络提供商网络相关节点出现异常,则需要向当地运营商反馈问题。
运营商骨干网络:如前文链路测试结果示例图中的区域 B。如果该区域出现异常,可以根据异常节点 IP 查询归属运营商,然后直接或通过阿里云售后技术支持,向相应运营商反馈问题。
目标服务器本地网络(目标主机归属网络提供商网络): 如前文链路测试结果示例图中的区域 C。如果该区域出现异常,则需要向目标主机归属网络提供商反馈问题。
链路负载均衡
如前文链路测试结果示例图中的区域 D 所示。如果中间链路某些部分启用了链路负载均衡,则 mtr 只会对首尾节点进行编号和探测统计。中间节点只会显示相应的 IP 或域名信息。
结合Avg(平均值)和 StDev(标准偏差)综合判断
由于链路抖动或其它因素的影响,节点的 Best 和 Worst 值可能相差很大。而 Avg(平均值) 统计了自链路测试以来所有探测的平均值,所以能更好的反应出相应节点的网络质量。
而 StDev(标准偏差值)越高,则说明数据包在相应节点的延时值越不相同(越离散)。所以,标准偏差值可用于协助判断 Avg 是否真实反应了相应节点的网络质量。例如,如果标准偏差很大,说明数据包的延迟是不确定的。可能某些数据包延迟很小(例如:25ms),而另一些延迟却很大(例如:350ms),但最终得到的平均延迟反而可能是正常的。所以,此时 Avg 并不能很好的反应出实际的网络质量情况。
综上,建议的分析标准是:
如果 StDev 很高,则同步观察相应节点的 Best 和 Wrst,来判断相应节点是否存在异常。
如果 StDev 不高,则通过 Avg来判断相应节点是否存在异常。
注:上述 StDev “高”或者“不高”,并没有具体的时间范围标准。而需要根据同一节点其它列的延迟值大小来进行相对评估。比如,如果 Avg 为30ms,那么,当 StDev 为 25ms,则认为是很高的偏差。而如果 Avg 为 325ms,则同样的 StDev(25ms),反而认为是不高的偏差。
Loss%(丢包率)的判断
任一节点的 Loss%(丢包率)如果不为零,则说明这一跳网络可能存在问题。导致相应节点丢包的原因通常有两种:
运营商基于安全或性能需求,人为限制了节点的 ICMP 发送速率,导致丢包。
节点确实存在异常,导致丢包。
可以结合异常节点及其后续节点的丢包情况,来判定丢包原因:
如果随后节点均没有丢包,则通常说明异常节点丢包是由于运营商策略限制所致。可以忽略相关丢包。如前文链路测试结果示例图中的第 2 跳所示。
如果随后节点也出现丢包,则通常说明异常节点确实存在网络异常,导致丢包。如前文链路测试结果示例图中的第 5 跳所示。
另外,需要说明的是,前述两种情况可能同时发生。即相应节点既存在策略限速,又存在网络异常。对于这种情况,如果异常节点及其后续节点连续出现丢包,而且各节点的丢包率不同,则通常以最后几跳的丢包率为准。如前文链路测试结果示例图所示,在第 5、6、7跳均出现了丢包。所以,最终丢包情况,以第 7 跳的 40% 作为参考。
关于延迟
延迟跳变
如果在某一跳之后延迟明显陡增,则通常判断该节点存在网络异常。如前文链路测试结果示例图所示,从第 5 跳之后的后续节点延迟明显陡增,则推断是第 5跳节点出现了网络异常。
不过,高延迟并不一定完全意味着相应节点存在异常。如前文链路测试结果示例图所示,第 5 跳之后,虽然后续节点延迟明显陡增,但测试数据最终仍然正常到达了目的主机。所以,延迟大也有可能是在数据回包链路中引发的。所以,最好结合反向链路测试一并分析。
ICMP 限速导致延迟增加
ICMP 策略限速也可能会导致相应节点的延迟陡增,但后续节点通常会恢复正常。如前文链路测试结果示例图所示,第 3 跳有 100% 的丢包率,同时延迟也明显陡增。但随后节点的延迟马上恢复了正常。所以判断该节点的延迟陡增及丢包是由于策略限速所致。
常见链路异常场景和测试报告
常见的链路异常场景及测试报告实例如下所示:
目标主机网络配置不当
ICMP 限速
环路
链路中断
目标主机网络配置不当
示例数据:
在该示例中,数据包在目标地址出现了 100% 的丢包。乍一看是数据包没有到达,其实很有可能是目标服务器相关安全策略(比如防火墙、iptables 等)禁用了 ICMP 所致,导致目的主机无法发送任何应答。
所以,该场景需要排查目标服务器的安全策略配置。
ICMP 限速
示例数据:
在该示例中,在第 5 跳出现了明显的丢包,但后续节点均未见异常。所以推断是该节点 ICMP 限速所致。
该场景对最终客户端到目标服务器的数据传输不会有影响,所以,分析的时候可以忽略。
环路
示例数据:
在该示例中,数据包在第 5 跳之后出现了循环跳转,导致最终无法到达目标服务器。这通常是由于运营商相关节点路由配置异常所致。
所以,该场景需要联系相应节点归属运营商处理。
链路中断
示例数据:
在该示例中,数据包在第 4 跳之后就无法收到任何反馈。这通常是由于相应节点中断所致。建议结合反向链路测试做进一步确认。
该场景需要联系相应节点归属运营商处理。
链路测试步骤
通常情况下,链路测试流程如下链路测试流程图所示:
相关步骤详细说明如下:
获取本地网络对应公网 IP
正向链路测试(ping 和 mtr)
反向链路测试(ping 和 mtr)
测试结果分析
获取本地网络对应公网 IP
在客户端本地网络访问 ip.taobao.com 等网站,如下图,获取本地网络对应的公网 IP。
正向链路测试(ping 和 mtr)
从客户端向目标服务器做 ping 和 mtr 链路测试:
从客户端向目标服务器域名或 IP 做持续的 ping 测试(建议至少 ping 100 个数据包),记录测试结果。
根据客户端操作系统环境的不同,使用 WinMTR 或 mtr,设置测试目的地址为目标服务器域名或IP,然后进行链路测试,记录测试结果。
反向链路测试(ping 和 mtr)
进入目标服务器系统内部,做反向 ping 和 mtr 链路测试
从目标服务器向前述步骤 1 获取的客户端 IP做持续的 ping 测试(建议至少 ping 100 个数据包),记录测试结果。
根据目标服务器操作系统环境的不同,使用 WinMTR 或 mtr,设置测试目的地址为前述步骤 1 获取的客户端 IP,然后进行链路测试,记录测试结果。
测试结果分析
参阅前述说明,对测试结果进行分析。确认异常节点后,访问ip.taobao.com 等网站查询、获取相应节点归属运营商及网络。
如果是客户端本地网络相关节点出现异常,则需要对本地网络进行相应排查分析。如果是运营商相关节点出现异常,则需要直接或联系阿里云售后技术支持向相应运营商反馈问题。
相关推荐
- Excel高效技巧:批量合并重复数据的实用指南
-
在日常数据处理中,我们常会遇到需要合并相邻重复单元格的场景。无论是整理分类标签、统计重复项还是优化报表格式,手动逐个合并不仅耗时且容易出错。本文将详细介绍三种专业高效的批量合并方法,助您轻松应对各种复...
- 自主研发高速动车组列车又添新成员(新时代画卷)
-
数据来源:国铁集团">数据来源:国铁集团CR400AF—S型列车驶过重庆。龙帆摄(人民视觉)">CR400AF—S型列车驶过重庆。龙帆摄(人民视觉)CR400BF—GZ型列车行驶在京...
- 福彩双色球幻圆图的VBA程序(第一部分)
-
很多朋友喜欢玩福彩双色球彩票,都知道下面的这张图——福彩双色球红球幻圆图和篮球幻方图。图2是福彩双色球2024104期(红色)和2024105期(黄色)的幻圆图。图3是福彩双色球2024105期(红色...
- 技巧 | 往MCP服务器添加提示词模板
-
在我的上一篇文章[1]中,我已经构建了一个本地MCP服务器并向其添加了一些工具。在本文中,我们将向该MCP服务器添加提示词。这是如同上一篇博客的文件结构。但在这里,我为此创建了两个新文件。.├──...
- Avalonia日志组件实现与优化指南
-
背景Avalonia目前没有富文本框可实现日志输出显示,但提供了SelectableTextBlock控件可以替换,这是站长实现的一个日志组件效果:可展示日志时间、日志级别、日志详细内容等,后台除输...
- vim编辑器最后几行@代表什么意思
-
使用vim编辑文本时,屏幕下方会出现一些@符号,这些符号代表什么意思?当vim设置了wrap属性时,若一行太长则就会发生折行现象,此时一个逻辑行就会显示多个屏幕行,如下图由于文件的第2行太长,一个真实...
- 浅色AI云食堂APP完整代码(二)
-
以下是整合后的浅色AI云食堂APP完整代码,包含后端核心功能、前端界面以及优化增强功能。项目采用Django框架开发,支持库存管理、订单处理、财务管理等核心功能,并包含库存预警、数据导出、权限管理等增...
- QML控件:TextInput, TextField, TextEdit, TextArea用法及自定义
-
本文主要介绍基本元素TextInput,TextField,TextEdit,TextArea等的基本属性。Textlnput与TextField为行编辑控件,TextEdit与T...
- WPF - 10.特殊容器控件
-
摘要这里我们要介绍的特殊容器空间是ScrollViewer,该控件与其他控件不同的是,可以支持滚动显示容器内的元素。下面我们举例说明如何在WPF中使用ScrollViewer控件。新建一个WPF程...
- rhino6.0 python中ETO的组件案例
-
1.按钮组件按钮几乎放置在每个对话框上。创建一个新的按钮很简单。使用forms.Button并指定Text显示在按钮面上。除了创建新按钮外,通常还通过.Click事件附加一个操作。使用+=语法,如下...
- Rhino6.0 窗口开发使用角本说明
-
第1个:生成窗口代码第2点:Eto界面主要由Dialog(主程序界面)、Layout(界面布局)和Controls(控件)三个部分构成,逻辑简单且清晰。这个脚本被分为三个主要部分。该import...
- 手把手教你搭建属于自己的服务器!
-
最近总是想搭建自己的网站,奈何皮夹里空空如也,服务器也租不起,更别说域名了。于是我就寻思能否自己搭建个服务器,还不要钱呢?还真行!!!经过几天的冲浪,我发现有两个免费的建站工具:Apache和Ng...
- HEAT杂志《欧美猛男》排行!“雷神”居然没进前三!
-
提到猛男的必备条件,应该就是要有着让人看了会流口水的大块肌肉,而一说到猛男,小编第一个想到的就是spanstyle="text-transform:none;background-color:...
- Power Query 表格列历遍函数Table.TransformColumns函数
-
PowerQuery提取数字应该是非常方便的,EH有这样一道题:一看到这题首先想的是PowerQuery,可能中毒有点深,思路挺简单的,PowerQuery有一个从数字到非数字的分列分列后再提取...
- 自学前端踩了30个坑,终于整理出这份新手避坑指南
-
这是我在自学前端的第37天,对着一个简单的HTML页面卡了整整一下午。不是逻辑错误,不是语法问题,只是我不知道为什么,一个div死活居中不了。那时候的我,以为前端就是写写页面、调调样式,直到后来才...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 教程 (33)
- HTML 简介 (35)
- HTML 实例/测验 (32)
- HTML 测验 (32)
- JavaScript 和 HTML DOM 参考手册 (32)
- HTML 拓展阅读 (30)
- HTML文本框样式 (31)
- HTML滚动条样式 (34)
- HTML5 浏览器支持 (33)
- HTML5 新元素 (33)
- HTML5 WebSocket (30)
- HTML5 代码规范 (32)
- HTML5 标签 (717)
- HTML5 标签 (已废弃) (75)
- HTML5电子书 (32)
- HTML5开发工具 (34)
- HTML5小游戏源码 (34)
- HTML5模板下载 (30)
- HTTP 状态消息 (33)
- HTTP 方法:GET 对比 POST (33)
- 键盘快捷键 (35)
- 标签 (226)
- HTML button formtarget 属性 (30)
- CSS 水平对齐 (Horizontal Align) (30)
- opacity 属性 (32)