首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“追踪路线”以下一站为目的地

“追踪路线”以下一站为目的地
EN

Network Engineering用户
提问于 2015-02-26 16:16:29
回答 3查看 1.1K关注 0票数 1

我知道BSD中的traceroute默认使用UDP,并在TTL减少并被发现为0时从中间跳获取ICMP错误消息。我的问题是-如果我们追踪路由到下一跳路由器:-路由器是否应该用无法到达的端口来响应?

EN

回答 3

Network Engineering用户

发布于 2015-03-10 14:40:10

正如罗恩所说,这是一件很简单的测试--如果你还没有试过,你应该试一试。

在BSD系统中,traceroute将使用一系列高、未注册的UDP端口号以及TTL。启动探针的设备将发送3个探针,它们将如下所示:

注意:在您的测试中,端口号不一定是准确的。

  • 探针1: TTL =1个UDP端口= 33434
  • 探针2: TTL =1个UDP端口= 33435
  • 探针3: TTL =1个UDP端口= 33436

在我们不跟踪下一个跳的情况下,您将看到来自下一个设备的以下消息:

生存时间超过

这就是我们所期望的,随着traceroute的进展,下一个设备的探针将如下所示:

  • 探针1: TTL =2 UDP端口= 33437
  • 探针2: TTL =2 UDP端口= 33438
  • 探针3: TTL =2 UDP端口= 33439

现在假设第二组探测器将到达我们预定的目的地。我们将得到的响应是(这是直接来自tcpdump的一部分):

udp端口33437不可达

这是什么意思?这意味着我们已经到达目的地,因为只有我们的目的地才能说“不,这个端口不可用”(正如我们所期望的,从更高的未注册的UDP端口范围)。

我的问题是-如果我们追踪路由到下一跳路由器:-路由器是否应该用无法到达的端口来响应?

traceroute最酷的一点是,它不知道你是想在20跳之外,还是在1跳之外--它需要能够适应任何一种情况。

因此,它的行为将与它在20跳的最后一跳没有什么不同。

如果你跟踪你的下一跳,你的探针会看起来一样:

  • 探针1: TTL =1个UDP端口= 33434
  • 探针2: TTL =1个UDP端口= 33435
  • 探针3: TTL =1个UDP端口= 33436

但是这里的不同之处在于,1的TTL就足以到达你的下一跳了。因此,您将立即看到"udp端口XXXXX不可达“消息,这意味着traceroute已经完成。而不是看到“生存的时间超过”的消息。

我希望这有助于澄清事情,如果你有任何其他相关的问题-留下评论,我会很高兴更新我的答案。

票数 3
EN

Network Engineering用户

发布于 2015-03-10 04:52:02

路由器将做它所配置的任何事情。ICMP消息是礼貌的,通信可以被静默丢弃,或者可以提供ICMP响应。这是协议的一个可选部分。对于路由器是否应该发送ICMP响应,有两种想法。第一个是它允许网络的可见性,并允许您解决问题,而第二个则认为它是一种安全风险,认为模糊设备的可见性可以提供安全性。

票数 0
EN

Network Engineering用户

发布于 2015-03-09 05:45:34

Traceroute用来找到你和目的地之间的啤酒花。在跳数之间,无论TTL的跳数不受影响,TTL都与路由协议有关。如果您执行了traceroute,并且无法到达,这意味着您将在您(主机)和目的地之间出现连接问题。试着检查物理层,第二层,当然还有第三层(因为我怀疑你甚至可以平)。

票数 -4
EN
页面原文内容由Network Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://networkengineering.stackexchange.com/questions/16933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档