Python中的DNS查询

这篇文章将讨论DNS和DNS查询的概念。之后,我们讨论使用Python进行DNS查询的方法。

什么是DNS

DNS(域名系统)将域名转换为一个公共IP地址。一个DNS服务器将任何网站的域名转换为该网站主机的公共IP。

DNS查询

DNS查询是一个过程,当任何用户点击网站域名或发现域名与公共IP相对应时,就会启动查找任何网站的公共IP。

DNS查询有两种类型:

  1. 前向DNS查询

    前向DNS查询也被称为前向DNS。它是一个通过使用DNS服务器解析域名来寻找任何域名的公共IP的过程。

  2. 反向DNS查询

    反向DNS查询的工作与正向DNS查询相反。它是一个用于查找域名与公共IP地址的过程。

DNS查询的命令

nslookup 命令针对主机名找到IP地址或域名系统。例如,nslookup google.com 的输出如下。

Python中的DNS查询

nslookup google.com 命令显示了域名系统和主机的公共IPgoogle.com

Python中的DNS查询

我们可以使用下面的代码在Python中找到任何域名的主机名或公共IP。

import socket
ip_addr = socket.gethostbyname('www.google.com')
print(ip_addr)

Python库的socket为开发基于网络的应用程序提供了不同的功能和方法,包括服务器-客户端程序。gethostbyname 函数用于查找任何主机名的公共IP地址。

gethostbyname 只返回主机名的IP地址,而不考虑操作系统的配置规则。然而,我们可以通过操作系统的所有配置规则找到主机名信息。

考虑一下下面的代码,用来寻找地址信息而不忽略操作系统的配置规则。

import socket
print(socket.getaddrinfo('www.google.com', 80))

Python中socket库的getaddrinfo 函数被用来在考虑操作系统配置规则的情况下获得与主机名有关的信息。

getaddrinfo 函数返回一个包含5个元素的列表family,socktype,proto, 和sockaddr

family,socktype, 和proto 是整数,可以和socket().canonname 一起使用,这是一个显示主机典型名称的字符串sockaddr 是一个有两个元素地址和端口的元组。