如果一个数据包可以采用任何路由,你如何迭代地找出从你到主机的路径?
据我所知,数据包跟踪是在
packet_i
采用路由的基础上工作的:route(packet_(i-1)) + router_i
如果一个数据包可以采用任何路由,你如何迭代地找出从你到主机的路径?
据我所知,数据包跟踪是在
packet_i
采用路由的基础上工作的:route(packet_(i-1)) + router_i
关于 traceroute 如何在 Web 上工作的解释有很多,所以这里没有必要重复。你可以试试这个。
如果一个数据包可以采用任何路由,你如何迭代地找出从你到主机的路径?
你不能。
但是实际上数据包不采用任何旧路由,它们采用路由器认为最好的路由。虽然这肯定会在较长的持续时间和较短的持续时间内发生变化,但它往往相当稳定。
问题是,如果两条路由在路由器看来同样好,会发生什么。在这种情况下,原则上可以将路由器配置为在两条同样好的路由之间进行循环。在实践中,很少这样做,因为无序数据包交付会导致性能问题。相反,要么为所有数据包选择一条路由,要么通过数据包元数据的散列在路由之间拆分数据包,这些元数据对于给定的连接可能保持一致(例如源/目标 ips、L4 协议、端口号或类似的) .
所以大多数时候迭代过程会产生合理的结果,但并不是 100% 保证的。