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


Posted in Python onApril 25, 2014

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]

因为一个域名可以有多个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
Python 相关文章推荐
python实现dnspod自动更新dns解析的方法
Feb 14 Python
python中while循环语句用法简单实例
May 07 Python
Python实现二叉堆
Feb 03 Python
Numpy array数据的增、删、改、查实例
Jun 04 Python
Python pymongo模块常用操作分析
Sep 01 Python
python获取服务器响应cookie的实例
Dec 28 Python
Python正则表达式匹配日期与时间的方法
Jul 07 Python
Python使用Pandas读写Excel实例解析
Nov 19 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
Jun 09 Python
Python单元测试及unittest框架用法实例解析
Jul 09 Python
Python request post上传文件常见要点
Nov 20 Python
python网络编程之TCP通信实例和socketserver框架使用例子
Apr 25 #Python
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 #Python
python中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 #Python
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 #Python
Python time模块详解(常用函数实例讲解,非常好)
Apr 24 #Python
Python 时间操作例子和时间格式化参数小结
Apr 24 #Python
python抓取网页图片并放到指定文件夹
Apr 24 #Python
You might like
Zend引擎的发展 [15]
2006/10/09 PHP
浅谈php和.net的区别
2014/09/28 PHP
php调用KyotoTycoon简单实例
2015/04/02 PHP
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
ajax异步请求详解
2017/01/06 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
JavaScript实现缓动动画
2020/11/25 Javascript
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
用Python计算三角函数之acos()方法的使用
2015/05/15 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
python实现小世界网络生成
2019/11/21 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
.dcm格式文件软件读取及python处理详解
2020/01/16 Python
Python的in,is和id函数代码实例
2020/04/18 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
美国创意之家:BulbHead
2017/07/12 全球购物
eBay德国站:eBay.de
2017/09/14 全球购物
linux面试题参考答案(6)
2014/08/29 面试题
linux面试题参考答案(11)
2012/05/01 面试题
小加工厂管理制度
2014/01/21 职场文书
校园广播稿500字
2014/02/04 职场文书
2014政务公开实施方案
2014/02/19 职场文书
自我鉴定标准格式
2014/03/19 职场文书
企业党员一句话承诺
2014/05/30 职场文书
三八活动策划方案
2014/08/17 职场文书
2014幼儿园中班工作总结
2014/11/10 职场文书
放弃继承权公证书
2015/01/23 职场文书