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发送以整个文件夹的内容为附件的邮件的教程
May 06 Python
Python中处理字符串的相关的len()方法的使用简介
May 19 Python
Python实现的双色球生成功能示例
Dec 18 Python
python无限生成不重复(字母,数字,字符)组合的方法
Dec 04 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
python Gunicorn服务器使用方法详解
Jul 22 Python
PyTorch: 梯度下降及反向传播的实例详解
Aug 20 Python
线程安全及Python中的GIL原理分析
Oct 29 Python
python由已知数组快速生成新数组的方法
Apr 08 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
python3中数组逆序输出方法
Dec 01 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
收音机指标测试方法及仪器
2021/03/01 无线电
PHP翻页跳转功能实现方法
2020/11/30 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
php实现socket推送技术的示例
2017/12/20 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
HTML的select控件美化
2017/03/27 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
Python函数嵌套实例
2014/09/23 Python
举例介绍Python中的25个隐藏特性
2015/03/30 Python
在Python中使用Mako模版库的简单教程
2015/04/08 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
对python 中class与变量的使用方法详解
2019/06/26 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
安全员岗位职责
2013/11/11 职场文书
策划创业计划书
2014/02/06 职场文书
公民授权委托书
2014/10/15 职场文书
欠条样本
2015/07/03 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android