我知道BSD中的traceroute默认使用UDP,并在TTL减少并被发现为0时从中间跳获取ICMP错误消息。我的问题是-如果我们追踪路由到下一跳路由器:-路由器是否应该用无法到达的端口来响应?
发布于 2015-03-10 14:40:10
正如罗恩所说,这是一件很简单的测试--如果你还没有试过,你应该试一试。
在BSD系统中,traceroute将使用一系列高、未注册的UDP端口号以及TTL。启动探针的设备将发送3个探针,它们将如下所示:
注意:在您的测试中,端口号不一定是准确的。
在我们不跟踪下一个跳的情况下,您将看到来自下一个设备的以下消息:
这就是我们所期望的,随着traceroute的进展,下一个设备的探针将如下所示:
现在假设第二组探测器将到达我们预定的目的地。我们将得到的响应是(这是直接来自tcpdump的一部分):
这是什么意思?这意味着我们已经到达目的地,因为只有我们的目的地才能说“不,这个端口不可用”(正如我们所期望的,从更高的未注册的UDP端口范围)。
我的问题是-如果我们追踪路由到下一跳路由器:-路由器是否应该用无法到达的端口来响应?
traceroute最酷的一点是,它不知道你是想在20跳之外,还是在1跳之外--它需要能够适应任何一种情况。
因此,它的行为将与它在20跳的最后一跳没有什么不同。
如果你跟踪你的下一跳,你的探针会看起来一样:
但是这里的不同之处在于,1的TTL就足以到达你的下一跳了。因此,您将立即看到"udp端口XXXXX不可达“消息,这意味着traceroute已经完成。而不是看到“生存的时间超过”的消息。
我希望这有助于澄清事情,如果你有任何其他相关的问题-留下评论,我会很高兴更新我的答案。
发布于 2015-03-10 04:52:02
路由器将做它所配置的任何事情。ICMP消息是礼貌的,通信可以被静默丢弃,或者可以提供ICMP响应。这是协议的一个可选部分。对于路由器是否应该发送ICMP响应,有两种想法。第一个是它允许网络的可见性,并允许您解决问题,而第二个则认为它是一种安全风险,认为模糊设备的可见性可以提供安全性。
发布于 2015-03-09 05:45:34
Traceroute用来找到你和目的地之间的啤酒花。在跳数之间,无论TTL的跳数不受影响,TTL都与路由协议有关。如果您执行了traceroute,并且无法到达,这意味着您将在您(主机)和目的地之间出现连接问题。试着检查物理层,第二层,当然还有第三层(因为我怀疑你甚至可以平)。
https://networkengineering.stackexchange.com/questions/16933
复制相似问题