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 相关文章推荐
Pythont特殊语法filter,map,reduce,apply使用方法
Feb 27 Python
Python 实现一个颜色色值转换的小工具
Dec 06 Python
详解Python if-elif-else知识点
Jun 11 Python
Python 获取div标签中的文字实例
Dec 20 Python
python中aioysql(异步操作MySQL)的方法
Apr 11 Python
Django给admin添加Action的步骤详解
May 01 Python
解决python 3 urllib 没有 urlencode 属性的问题
Aug 22 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
pytorch 常用线性函数详解
Jan 15 Python
tensorboard显示空白的解决
Feb 15 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
python excel和yaml文件的读取封装
Jan 12 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一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
详解php几行代码实现CSV格式文件输出
2017/07/01 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
javascript获取当前ip的代码
2009/05/10 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
BootStrap创建响应式导航条实例代码
2016/05/31 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
2020/02/23 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
python获取android设备的GPS信息脚本分享
2015/03/06 Python
python实现从字典中删除元素的方法
2015/05/04 Python
Python中生成Epoch的方法
2017/04/26 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
python中reload重载实例用法
2020/12/15 Python
vivo智能手机官方商城:vivo
2016/09/22 全球购物
成品仓管员工作职责
2013/12/29 职场文书
班主任个人工作反思
2014/04/28 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
机械生产实习心得体会
2016/01/22 职场文书