网络路径排查工具使用/原理浅析(MTR、traceroute、tracepath、windows下besttrace)
在请求网络资源获取缓慢或者有丢包过程中。经常会使用到网络路径探测工具。linux 下最常用的有mtr、traceroute、tracepath 等。
你是否有一点疑惑,路径探测的原理到底是如何完成的,普通的ping探测和TCP、UDP 等数据包在同一个源--->目的地址之间交互链路状态为何有时会有不同现象。
原理浅析:
首先我们知道,实现数据在网络中的交互,都基于最基础的网络地址:源--->目的地址。这个地址为IP地址。为了避免无效的数据包垃圾在网络中永久存在。有8位的TTL值。
在互联网中传输过程中,IP数据包每经过一个路由器该值减一,直到为0 时将该包丢弃。
路由探测原理就是从发送TTL 值为1开始的数据包开始,每次增加1,直到该数据包能抵达目的IP地址。
未能抵达最终目的地址的数据包,当路由器将值减为0 时,会给源地址返回一个数据包告知源地址:因经过路由的数据过多,导致TTL耗尽。数据包无法到达最终目的地。工具根据中间路由节点这个数据包返回的时间戳和发出数据包时的时间戳相减,计算出中间经过的每个路由节点的耗时。并获取中间路由节点的IP地址。
IPV4数据包包头格式:https://www.cnblogs.com/zhangmingda/p/12683149.html
下面分别看下常用链路测试工具,默认发送数据包的区别。
mtr
mtr 默认使用ICMP协议发送探测数据包。
若使用TCP或者UDP 发送数据包。需另外指定指定可选项
-u
--udp
Use UDP datagrams instead of ICMP ECHO.
-T
--tcp
Use TCP SYN packets instead of ICMP ECHO. PACKETSIZE is ignored, since SYN packets can not contain data.
-P PORT
--port PORT
The target port number for TCP traces.
下图示例默认探测包:
mtr -T -P22 <IP地址>示例:
traceroute
当我们使用traceroute 不加任何参数测试路径时,默认四层使用UDP协议发送探测数据包
如果使用TCP或者ICMP协议数据包探测路径需加选项
-I --icmp Use ICMP ECHO for tracerouting
-T --tcp Use TCP SYN for tracerouting (default port is 80)
-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.)
traceroute -使用ICMP协议探测路径 -p 指定起始seq
tracepath
只支持UDP协议数据包探测路径
besttrace
posted on 2020-09-21 13:01 zhangmingda 阅读(6305) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
2019-09-21 nginx配置文件简析
2019-09-21 CentOS系统 python3+python2 & Ipython安装
2019-09-21 vim 默认配置