【问题标题】:Howto check if two hosts are the same如何检查两个主机是否相同
【发布时间】:2023-03-13 22:36:01
【问题描述】:

我刚刚遇到一个问题,我必须检查路径是否指向 Windows 共享。此问题的一部分是检查主机 A 是否与主机 B 相同。其中主机 A 和主机 B 可以是以下 {IPv4-Address, IPv6-Address, Hostname, FQDN} 之一。因为我不需要精确,所以在我的情况下解析和比较 IP 地址就足够了。

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

【问题讨论】:

  • 即使你知道两个主机是一样的——那不是没有意义吗?在 DNS 更新、负载平衡等之后,两台主机可能稍后会不同。
  • 嗯,很好,但是有些应用程序没有负载平衡,DNS 更新很少见。无论如何,这个问题是理论上的,没有声称是合理的。
  • 无论如何我都有兴趣看到答案:)

标签: networking dns ip


【解决方案1】:

将这两个地址传递给getaddrinfo() 函数,并比较结果列表中是否有任何匹配项。

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

【讨论】:

  • 我喜欢这种方法,你会得到假阴性。假设机器 A 有两个 IP 地址,比如说 192.168.1.1 和 192.168.2.1。地址不匹配,但主机相同。顺便说一句:MAC 地址也有同样的问题。
  • 是的,你当然会。打败这种逻辑的方法没有尽头。它可以告诉你两个主机相同的——它不能证明它们不是
【解决方案2】:

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

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

一些启发式方法可能会有所帮助(例如,fingerprinting 机器),但远未达到 100%。

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    相关资源
    最近更新 更多