traceroute命令略谈

traceroute命令略谈

        traceroute命令是linux的一个诊断程序(windows下是tracert),该诊断使用程序将包含不同生存时间(TTL)值的Internet控制消息协议(ICMP)回显数据包发送到目标,以决定从一个主机到网络上其他主机的路由。
       如果有网络连通问题,可以使用traceroute命令(意思是跟踪路径)来检查到达目的IP地址的路径并记录结果。
      traceroute工作原理是这样的:每个路由器要在转发数据包上的TTL之前至少递减1,必需路径上的每个路由器,所以TTL是有效的跃点计数。数据包上的TTL到达0时,路由器应该将“ICMP已超时”的消息发送回系统。traceroute先发送TTL为1的回显数据包,并在随后的每次发送过程将TTL递增1,直到目标响应或者TTL达到最大值,从而确定路由。路由通过检查中级路由器发送回的“ICMP已超时”的消息来确定路由。
       首先, traceroute命令会向目标地址送出UDP侦测封包(在linux中,可以用-I 改为ICMP封包),第一个送出的封包的TTL为1.这样,第一个路由节点在处理这个封包的时候,减掉1,并发现TTL为0,于是就不处理这个封包,并同时送回一个ICMP封包。这样,发送端就知道第一个路由节点在哪里了。
       当接到第一个ICMP返回的时候,程序就会检查返回主机是否为目标主机,如果不是,则再送出第二个封包,但TTL比上次增加1。
       这样,当下一个站收到这个封包,再扣掉TTL为0,也会送回ICMP封包,这样,程序就知道第二个路由节点在哪里了。然后重复上一个动作,知道找到目标主机为止,或是封包的最大TTL(通常为30)都用光为止,你也可以用-m参数来指定最大的TTL值。
       但是,在实际操作中,未必是所有的路由器设备都会或者愿意送回ICMP包,碰到这样的情况,你都会看到跳站显示全为*的情形了。假如traceroute最后的结果一直维持着*符号,那可能是因为ICMP被对方的防火墙拦下来的结果。这样的话,你可能无法完成防火墙后的路由追踪。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值