好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

python实现DNS正向查询、反向查询的例子

1.DNS查询过程:

以查询 HdhCmsTestbaidu测试数据为例

(1)电脑向本地域名服务器发送解析HdhCmsTestbaidu测试数据的请求
(2)本地域名服务器收到请求后,先查询本地的缓存,如果找到直接返回查询结果,如果没有该记录,本地域名服务器把HdhCmsTestbaidu测试数据的请求发送给根域名服务器
(3)根域名服务器收到请求后,把测试数据域的服务器IP地址返回给本地域名服务器
(4)本地域名服务器连接测试数据服务器,向其请求解析域名HdhCmsTestbaidu测试数据, 测试数据服务器把baidu测试数据服务器的IP地址返回给本地DNS服务器
(5)本地DNS服务器向baidu测试数据服务器发送解析域名请求,baidu测试数据服务器将HdhCmsTestbaidu测试数据的IP地址返回给本地DNS服务器
(6)本地DNS服务器把HdhCmsTestbaidu测试数据的IP地址返回给电脑。

2.域名和IP地址的对应关系:

一个域名可以对应多个IP地址,但在同一时刻,一个域名只能有一个IP地址,一个IP地址可以对应多个域名。

3.查询DNS

Python可以实现DNS的正向和反向查询。下面是 正向查询的代码:

代码如下:


#!/usr/bin/env python
import sys,socket
result=socket.getaddrinfo(sys,argv[1],None)
print result[0][4]

因为一个域名可以有多个IP地址,所以上述程序两次运行的结果可能会不同。

运行程序 :

代码如下:

./test.py HdhCmsTestbaidu测试数据


结果为 :

代码如下:

(‘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"

运行程序

结果为:

代码如下:

hostname is localhost

查看更多关于python实现DNS正向查询、反向查询的例子的详细内容...

  阅读:34次