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 相关文章推荐
在Gnumeric下使用Python脚本操作表格的教程
Apr 14 Python
python fabric实现远程部署
Jan 05 Python
Python操作Excel之xlsx文件
Mar 24 Python
Python内置函数delattr的具体用法
Nov 23 Python
Zookeeper接口kazoo实例解析
Jan 22 Python
Python模块WSGI使用详解
Feb 02 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
Sep 17 Python
解决Pycharm出现的部分快捷键无效问题
Oct 22 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 Python
Django实现drf搜索过滤和排序过滤
Jun 21 Python
分享3个非常实用的 Python 模块
Mar 03 Python
Python Pygame实战在打砖块游戏的实现
Mar 17 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利用单例模式实现日志处理类库
2014/02/10 PHP
PHP实现获取图片颜色值的方法
2014/07/11 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
快速查询Python文档方法分享
2017/12/27 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
毕业生多媒体设计求职信
2013/10/12 职场文书
外贸实习生自荐信范文
2013/11/24 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
给校长的建议书200字
2014/05/16 职场文书
校园演讲稿汇总
2014/05/21 职场文书
镇创先争优活动总结
2014/08/28 职场文书
忠诚教育心得体会
2014/09/03 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers