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中ConfigParse模块的用法
Sep 29 Python
详解Python中的strftime()方法的使用
May 22 Python
python开发之str.format()用法实例分析
Feb 22 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
详解用TensorFlow实现逻辑回归算法
May 02 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
Python基于stuck实现scoket文件传输
Apr 02 Python
Python爬虫之Selenium实现窗口截图
Dec 04 Python
Python 随机按键模拟2小时
Dec 30 Python
python Scrapy框架原理解析
Jan 04 Python
Python实现文字pdf转换图片pdf效果
Apr 03 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
Symfony2函数用法实例分析
2016/03/18 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
canvas实现钟表效果
2017/02/13 Javascript
详解nodeJS中读写文件方法的区别
2017/03/06 NodeJs
node的process以及child_process模块学习笔记
2018/03/06 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
Vue项目中如何使用Axios封装http请求详解
2019/10/23 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
聊聊Python中的pypy
2018/01/12 Python
Python 实现数组相减示例
2019/12/27 Python
python模拟实现斗地主发牌
2020/01/07 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
2020/06/29 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
First Aid Beauty官网:FAB急救面霜
2018/05/24 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
个人应聘自我评价分享
2013/11/18 职场文书
出资证明书范本(标准版)
2014/09/24 职场文书
2014年流动人口工作总结
2014/11/26 职场文书
2016春节放假通知范文
2015/08/18 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
go xorm框架的使用
2021/05/22 Golang