tracer 原理

前言

准备整理网络章节,先整理概念。

tracer 是一个可以获取我们的主机到访问端中间经过了哪些路由,这个对于我们非常重要,看下原理吧。

正文

tracer 在unix中是tracerRout。

它的原理是这样子的,他发送一个udp包,去访问一个不可达端口,这个端口是一个高位端口,比如说44444。

回过头来看ip协议,我把图贴过来:

看到那个ttl没?就是那个生存时间。

这个我在介绍ip协议的时候介绍过,每经过一个路由,那么他将会-1。

利用这个特征,我们可以这样做,先设置ttl为1,那么经过一个路由后他将返回一个icmp包。

这个时候我们就知道了这个路由的地址。

同样我们再发送ttl为2,然后就是下一个路由。

那么就有一个问题了,那么我们是如何确定到达的呢?

关键部分就是这个,udp如果是一个不可达端口,那么会返回一个端口不可达的icmp包,这个时候我们就不用继续发了。

同样windows又不一样。

看下windows是如何实现的,windows命令行叫做tracer。

windows 实现原理:

微软就是发送icmp包,同样是通过这个ttl实现来返回路由,那么它是如何确定已经到达对方路由了呢?

icmp如果没到,那么路由器会发送错误icmp包,如果到了,那么目的主机对回应icmp包,这样就结束路由跟踪了。

原文地址:https://www.cnblogs.com/aoximin/p/13396315.html