- 论坛徽章:
- 0
|
一个traceroute的疑惑?
贴过来给大家看这样就不用注册了.
Traceroute的实现与原理
上次看ping 命令的时候,有提到过,当ping -R的时候,可以将前9个途经的路由器都记录在内...但对于多过9个的就无法记录了,这时候就需要用到traceroute,而它实现的原理是怎么样的呢???
首先,发送一份ttl为1的数据报文给目的主机,当到第一个路由器的时候,路由器会将它的ttl值减1下去,并且丢掉该包,然后发一个表示超时的包回来.那样,我们就获得了经过的第一个路由器的地址和时间(往返时间/2得到单程时间);然后,发一个ttl为2的包,那么就会停在途中的第2个路由器那里,同样也得到第2个路由器的时间...如此一直到到达目的地,那么,怎么知道到了目的地呢? traceroute是发的一个udp包,端口在30000以上,一般来说没有程序在用,所以会由对方返回一个"端口不可达"的icmp消息回来.
也就是说,traceroute如果收到的包是icmp的超时包,它就认为这是中间一个路由器,如果收到端口不可达的消息,则认为是达到了目的,由目的主机发出的.
天缘调试路由的时候,曾经用traceroute跟踪失败的消息...就是到了某个路由器就没有回应了...这说明什么呢? 以前不明白,这里知道了,原来是那个路由器的管理员将该路由器设置为禁止发送icmp消息(汗,一般都是禁止接受icmp,或者禁止发送-8 的消息;这个网管居然是禁止所有icmp...看来真的是有够安全...)
越来越多的攻击利用,令原来的一些方便工具逐渐下岗了...比如ping命令...哎,正当的技术不被恶意利用,真的是好难~~! |
|