我了解客户端如何跟踪到服务器的路由(使用 traceroute 或 tracert)。但是服务器有没有办法跟踪到客户端的路由?
问题是,我有一群住在偏远地区的互联网用户,他们抱怨他们的互联网访问速度很慢。我计划开发一些软件,让他们可以轻松运行下载测试,然后存储结果。一旦我们收集了合理数量的数据,我们就有望找到一种模式。
结合下载数据,如果有跟踪路由数据就更好了。我不知道如何在不编写客户端软件的情况下从客户端启动此功能,而我并不想这样做。因此,我试图找到一种收集路由信息但由服务器启动的机制。
我倾向于使用 Linux 服务器。
答案1
你不会想这么做的。从服务器到客户端运行的跟踪路由不能保证与从客户端到服务器运行的跟踪路由返回相同的结果。
数据包从节点 A 到节点 B 所采用的路由可能与反方向的路由不同。* 任何给定 IP 数据包所采用的确切路由由数据包路径上的中间路由器决定。路由器可能有多个到目标网络的路由(例如为了冗余),并且可以根据网络拥塞、故障链接等因素自由决定使用哪条路由。
因此,不可能启动从 A 到 B 的有意义的路线追踪来自节点 B(即“服务器”),因为无法保证报告的路由是从节点 A 到 B 发送数据包的实际使用的路由。
如果服务器确实要“启动”从客户端到服务器的跟踪路由,则服务器必须简单地命令客户端运行到服务器的跟踪路由。这当然与在客户端上配置计划或触发命令来执行完全相同的操作没有什么不同。
*从节点 A 发送到节点 B 的一些数据包甚至可能采用与其对应方不同的路由,但实际上这种情况通常不会在其他稳定的网络中发生。