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

作者&投稿:长兴亲 (若有异议请与网页底部的电邮联系)
~ 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


tracerout 每一条代表什么意义
显示分组到达目标经过的各个路由器。信息的传送是通过网中许多段的传输介质和设备(路由器,服务器等等)从一端到达另一端。每一个连接在Internet上的设备,如主机、路由器等一般情况下都会有一个独立的IP地址。通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。这就是这个...

你想发现到达目标网络需要经过哪些路由器,你应该使用什么命令?
1、点击电脑左下角任务栏上的搜索框,输入”cmd“。2、点击【以管理员身份运行】。3、打开cmd命令提示符。4、在命令行中输入“tracert+ip地址”。例如在命令提示符中输入”tracert192.168.185.1“,回车。5、例如光猫的ip地址为192.168.1.1,那么使用”tracert192.168.1.1“命令就可以可以查询...

关于linux双网卡tracerout问题
系统在引导的过程中,是先加载eth0的配置,在加载eth1的配置,由于系统的默认路由只有一个,所以可能是这个部分引起的你遇到的问题。所以原因可能会在这里。解决方法,就是增加网卡的静态路由,来解决网络访问问题。但我也有个疑问是:eth0 192.168.0.5\/24 eth1 10.1.1.2\/8 这两个网口的IP配置...

在电脑的“运行”中输入cmd是做什么的?
输入CMD是进入DOS系统,弹出的黑色窗口正是DOS的界面,用户可以通过这个界面进行一些在windows界面下实现不了的功能,例如:在弹出的窗口里输入“ipconfig \/all”可以查看本机的IP地址、网关地址及物理地址(MAC地址),也可以用来检查到指定网站所经路由器的状态,命令为“tracert”(XP系统下)、“tracerou...

如何测试阿里云海外ECS服务器访问速度
最简单是做ping,再就是tracerout看路由,如果看服务器性能的话那就做下压测,实际环境模拟测试了 。个人感觉海外的话没必要用阿里云,性价比不高。

多个设备正在执行网络地址转换(NAT) 怎么解决
局域网内访问对方,应该不需要nat,您和对方是在同一个网段吗?如果在同一网段,建议您ping一下对端地址看能不能通,如果不在同一网段,建议双方都ping一下自己的网关,再试试tracerout看路由走到了哪里再排查问题。

推荐几款国外服务器
推荐几款国外服务器 1、美国HS服务器 HS机房始终与PCCW、KDDI、 NTT、中国电信、中国移动、中国联通、TeliaSonera、Cogent等众多国际电信运营商保持着长期而紧密的合作关系。HS拥有一支由CCIE、RHCE等资深工程师组成的技术运维团队,为客户提供7x24小时中英双语与国内无差别运维服务。天下数据新上线美国HS服务...

1、 关于Ipv6与Ipv4的区别和实现关键技术等方面的报告资料;
一、扩展了路由和寻址的能力 IPv6 把 IP 地址由 32 位增加到 128 位,从而能够支持更大的地址空间,估计在地球表面每平米有 4*10^18 个 IPv6 地址,使 IP 地址在可预见的将来不会用完。IPv6 地址的编码采用类似于 CIDR 的分层分级结构,如同电话号码。简化了路由, 加快了路由速度。在多点传播...

怎么解决win8.1系统的 多个设备正在执行网络地址转换(NAT)
局域网内访问对方,应该不需要nat,您和对方是在同一个网段吗?如果在同一网段,建议您ping一下对端地址看能不能通,如果不在同一网段,建议双方都ping一下自己的网关,再试试tracerout看路由走到了哪里再排查问题。

昌吉市18396404227: 路由器上的traceroute命令怎么用 -
骆逸养血: 通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同...

昌吉市18396404227: Traceroute是什么 -
骆逸养血: Traceroute是一个使用TCP/IP网络者必不可少的工具,他发送TTL初始值为1的UDP包,以TTL+1来确定路径上的个路由器

昌吉市18396404227: traceroute和tracert的区别是什么? -
骆逸养血: 您好,很高兴为您解答.一、应用环境不同tracert是应用在windows下.traceroute则是应用在linux/BSD/router/UNIX下.tracert是Windows下常用的命令行工具,UNIX下的是traceroute.都是基于UDP协议的路由探测. Tracert(跟踪路由)...

昌吉市18396404227: TRACEROUTE的作用是什么 -
骆逸养血: traceroute是通过使用ICMP的超时机制来发现一个数据包在穿越互联网络时它所经历的路径.

昌吉市18396404227: traceroute和tracert有什么区别
骆逸养血: windows下的tracert和linux/BSD/router下的traceroute都用于探测数据包从源到目的经过路由的IP,但两者探测的方法却有差别. 默认情况下,tracert是向目的地址发出ICMP请求回显数据包,而traceroute是向目的地址的某个端口(大于30000)发送UDP数据报.两者用于探测的数据类型不同.但他们也有一个共同点:都是通过设置发送包的TTL的值从1开始、逐次增1的方法来探测. linux 的 traceroute 可加 -I 参数改用 ICMP

昌吉市18396404227: traceroute命令与ping命令的区别 -
骆逸养血: ping只是测试目标地址的连通性,traceroute是进行路由跟踪,显示从源地址到目标地址所经过的路由.

昌吉市18396404227: traceroute实现的原理
骆逸养血: raceroute是我们经常用到的一个路由跟踪命令. 它的实现原理如下: 它发送一份 TTL字段为1的IP数据报给目的主机.处理这份数据报的第一个路由器将 T T L值减 1,丢弃该数据报,并发回一份超时I C M P报文.这样就得到了该路径中的第一...

昌吉市18396404227: traceroute要怎么用呀? -
骆逸养血: Traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间.一条路径上的每个设备Traceroute要测3次.输出结果中包括每次测试的时间(ms)和

昌吉市18396404227: 检测到可能的 TraceRoute 或 TraceRT 活动. 请问这是什么意思啊? -
骆逸养血: 这个不用当心,在选择是否允许访问网络前选允许永远访问就好了,以后就不会弹了这是TCP/IP协议,当然,如果该程序有更新,更新后还会弹对话框的.一样选永远允许. (要是不允许通过 可能会影响一些软件的运行) 防火墙对话框上不是有花哗羔狙薏缴割斜公铆路径吗,细心看下路径在选允不允许方为上策.怀凝是不正常的程序就断网扫描下吧

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网