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常用的日期时间处理方法示例
Feb 08 Python
python 回调函数和回调方法的实现分析
Mar 23 Python
python下实现二叉堆以及堆排序的示例
Sep 29 Python
Django rest framework工具包简单用法示例
Jul 20 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 Python
python添加模块搜索路径和包的导入方法
Jan 19 Python
关于python多重赋值的小问题
Apr 17 Python
Python图像处理模块ndimage用法实例分析
Sep 05 Python
python os.path.isfile 的使用误区详解
Nov 29 Python
Python Opencv轮廓常用操作代码实例解析
Sep 01 Python
Python Selenium操作Cookie的实例方法
Feb 28 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 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的闭包(Closure)匿名函数详解
2015/02/22 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
JavaScript事件列表解说
2006/12/22 Javascript
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
Python去除字符串两端空格的方法
2015/05/21 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
python 图片去噪的方法示例
2019/07/09 Python
Python使用python-docx读写word文档
2019/08/26 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
在django中自定义字段Field详解
2019/12/03 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
单身联谊活动方案
2014/01/29 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
课堂教学改革实施方案
2014/03/17 职场文书
小学教师读书活动总结
2014/07/08 职场文书
新课培训心得体会
2014/09/03 职场文书
家长意见书
2015/06/04 职场文书
k-means & DBSCAN 总结
2021/04/27 Python
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
MySQL数据库如何给表设置约束详解
2022/03/13 MySQL