如何通过DNS协议检测两台主机之间的网络延迟?

时间:2009-11-15 15:28:09

标签: dns

  H1------------------H2
   \                  /
    \                /
     \              /
      \            /
          x (me)

假设我在x点,并且有两个任意主机点H1,H2。我可以通过ping获得H1和我之间的延迟,同样我也可以通过ping得到H2和我之间的延迟(因为有时间戳),问题是,如何使用DNS协议获得H1和H2之间的延迟?

3 个答案:

答案 0 :(得分:0)

她的问题毫无意义。

DNS用于将主机名(例如google.comsstatic.net)转换为IP地址(例如64.233.169.10469.59.196.213)。

它与单个服务器的物理位置或网络连接无关。

通常,无法远程确定两个任意服务器之间的链接速度。如果您可以连接到其中一个服务器并直接ping另一个服务器,那么您可以通过这种方式获得链接速度,但除此之外,这是不可能的。

答案 1 :(得分:0)

首先, DNS绝对 NOT 提供任何线索
编辑:[关注Grumdrig的评论] ...除了与执行往返这些服务器的DNS消息的时间相关的线索。我最初的说法是什么意思没有任何内在的DNS协议使它更适合这个目的,而不是HTTP,ICMP,FTP或任何协议可能导致服务器返回一些消息

其次,这样做的简单方法是在H1或H2上直接使用软件/访问,但我认为这个问题的精神确实是:

我们如何估算 H1和H2之间的延迟,而无法直接访问任何主机

估算 可以通过使用H1或H2与多个工作站之间的读数(时间和路径)来完成(不只是一个)。 (以及在这些工作站之间有路线)。

此过程类似于三角测量,用于在普通2D或3D欧几里德空间中查找距离或位置,但当然,记住

  • 网络路由是动态的(与几何中的段不同)
  • 距离不是那么线性; - )

在特殊情况下,可以使用另一种估算此距离的技巧
  - 如果H1或H2恰好是可以从第三个位置查询的服务器 和
  - 如果此服务器需要其他主机的服务来履行此类请求。

例如,如果H1是一个Web服务器,它使用位于H2上的Web服务来生成特定的Web页面。通过对H1的这些请求进行多次测量,并通过减去H1和我们的工作站之间的距离/延迟,我们可以估计H1和H2之间的距离/延迟。我们需要小心

  • 进行多次测量以平均许多因素,包括此链的非网络部分(例如,Web服务器解析请求所需的时间,无论如何都要处理一些数字......)
  • 考虑各种可能性,例如可能的缓存等......
  • 估计链的非网络相关部分

这种特殊情况的一个特例是,H1 [或H2]偶然位于第三点与H2 [或H1]之间的路径上。在这种情况下,并假设与traceroute相关联的ICMP数据包未在途中被过滤/停止,一个简单的traceroute将回答这个问题。然而,这种情况相对不太可能......

答案 2 :(得分:0)

这个怎么样:将H1定义为某个域的authoratative名称服务器,然后让H2解析该域。然后决定时间(可能是“我不知道”的响应)并将ping时间减去H2。

P.S。告诉你的朋友,骗子永远不会繁荣。

编辑删除我声称这是愚蠢的声明。我认为这个问题毕竟不是毫无意义的 - 记住这是一个学术练习。它可能不太实用,但我认为这可能是可能的,也许可以通过我的解决方案。 (一般来说,三角测量可能是一个更好的想法,但它需要适当位置的机器。)

另外,是的,我应该提到这需要两台机器都运行DNS服务器。但是,可能没有使用DNS的解决方案。这个问题是二手的,可能最初有这个规定。