快速跟踪路由

原作者:古谷誠進 @furuya02 原文

回顾Traceroute

  • 每当数据包经过一个路由器,其存活时间(TTL)就会减1
  • 当其TTL为0时,主机便丢弃数据包,并发送ICMP超时数据包给请求者
    Tracerouteのおさらい

传统Tracert工具

  • Windows自带tracert工作时,TTL每次增加1
    虽然其过程很有趣,但是等待却很无聊
    TTLを増やしながら順次確認する
  • 即使有路由不返回ICMP,但是最终目标能返回ICMP也不算太坏
    虽然到达目标的时间很短,但是整个traceroute过程却很漫长
    ICMPを返さないルータが(よく)いる
  • 如果最终目标也不返回ICMP包,那么整个过程慢的要死。。
    程序会一直发送数据包,直到达到30跳数为止
    ターゲットがICMPを返さない場合

快速Tracetoute

程序目的:尽可能快地获取到达跟踪目标的路由信息

  • 30个TTL不同的数据包同时
    不再受到路由先后顺序的制约
  • 来自目标的数据包之后的包全部按超时处理
    发往目标的数据包是最远的,所需要的时间也应该是最长的
  • 若在设定的时间内未能收到来自目标的数据包,则剩余数据包全按超时处理
    经过一段时间等待后,程序本身以超时结束
    流程图
    和系统自带tracert相比,快速traceroute节省不少时间。有意思吧?

Windows GUI

本人在原作者代码的基础上用C#开发了Windows GUI版本,并集成了IP地理位置数据库。
TraceRoute-CSharp
项目地址:Source Code