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使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
python 获取当天每个准点时间戳的实例
May 22 Python
Flask框架Flask-Principal基本用法实例分析
Jul 23 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
Python的高阶函数用法实例分析
Apr 11 Python
python与字符编码问题
May 24 Python
pandas 对日期类型数据的处理方法详解
Aug 08 Python
python线程中的同步问题及解决方法
Aug 29 Python
用python计算文件的MD5值
Dec 23 Python
python excel和yaml文件的读取封装
Jan 12 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
PHP 高手之路(一)
2006/10/09 PHP
收集的二十一个实用便利的PHP函数代码
2010/04/22 PHP
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
javascript 播放器 控制
2007/01/22 Javascript
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
javascript 二维数组的实现与应用
2010/03/16 Javascript
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
Flask数据库迁移简单介绍
2017/10/24 Python
python实现小球弹跳效果
2019/05/10 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
matlab中二维插值函数interp2的使用详解
2020/04/22 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
华丽的手绘陶瓷:MacKenzie-Childs
2017/02/04 全球购物
医院护理人员的自我评价分享
2013/10/04 职场文书
生物化学研究助理员求职信
2013/10/09 职场文书
中专生的个人自我评价
2013/12/11 职场文书
产品销售员岗位职责
2013/12/18 职场文书
预备党员思想汇报范文
2013/12/29 职场文书
党员思想汇报范文
2013/12/30 职场文书
走群众路线学习笔记
2014/11/06 职场文书
PHP使用QR Code生成二维码实例
2021/07/07 PHP
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript