用python进行DNS(domain name system)查询(--查询报文的构建与发送)
来源:互联网 发布:em算法应用实例 编辑:程序博客网 时间:2024/06/10 02:44
最近对python的网络通讯比较感兴趣,了解了一下,写了一个DNS(domain name system,以下简称DNS)查询脚本。
1.DNS是通过UDP协议查询的,所以首先协议导入socket模块并开启UDP服务,代码如下:
import socketsock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
2.编写DNS查询报文:
(1)标识(两字节),由用户随意设置,在应答报文会返回同样的标识。
(2)报文参数(两字节,详细参数如下),
(3)问题数(两字节)
(4)应答数(两字节)
(5)授权机构数(两字节)
(6)附加信息数(两字节)
(7)查询信息(要注意的是网址之间的点不是以ASCII码表示,而是已到下一个点之间的ASCII码数)
例如:www.baidu.com的查询信息为\x00\x03www\x05baidu\x03com\x00
(8)查询类型(两字节,值为0001,即将域名转换为IPv4地址)
(9)查询类(两字节,值为0001,即查询的是因特网的域名)
构造报文的代码是:
msg = b'\x5c\x6d\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03www\x05baidu\x03com\x00\x00\x01\x00\x01'
4.发送查询报文,并接受返回的数据,代码如下:
sock.sendto(msg,('8.8.8.8',53))c = sock.recv(4096)
至此发送就讲完了,下一次来解析返回的数据
0 0
- 用python进行DNS(domain name system)查询(--查询报文的构建与发送)
- 用python进行DNS查询--(报文解析篇)
- DNS, Domain Name System
- Domain Name System (DNS)
- DNS -- Domain Name System 简介
- 使用Python进行DNS查询
- 域名管理系统DNS(Domain Name System)
- DNS--域名系统 (Domain Name System)
- IANA Domain Name System (DNS) Parameters
- DNS(Domain Name System) 域名系统 解析
- DNS(Domain Name System,域名系统)
- DNS 域名系统 (Domain Name System)
- DNS(Domain Name System,域名系统)
- DNS报文格式及DNS查询程序
- 如何进行DNS查询
- python与域名系统(DNS)正向查询
- DNS Domain Name Sysytem
- 用Perl进行DNS反向查询
- (五十九)iOS网络基础之UIWebView简易浏览器实现
- ubuntu下一些常用的命令
- 网球之李娜
- PAT1083 List Grades
- 我的2014-转折中前行
- 用python进行DNS(domain name system)查询(--查询报文的构建与发送)
- Webkit的自定义属性获取函数以及属性删除函数实现
- POJ 1426-Find The Multiple(bfs)
- 欢迎使用CSDN-markdown编辑器
- uiview转uicontrol然后就可以响应事件了。
- VS中MFC连接MySQL的方法
- PCI9054 学习小结
- 记单词应用的游戏化设计
- 【hibernate框架】一对多(多对一)双向CRUD-关于delete1