2024-05-21 09:23:20 发布
网友
python和python有什么不同DNS.查询以及socket.gethostbyname,哪个更准确?你知道吗
我正在使用DNS.查询查找网站的IPv4。socket.gethostbyname做同样的任务。那么,构建python浏览器有什么不同,哪一个更快更准确呢。你知道吗
在你的上下文中定义“准确”。你知道吗
系统有许多方法来解析名称。它可以使用来自/etc/hosts的内容。它可以使用LDAP。它可以使用Windows名称解析。它可以使用DNS。还有很多其他的事情。你知道吗
/etc/hosts
在Linux系统上,有一个名为/etc/nsswitch.conf的文件,它告诉系统如何解析名称。例如,您可能有一行:
/etc/nsswitch.conf
hosts: files dns
这意味着在这个主机上,要解析一个名称,系统将首先在/etc/hosts中搜索,如果没有找到,则转到DNS。你知道吗
因此socket.gethostbyname将询问操作系统的名称,因此将使用上述机制。你知道吗
socket.gethostbyname
如果您使用DNS.query,您“只是”执行一个DNS查询,仅此而已。如果要解析的名称仅在/etc/hosts中,您将无法解析它。你知道吗
DNS.query
所以什么是准确的取决于你的限制和背景。两个电话做不同的事情。你知道吗
正如文档中所解释的,无论如何,您应该使用getaddrinfo而不是gethostbyname:
getaddrinfo
gethostbyname
gethostbyname() does not support IPv6 name resolution, and getaddrinfo() should be used instead for IPv4/v6 dual stack support.
在你的上下文中定义“准确”。你知道吗
系统有许多方法来解析名称。它可以使用来自
/etc/hosts
的内容。它可以使用LDAP。它可以使用Windows名称解析。它可以使用DNS。还有很多其他的事情。你知道吗在Linux系统上,有一个名为
/etc/nsswitch.conf
的文件,它告诉系统如何解析名称。例如,您可能有一行:这意味着在这个主机上,要解析一个名称,系统将首先在
/etc/hosts
中搜索,如果没有找到,则转到DNS。你知道吗因此
socket.gethostbyname
将询问操作系统的名称,因此将使用上述机制。你知道吗如果您使用
DNS.query
,您“只是”执行一个DNS查询,仅此而已。如果要解析的名称仅在/etc/hosts
中,您将无法解析它。你知道吗所以什么是准确的取决于你的限制和背景。两个电话做不同的事情。你知道吗
正如文档中所解释的,无论如何,您应该使用
getaddrinfo
而不是gethostbyname
:相关问题 更多 >
编程相关推荐