Linux 下 traceroute 的实现原理

traceroute是一个非常好用的用于跟踪路由包的工具,最基本的用法是 traceroute xxx.xxx.xxx.xxx
这条命令会输出从本机到指定ip地址所经过的所有路由节点的ip,以及一些时间等额外信息。

tranceroute的实现原理,主要是依赖了ICMP(Internet Control Message Protocol)协议,该协议
主要用于在网络中传递控制信息,包括一些出错信息等。协议定义了一些标准错误类型,其中有一项为:
ICMP_TIME_EXCEEDED,该类型包含两个子类型:
ICMP_EXC_TTL 超过TTL
ICMP_EXC_FRAGTIME 超过片段重组时间

ICMP_EXC_TTL 是traceroute实现的根本基础,原理如下:
假设A主机使用traceroute来跟踪至E主机的路由途径,则A会发送携带ICMP_ECHO(这是ping命令的实现基础),且TTL为1的IP包
显然,路由B在收到该包时,由于TTL=1,则拒绝转发该包,并发送ICMP_EXC_TTL代码给源地址。当A收到该反馈后,会继续发送ICMP
包,并递增TTL,使其加1,这样,则会找到路由表中的下一个路由跃点。以此方法,则可以获得全部的路由节点。

当然,这种方法返回的路径并不一定是完全正确,主要是因为复杂网络中的一些不可控因素或者动态路由的原因,使得结果不一定100%
和实际情况吻合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值