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绘制数据的瀑布图的教程
Apr 07 Python
Python连接mysql数据库的正确姿势
Feb 03 Python
python PIL模块与随机生成中文验证码
Feb 27 Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 Python
opencv python 傅里叶变换的使用
Jul 21 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
Python 用三行代码提取PDF表格数据
Oct 13 Python
使用python实现画AR模型时序图
Nov 20 Python
详解python常用命令行选项与环境变量
Feb 20 Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 Python
如何解决python多种版本冲突问题
Oct 13 Python
Django如何与Ajax交互
Apr 29 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
MySql中正则表达式的使用方法描述
2008/07/30 PHP
用PHP编写和读取XML的几种方式
2013/01/12 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
2012/05/23 Javascript
JS实现仿京东淘宝竖排二级导航
2014/12/08 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
javascript表单验证大全
2015/08/12 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
2019/11/25 Javascript
js验证账户名是否重复
2020/05/26 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
Python重新引入被覆盖的自带function
2014/07/16 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
python如何编写win程序
2020/06/08 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
春节联欢晚会主持词范文
2014/03/24 职场文书
公司聘任书模板
2014/03/29 职场文书
《将心比心》教学反思
2014/04/08 职场文书
2014年征兵标语
2014/06/20 职场文书
企业财务人员岗位职责
2015/04/14 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang