我刚刚遇到一个问题,我必须检查路径是否指向Windows共享。此问题的一部分是检查主机A是否与主机B相同。主机A和主机B可以是以下任何一种{IPv4地址,IPv6地址,主机名,FQDN}。由于我不需要确切地解决和比较我的情况下的IP地址就足够了。如何检查两台主机是否相同
但理论上来说,有一种方法可以检查主机是否相同?
我刚刚遇到一个问题,我必须检查路径是否指向Windows共享。此问题的一部分是检查主机A是否与主机B相同。主机A和主机B可以是以下任何一种{IPv4地址,IPv6地址,主机名,FQDN}。由于我不需要确切地解决和比较我的情况下的IP地址就足够了。如何检查两台主机是否相同
但理论上来说,有一种方法可以检查主机是否相同?
不,没有通用方法来查看两个标识符(名称或地址)是否转到同一主机。一个例子:192.0.2.1
和2001:db8::bad:dcaf
。他们是一样的吗? (回答:看不出)
在互联网中没有主机身份的一般概念。一些协议有这样的概念,例如SSH(连接到主机,看指纹是否匹配)或HIP(测试密钥),但是您依赖于为这些特定机器激活的协议。
一些启发式方法可能会有所帮助(例如,该机器为fingerprinting),但它远不是100%。
将这两个地址传递给getaddrinfo()
函数,并将结果列表进行比较。
与gethostbyname()
不同,此函数将高兴地解析IPv6文字,并且还会返回与主机名关联的任何相关的A
或AAAA
记录。
我用这种方法你会得到错误的否定。考虑机器A有两个IP地址,比如说192.168.1.1和192.168.2.1。地址不匹配,但主机相同。 BTW:与MAC地址相同的问题。 – 2010-05-25 20:07:11
是的,当然你会的。没有办法打败这种逻辑。它可以告诉你,两个主机是相同的 - 它不能证明他们不是_。 – Alnitak 2010-05-25 20:09:50
即使你知道两个主机是相同的 - 是不是没有意义?这两个主机可能会在不同的时刻出现,包括DNS更新,负载平衡等等。 – Dolph 2010-05-25 16:09:50
那么好点,但有没有负载平衡的应用程序和DNS更新是罕见的。无论如何,这个问题在理论上是理性的,没有声称是合理的。 – 2010-05-25 16:24:25
我很感兴趣,无论看到的答案:) – Dolph 2010-05-25 16:28:53