最近对python的网络通讯比较感兴趣,了解了一下,写了一个DNS(domain name system,以下简称DNS)查询脚本。
1.DNS是通过UDP协议查询的,所以首先协议导入socket模块并开启UDP服务,代码如下:
import socket
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
2.编写DNS查询报文:
(1)标识(两字节),由用户随意设置,在应答报文会返回同样的标识。
(2)报文参数(两字节,详细参数如下),
- | 参数名 | QR | 操作码 | AA | TC | RD | RA | 保留 | recode |
---|---|---|---|---|---|---|---|---|---|
- | 值 | 0 | 0000 | 0 | 0 | 1 | 0 | 000 | 0000 |
- | 含义 | 查询 | 标准查询 | 是否为权威服务器 | 报文未截断 | 期望递归解 |