python实现DNS正向查询、反向查询的例子
程序员文章站
2022-05-22 17:59:39
...
1.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地址返回给电脑。
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]
#!/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"
#!/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
结果为:
结果为:
复制代码 代码如下:
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论