【发布时间】:2011-06-27 17:52:44
【问题描述】:
我正在使用 UDP 网络协议将消息从各种客户端发送到根服务器。
客户端到服务器的消息可能不直接发送,可能会通过其他客户端发送。
我想通过查看根服务器收到的消息来了解发送消息的客户端。如何做到这一点?
【问题讨论】:
标签: network-programming udp traceroute
我正在使用 UDP 网络协议将消息从各种客户端发送到根服务器。
客户端到服务器的消息可能不直接发送,可能会通过其他客户端发送。
我想通过查看根服务器收到的消息来了解发送消息的客户端。如何做到这一点?
【问题讨论】:
标签: network-programming udp traceroute
UDP 不包含此信息。如果您想跟踪消息通过的服务器,则需要在协议中包含一些内容。
traceroute 程序通过将 TTL 设置为增加的数字来使用一种技巧来获取退回的数据包。它以 1 的 TTL 开始,以便第一次反弹来自离源最近的服务器。然后它尝试 2 的 TTL 以从路径上的第二个服务器获得反弹,依此类推。
【讨论】:
traceroute 是客户端和启发式的,即仅适用于稳定连接。由于您实际上是在构建一个覆盖网络,因此获取有关路由的信息的唯一方法是根据您的路由算法重建路由(很难,并且在分布式网络中可能不可行)或让每个中继添加一个注释(通常由中继的名称和之前的 IP 地址)到消息中。
【讨论】: