DNS.查询与套接字.gethostbynam

2024-05-21 09:23:20 发布

您现在位置:Python中文网/ 问答频道 /正文

python和python有什么不同DNS.查询以及socket.gethostbyname,哪个更准确?你知道吗

我正在使用DNS.查询查找网站的IPv4。socket.gethostbyname做同样的任务。那么,构建python浏览器有什么不同,哪一个更快更准确呢。你知道吗


Tags: 网站dns浏览器socketipv4gethostbyname
1条回答
网友
1楼 · 发布于 2024-05-21 09:23:20

在你的上下文中定义“准确”。你知道吗

系统有许多方法来解析名称。它可以使用来自/etc/hosts的内容。它可以使用LDAP。它可以使用Windows名称解析。它可以使用DNS。还有很多其他的事情。你知道吗

在Linux系统上,有一个名为/etc/nsswitch.conf的文件,它告诉系统如何解析名称。例如,您可能有一行:

hosts:          files dns

这意味着在这个主机上,要解析一个名称,系统将首先在/etc/hosts中搜索,如果没有找到,则转到DNS。你知道吗

因此socket.gethostbyname将询问操作系统的名称,因此将使用上述机制。你知道吗

如果您使用DNS.query,您“只是”执行一个DNS查询,仅此而已。如果要解析的名称仅在/etc/hosts中,您将无法解析它。你知道吗

所以什么是准确的取决于你的限制和背景。两个电话做不同的事情。你知道吗

正如文档中所解释的,无论如何,您应该使用getaddrinfo而不是gethostbyname

gethostbyname() does not support IPv6 name resolution, and getaddrinfo() should be used instead for IPv4/v6 dual stack support.

相关问题 更多 >