本地域名解析过程和DNS协议

188 阅读2分钟

1、DNS域名解析处理过程

sequenceDiagram
DNS解析->> 本地HOST: 请求本地HOST
本地HOST ->> 本地HOST: 本地映射关系返回
DNS解析->> DNS缓存: 请求DNS缓存
DNS缓存  ->> DNS缓存: 本地缓存返回
DNS解析->> DNSServer: 请求DNSServer
DNSServer ->> DNSServer: DNS响应返回

2、DNS请求应答报文

ID请求头问题格式应答资源记录数授权资源记录数额外资源记录数应答资源记录授权资源记录额外资源记录
16bit16bit16bit16bit16bit16bit依据应答资源记录数变长依据授权资源记录数变长依据额外资源记录数变长

DNS请求头

QROPCODEAATCRDRAZERORCODE
1bit4bit1bit1bit1bit1bit3bit(这三位未使用,固定为0)4bit

QR 查询应答标志,0表示这是查询报文,1表示这是应答报文

OPCODE 查询应答类型,0表示标准查询,1表示反向查询,2表示请求服务器状态。

AA 表示权威回答( authoritative answer ),意味着当前查询结果是由域名的权威服务器给出的,仅由应答报文使用.

TC 位表示截断( truncated ),使用 UDP 时,如果应答超过 512 字节,只返回前 512 个字节.

RD 表示递归查询标志 ( recursion desired ),在请求中设置,并在应答中返回.

RA 位表示可递归 ( recursion available ),如果服务器支持递归查询,就会在应答中设置该位,以告知客户端。仅由应答报文使用.

ZERO 这三位未使用,固定为0.

RCODE 表示返回码(reply code),用来返回应答状态,常用返回码:0表示无错误,2表示格式错误,3表示域名不存在。

DNS查询类型

查询类型名称代码含义
1A将域名解析到一个指定的IPV4的IP上。
2NS用来指定该域名由哪个DNS服务器来进行解析,类似于托管,将子域名交给其他DNS服务器解析。
5CNAME规范名称,可以将注册的不同域名都转到同一个规范名称上,由这个规范名称统一解析IP地址
15MX电子邮件交互
16TXT文本信息
28AAAA将域名解析到一个指定的IPV6的IP上。

3、动手抓包DNS请求响应

前面已经讲解了DNS基础协议,在理解基础理论的同时我们需要动手使用WireShark去抓包协议这样才能更好的去理解DNS请求响应协议。

(1)首先安装Wireshark这里就不需要再为大家讲解软件安装了。

(2)使用nslookup来查询一个A记录并对A记录请求和响应做一下抓包。

 1、打开wireshark输入dns这样就会拦截到dns请求记录
 2、cmd/shell输入nslookup
 3、set type=A (这里只关注A记录的请求响应报文)

image.png

image.png

image.png