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爬虫之抓取糗事百科代码分享
Nov 06 Python
python动态加载包的方法小结
Apr 18 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 Python
python中urlparse模块介绍与使用示例
Nov 19 Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 Python
python寻找list中最大值、最小值并返回其所在位置的方法
Jun 27 Python
python进行文件对比的方法
Dec 24 Python
Python定时器线程池原理详解
Feb 26 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
May 25 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
Python 开发工具通过 agent 代理使用的方法
Sep 27 Python
用Python制作音乐海报
Jan 26 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下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
php字符串分割函数用法实例
2015/03/17 PHP
php实现json编码的方法
2015/07/30 PHP
详解PHP的Yii框架中的Controller控制器
2016/03/29 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
python itsdangerous模块的具体使用方法
2020/02/17 Python
python TCP包注入方式
2020/05/05 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
中国跨境电商:Tomtop
2017/03/16 全球购物
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
铁路个人事迹材料
2014/01/30 职场文书
python实现自动化群控的步骤
2021/04/11 Python
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript