【问题标题】:gethostbyaddr gives a different host namegethostbyaddr 给出不同的主机名
【发布时间】:2019-07-27 08:47:54
【问题描述】:

我的 gethostbyaddr() 给出的主机名与我需要的不同。我需要的主机名甚至没有出现在别名列表中。

所以,当我为不同的网站尝试 gethostbyaddr 时,我对奇怪的主机名感到困惑。 因此,我尝试使用 gethostbyname 获取亚马逊的 ip。然后我在 gethostbyaddr() 中使用了生成的 IP,但我没有得到亚马逊的主机名。我阅读了官方文档,它指出返回的别名列表包含备用主机名,但我仍然没有得到 www.amazon.com

所以这就是我尝试做的。 socket.gethostbyname('www.amazon.com') 我的结果是:'13.35.134.162' 然后我输入这个IP: socket.gethostbyaddr('13.35.134.162') 但我的结果是: ('server-13-35-134-162.del54.r.cloudfront.net', [], ['13.35.134.162'])

有人可以解释为什么不显示“www.amazon.com”吗?我得到的这个主机名是什么?

【问题讨论】:

    标签: python python-3.x sockets


    【解决方案1】:

    您返回的名称(如果有的话)取决于网络管理员如何设置他们的reverse dns

    如果设置了反向 dns,根据我的经验,它通常设置为更具技术性或动态性的东西,而不是简单的名称。其原因通常与许多站点可能共享一个 IP 地址和/或一个站点解析为多个 IP 的事实有关。

    因此,与其尝试将 IP 反转为其中一个站点名称,不如将其反转为可识别该特定服务器的名称。

    【讨论】:

      【解决方案2】:

      这与 python 无关,而是 DNS 是如何工作的。一个 IP 地址可以托管许多网站,因此有许多主机名。因此,IP 查找的名称并不总是可逆的。

      【讨论】:

        【解决方案3】:

        网站名称不等于主机名。一般来说,没有 1:1 的关系。一台计算机可以服务多个网站。 OTOH 一个繁忙的网站由许多计算机提供服务(所谓的负载平衡)。 CDN(内容分发网络)使用一些 BGP-4 技巧(BGP-4 = 一种重要的路由协议)将您连接到地理位置附近的服务器 - 它们在不同位置运行多个“克隆”网站。

        您的需求是什么?如果您想确保连接到正确的网站,请依赖 HTTPS 证书。

        【讨论】:

          猜你喜欢
          • 2013-11-01
          • 2015-08-23
          • 2012-09-02
          • 2013-11-23
          • 2014-05-06
          • 1970-01-01
          • 1970-01-01
          • 2011-08-16
          • 1970-01-01
          相关资源
          最近更新 更多