【traceroute】关于traceroute(路由追踪)的原理分析

【traceroute】关于traceroute(路由追踪)的原理分析,第1张

traceroute 主要利用 IP 数据包的 TTL 字段值 + ICMP 来实现,它发送的用于探测网络路径的数据包的 IP 之上的协议可以是 UDP、TCP或ICMP。

协议表示该数据报文所携带的数据所使用的协议类型,占 8 位。

该字段可以方便目的主机的 IP 层知道按照什么协议来处理数据部分。不同的协议有专门不同的协议号。

例如,TCP 的协议号为 6,UDP 的协议号为 17,ICMP 的协议号为 1。

不同模式下,探测过程中设计的数据包如下:

UDP 探测数据包(目标端口大于 30000) + 中间网关发回 ICMP TTL 超时数据包 + 目标主机发回 ICMP Destination Unreachable 数据包

TCP [SYN] 探测数据包(默认目标端口为 80) + 中间网关发回 ICMP TTL 超时数据包 + 目标主机发回 TCP [SYN ACK] 数据包

ICMP Echo (ping) Request 探测数据包 + 中间网关发回 ICMP TTL 超时数据包 + 目标主机发回 ICMP Echo (ping) reply 数据包

UDP 端口扫描比较麻烦,它同TCP不一样,因为它不需要建立连接。

我们向 目标主机 的固定端口发送UDP数据包,可以得到 两种结果:

在运营商的路由器上,UDP 与 ICMP 的待遇大不相同。

为了利于 troubleshooting,ICMP ECHO Request/Reply 是不会封的,而 UDP 则不同。

UDP 常被用来做网络攻击,因为 UDP 无需连接,因而没有任何状态约束它,比较方便攻击者伪造源 IP、伪造目的端口发送任意多的 UDP 包,长度自定义。

所以运营商为安全考虑,对于 UDP 端口常常采用白名单 ACL,就是只有 ACL 允许的端口才可以通过,没有明确允许的则统统丢弃。比如允许 DNS/DHCP/SNMP 等。

当网络工程师用Ping时,Ping在偷摸做啥事儿?

ping命令是依托于 ICMP协议的, ICMP协议的存在就是为了更高效的转发 IP数据报和提高交付成功的机会。

ping命令除了依托于 ICMP,在局域网下还要借助于 ARP协议, ARP协议能根据 IP地址反查出计算机的 MAC地址。

另外 ARP是有缓存的,为了保证 ARP的准确性,计算机会更新ARP缓存。

有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。

出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

有些路由器会隐藏的自己的位置,不让ICMP Timeout的消息通过,结果就是在那一跳上始终会显示星号。此外服务器也可以伪造traceroute路径的,不过一般应用服务器也没有理由这么做,所以Traceroute的结果还是能够为网络分析提供一些参考的。

Linux下traceroute程序默认发送的探测包为UDP协议,windows下tracert、mtr,以及Linux下mtr默认都发送的是icmp的数据包,并不是所有网关都会如实返回 ICMP 超时报文。处于安全性考虑,大多数防火墙以及启用了防火墙功能的路由器缺省配置为不返回各种 ICMP 报文,其余路由器或交换机也可能被管理员主动修改配置变为不返回 ICMP 报文。因此 Traceroute 程序不一定能拿到所有的沿途网关地址。所以,当某个 TTL 值的数据包得不到响应时,并不能停止这一追踪过程,程序仍然会把 TTL 递增而发出下一个数据包。这个过程将一直持续到数据包发送到目标主机,或者达到默认或用参数指定的追踪限制(maximum_hops 默认最大为30)才结束追踪

如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。

如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。

动态图解traceroute(路由追踪)的原理与实现

https://zhuanlan.zhihu.com/p/404043710

IP数据报格式详解

http://c.biancheng.net/view/6411.html

解析为何traceroute探测的时候中间有些节点探测不到?

https://zhuanlan.zhihu.com/p/122465496

traceroute使用与实现原理分析

https://zhuanlan.zhihu.com/p/36811672

traceroute(路由追踪)的原理及实现

https://www.jianshu.com/p/75a5822d0eec

为什么目标地址ping能通,但是tracetoute不通?

https://cloud.tencent.com/developer/article/1642331

只会用ping测试网络通不通?高级网工还会这么用

https://zhuanlan.zhihu.com/p/458358961

当网络工程师用Ping时,Ping在偷摸做啥事儿?

https://zhuanlan.zhihu.com/p/513184441

traceroute原理

https://www.cnblogs.com/zyd112/p/7196341.html

TCP/UDP/ICMP Traceroute的原理及区别

https://zhuanlan.zhihu.com/p/101810847

腾讯手机管家(PC版)获取手机的Root权限的步骤:

a、用USB数据线将手机与电脑连接, 打开腾讯手机管家(PC版)点击工具箱找到“一键Root”;

b、点击“一键Root”。

c、工具会自动识别您的手机并准备Root,备份完成后再点击“开始ROOT”。若已备份,请直接点击“跳过”开始Root。

d、静静等待3~5分钟,这个过程千万不要断开手机连接。

e、Root完成之后,就可以全面掌控自己的手机

Mtr(My traceroute)是一个把ping和traceroute并入一个程序的网络诊断工具。Mtr提供了两个界面:一个ncurses界面,对从一个telnet会话中使用MTR有用;还有一个GTK+界面,用于X(在mtr-gtk软件包中提供了)。

MTR使用

1、mtr命令行工具

mtr使用比较简单,详细用法请参考mtr的man page。

[root@ts3-142 ~]# mtr –help

usage: mtr [-hvrctglspni46] [–help] [–version] [–report]

[–report-cycles=COUNT] [–curses] [–gtk]

[–raw] [–split] [–no-dns] [–address interface]

[–psize=bytes/-s bytes]

[–interval=SECONDS] HOSTNAME [PACKETSIZE]

各主要参数解释如下:

–report 追踪结果以报告模式输出

–report-cycles=COUNT 定义追踪的次数,默认为16

–raw 使结果以原始格式输出

–split 将每次追踪的结果分别列出来,不象–report一样,统计整个结果

–no-dns 只显示ip地址,不解析ip地址对应的主机名

–psize=bytes/-s bytes 定义数据包的大小,单位是字节

下面看一个简单的例子:

[root@ts3-142 ~]# mtr –report -c 10 -n

输出结果如下:

My traceroute [v0.71]

ts3-142.ts.cn.tlan (0.0.0.0) Fri Aug 3 22:39:50 2007

Keys: Help Display mode Restart statistics Order of fields quit

Packets Pings

Host Loss% Last Avg Best Wrst StDev

1. 172.16.76.1 0.0% 0.5 0.4 0.4 0.5 0.1

2. 202.108.132.17 0.0% 179.0 20.2 2.3 179.0 55.8

3. 172.19.140.69 0.0% 13.7 10.3 6.2 17.1 3.8

4. 172.17.0.17 0.0% 9.3 16.5 8.6 62.3 16.3

5. 172.16.0.57 0.0% 9.9 11.2 6.1 21.0 5.4

6. 192.168.0.25 0.0% 7.3 11.4 5.1 17.2 4.2

7. 210.74.176.241 10.0% 110.1 109.6 92.7 123.3 11.3

8. 202.96.13.101 20.0% 104.9 111.8 101.4 126.5 9.3

9. 202.106.192.233 30.0% 120.7 113.8 85.5 138.8 17.2

10. 61.148.143.26 10.0% 99.7 112.0 99.7 120.9 6.9

11. 202.96.8.246 20.0% 97.0 108.2 92.3 137.4 14.3

12. 210.77.38.126 11.1% 133.0 113.8 97.0 133.0 11.8

这个结果说明了,从我的主机到经过的路由节点以及到各节点数据包的丢包率和ping命令的最短/最长时间和标准偏差。

mtr -h提供帮助命令


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7324338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存