python dns正向查询、反向查询实例代码

发布时间:2020-07-18编辑:脚本学堂
本文介绍了python实现dns正向查询、反向查询的例子,有关python dns查询的实现方法,有需要的朋友参考下。

一,dns查询过程:
以查询 www.baidu.com为例
(1)电脑向本地域名服务器发送解析www.baidu.com的请求
(2)本地域名服务器收到请求后,先查询本地的缓存,如果找到直接返回查询结果,如果没有该记录,本地域名服务器把www.baidu.com的请求发送给根域名服务器
(3)根域名服务器收到请求后,把.com域的服务器IP地址返回给本地域名服务器
(4)本地域名服务器连接.com服务器,向其请求解析域名www.baidu.com, .com服务器把baidu.com服务器的ip地址返回给本地dns服务器
(5)本地dns服务器向baidu.com服务器发送解析域名请求,baidu.com服务器将www.baidu.com的ip地址返回给本地dns服务器
(6)本地dns服务器把www.baidu.com的ip地址返回给电脑。

二,域名和ip地址的对应关系:
一个域名可以对应多个ip地址,但在同一时刻,一个域名只能有一个ip地址,一个ip地址可以对应多个域名。

二,查询dns
python可以实现dns的正向和反向查询。下面是正向查询的代码:
 

复制代码 代码示例:
#!/usr/bin/env python
import sys,socket
result=socket.getaddrinfo(sys,argv[1],none)
print result[0][4]
 

因为一个域名可以有多个ip地址,所以上述程序两次运行的结果可能会不同。
运行程序 :
./test.py www.baidu.com

结果为 :
(‘111.13.100.91',80)
反向查询:
 

复制代码 代码示例:
#!/usr/bin/env python
import sys,socket
try:
 result=socket.gethostbyaddr(sys.argv[1])
 print "hostname is "+result[0]
except socket.herror,e:
 print "can't look up"
 

运行程序
./test2  127.0.0.1

结果为:
hostname is localhost