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

(下一篇文章告诉你如何让Traceroute可以探测到思科ASA防火墙的节点)

要清楚的了解这个问题,首先需要知道Traceroute的工作原理。

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

Traceroute作用:基于UDP探测包、ICMP TTL超时报文和ICMP端口不可达报文来检测从源到目的地之间的IP地址,同时如果源和目的不通,也可以检测到哪个节点出了问题。

Traceroute工作原理:探测者首先发出3个TTL=1的探测包(端口号为33434),当数据包每经过一个网段TTL值减1,当TTL值减为0的时候,就会回复一个ICMP TTL超时报文(这个超时报文的源IP地址就是我们要探测的中间的第一个的节点)。

然后再发出3个TTL=2的探测包(端口号为33435),同样,当TTL值减为0的时候,就会回复一个ICMP TTL超时报文(这个超时报文的源IP地址就是我们要探测的中间的第二个的节点);

然后再发出3个TTL=3的探测包(端口号为33436),同样,当TTL值减为0的时候,就会回复一个ICMP TTL超时报文(这个超时报文的源IP地址就是我们要探测的中间的第三个的节点)................以此类推,直到探测到目的地。

为什么端口号这么大呢?因为这个高的端口号一般都是处于空闲状态,几乎没有哪个应用程序使用,这样,当探测包到达目的地的时候,目的地就可以使用端口不可达报文进行回复,假设用一个小的常用的端口号,很可能是影响先用的应用程序的工作。

注意:

一、默认每个TTL的探测包发三个,防止中间节点没有收到UDP探测包,误以为中间节点目的地不可达,数值可以修改。

二、中间节点收到UDP探测包,都会以自己收包接口IP地址为源,以探测者为目的,用ICMP文格式给探测者进行回复,当探测者收到ICMP回包的同时就探测到了中间节点。

三、TTL是IP包头里面的字段,用来标识这个数据包可以传递多少跳,如果TTL=1,那么数据包只能在本网段传递,如果TTL=2,那么就可以传递给邻居路由器的直连设备.....以此类推。

下图为Traceroute抓包截图,UDP、ICMP TTL超时报文以及ICMP端口不可达报文:

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

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

也就是数据包每经过一台设备,TTL值减一。但是ASA防火墙收到数据包后默认情况不会把TTL减1,因为ASA不会回复ICMP TTL超时报文,因为默认情况下也就无法探测到ASA防火墙的节点,目的也是为了保护ASA设备吧,毕竟给属于安全产品,怎么可能随意让别人知道我的信息呢。对不嘞!!!


分享到:


相關文章: