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连接MySQL、MongoDB、Redis、memcache等数据库的方法
Nov 15 Python
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
Python中执行存储过程及获取存储过程返回值的方法
Oct 07 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
python使用pdfminer解析pdf文件的方法示例
Dec 20 Python
python 在指定范围内随机生成不重复的n个数实例
Jan 28 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
Feb 17 Python
使用python判断jpeg图片的完整性实例
Jun 10 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
利用Python函数实现一个万历表完整示例
Jan 23 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
第三节 定义一个类 [3]
2006/10/09 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
javascript静态的url如何传递
2007/05/03 Javascript
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
JS+jQuery实现注册信息的验证功能
2017/09/26 jQuery
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
JS实现简易计算器
2020/02/14 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
Python实现的简单排列组合算法示例
2018/07/04 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
Jdbc数据访问技术面试题
2012/03/30 面试题
数学专业毕业生自荐信
2013/11/10 职场文书
专业见习报告范文
2014/11/03 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
语文教师个人工作总结
2015/02/06 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
晚会开幕词范文
2016/03/04 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫
Python 文字识别
2022/05/11 Python
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python