traceroute原理

Traceroute程序使用ICMP报文和IP首部中的TTL字段(生存周期)来工作。

TTL字段是由发送方初始设置的一个8bit字段。每个处理数据报的路由器都要把TTL的值减去1或者减去数据报在路由器中停留的秒数。由于大多数的路由器转发数据报的时延都小于1秒钟,因此TTL最终成为一个跳站的计数器,所经过的每个路由器都将其值减1。

Traceroute程序是这样获得经过的路由器地址的:

当路由器收到一份IP数据报,如果其TTL值是0或者1,则路由器不转发此数据报,而将此数据报丢弃,并给信源机发送一份ICMP “超时”信息(当数据包目的地址是自己时,将发送ICMP端口不可达报文)。而这份超时信息的信源地址正是该路由器IP地址。

Traceroute程序是这样判断“跟踪”结束的:

Traceroute程序发送给目标主机一份UDP数据报,并且使用一个“不可能”的值做为UDP端口号(通常大于30000),这样目的主机的任何程序都不能回应,最终目的主机将返回一个“端口不可达”的信息给发送者。这时发送者即可判断“跟踪”结束。

实验的网络拓扑及配置如下图示:

【原创】实验分析Traceroute程序的工作过程 - 大河§晕王 - 大河Blog

R0上,Traceroute 10.0.104.2,在R0-R2间抓包,抓包的结果如下图:

【原创】实验分析Traceroute程序的工作过程 - 大河§晕王 - 大河Blog

抓包结果详细说明如下:

1、R0(192.168.0.1)发送出UDP数据报,数据报的目的端口为33434;IP数据报的目的地址为R3(10.0.104.2),Time to live(TTL)为1。如下图:

【原创】实验分析Traceroute程序的工作过程 - 大河§晕王 - 大河Blog

2、 R2路由器接收到此数据包,由于TTL为1,所以R2(接收到此数据包的接口)将向R0返回一个超时的ICMP数据包(Type为11)。如下图:

【原创】实验分析Traceroute程序的工作过程 - 大河§晕王 - 大河Blog

3、R0收到此ICMP数据包后,R0(192.168.0.1)再次发送出UDP数据报,数据报的目的端口为33435;IP数据报的目的地址为R3(10.0.104.2),Time to live(TTL)为2。如下图:

【原创】实验分析Traceroute程序的工作过程 - 大河§晕王 - 大河Blog

此时,数据顺利通过R2,TTL将减1,变为TTL=1,然后转发给R1,R1检查TTL为1,R1中接收到此数据包的接口将返回给发送方一个ICMP超时数据包,如下图:

【原创】实验分析Traceroute程序的工作过程 - 大河§晕王 - 大河Blog

4、R0将再次发送UDP数据报,目的地址还是R3,目的端口为33440,TTL=3,如下图:

【原创】实验分析Traceroute程序的工作过程 - 大河§晕王 - 大河Blog

此数据包将经过R2-R1的转发,到达R3,由于经过R2、R1时TTL都要减1,所以到达R3时的TTL=1,但R3此时发现数据是发送给自己的,所以此时R3将不返回“超时”ICMP,而是返回端口不可达信息给R0(R3上接收到此数据包的接口回应此数据包)。如下图示:

【原创】实验分析Traceroute程序的工作过程 - 大河 - 大河Blog

 R0收到端口不可达的报文信息后,将停止发送“跟踪”UDP数据,至此Traceroute程序功能完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值