2010-05-25 83 views
3

我刚刚遇到一个问题,我必须检查路径是否指向Windows共享。此问题的一部分是检查主机A是否与主机B相同。主机A和主机B可以是以下任何一种{IPv4地址,IPv6地址,主机名,FQDN}。由于我不需要确切地解决和比较我的情况下的IP地址就足够了。如何检查两台主机是否相同

但理论上来说,有一种方法可以检查主机是否相同?

+0

即使你知道两个主机是相同的 - 是不是没有意义?这两个主机可能会在不同的时刻出现,包括DNS更新,负载平衡等等。 – Dolph 2010-05-25 16:09:50

+0

那么好点,但有没有负载平衡的应用程序和DNS更新是罕见的。无论如何,这个问题在理论上是理性的,没有声称是合理的。 – 2010-05-25 16:24:25

+0

我很感兴趣,无论看到的答案:) – Dolph 2010-05-25 16:28:53

回答

2

不,没有通用方法来查看两个标识符(名称或地址)是否转到同一主机。一个例子:192.0.2.12001:db8::bad:dcaf。他们是一样的吗? (回答:看不出)

在互联网中没有主机身份的一般概念。一些协议有这样的概念,例如SSH(连接到主机,看指纹是否匹配)或HIP(测试密钥),但是您依赖于为这些特定机器激活的协议。

一些启发式方法可能会有所帮助(例如,该机器为fingerprinting),但它远不是100%。

0

将这两个地址传递给getaddrinfo()函数,并将结果列表进行比较。

gethostbyname()不同,此函数将高兴地解析IPv6文字,并且还会返回与主机名关联的任何相关的AAAAA记录。

+1

我用这种方法你会得到错误的否定。考虑机器A有两个IP地址,比如说192.168.1.1和192.168.2.1。地址不匹配,但主机相同。 BTW:与MAC地址相同的问题。 – 2010-05-25 20:07:11

+1

是的,当然你会的。没有办法打败这种逻辑。它可以告诉你,两个主机是相同的 - 它不能证明他们不是_。 – Alnitak 2010-05-25 20:09:50