【问题标题】:Traceroute Theory追踪路由理论
【发布时间】:2010-03-31 12:09:22
【问题描述】:

我在玩跟踪路由,我的应用程序发送一个 ttl 为 0 的 ICMP 回显请求,每次我收到超过时间的消息时,我将 ttl 增加 1 并重新发送包,但发生的情况是我有 2 个路由器我的网络我可以通过这些路由器跟踪路由,但是无论我跟踪路由到哪里,第三跳总是最终成为开放的 dns 服务器之一,每次都使用相同的 ip。 AFAIK 这是正确的 traceroute 实现,谁能告诉我我做错了什么?

【问题讨论】:

  • 第一个数据包的 ttl 应该是 1,而不是 0。在我看来,路由正在将所有 ICMP 请求转发到特定位置。将您的应用程序带到不同的位置,看看它是否可以在那里工作。

标签: c pcap traceroute


【解决方案1】:

可能两个路由器都连接到同一个对等点,您会得到所描述的行为。

如果没有更多信息,实际上无法回答您的问题。

【讨论】:

  • “路由器连接到同一个节点”你能解释一下你的意思吗?
  • 我的意思是你的两个路由器路由到同一台机器并没有什么特别奇怪的。
【解决方案2】:

虽然很难说没有任何其他信息,但最好的办法是安装一些数据包嗅探器 - 可能是 wireshark / www.wireshark.org - 并比较 icmp 数据包 - 线路上的内容与您的跟踪路由,以及系统/usr/bin/traceroute(或\windows\system32\tracert)是否发送。

【讨论】:

    【解决方案3】:

    如果你的路径上有一个 NAT 路由器,它可能会搞砸你调整得很好的 TTL

    【讨论】:

    • 我的路径上有两个路由器,一个是我的,我在房间内使用,另一个属于我居住的建筑物,非常想弄乱我的连接,但常规的 traceroute 工作正常在这种情况下。
    • 我明白了。这个“开放的 dns 服务器”,也是“建筑物中”的路由器还是附近的某个地方?您是否尝试过使用常规 traceroute 命令(使用 ICMP 和 UDP)来查看结果是否不同?如果没有更多信息,我会得出结论,第三个路由器也充当 DNS,正在阻止您的数据包 - 可能是因为它也在进行 NAT。
    • 你是说如果你使用 traceroute 命令它可以工作,但你的应用程序模仿 traceroute 没有?查看代码可能会帮助我们帮助您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2017-11-11
    相关资源
    最近更新 更多