DNS协议分析

DNS协议原理

  1. ***DNS(Domain Name System,域名系统)***即互联网的命名系统,通过域名和IP地址的互相映射组成一个分布式的数据库,能够使用户更方便地访问互联网,比如基于域名而不是基于IP地址来访问互联网。
  2. 通过主机名,最终得到该主机对应的IP地址的过程叫做域名解析。
  3. DNS协议运行在UDP协议之上,使用端口号53。
  4. DNS域名系统是以域名为索引的,采用层次化结构来实现,每个域名实际上就是一颗很大的逆向树,这颗逆向树称为域名空间(domain name spasce)。

DNS解析查询

递归查询

  • 主机向本地域名服务器的查询一般都是采用递归查询。(主机<->DNS 服务器)
  • 递归查询是一种DNS server 的查询模式,在该模式下DNS Server 接收到客户机请求,必须使用一个准确的查询结果回复客户机。
  • 假设DNS Server本地没有存储查询DNS信息,那么该Server会询问其它Server,并将返回的查询结果提交给客户机。

迭代查询

  • 本地域名服务器向根域名服务器及其他查询一般都是迭代查询。(DNS 服务器<->DNS 服务器)
  • 当根DNS服务器收到本地DNS服务器发出的迭代查询请求报文时,给回 IP地址或是顶级DNS服务器地址,而本地DNS服务器再向顶级DNS服务器查询。顶级服务器也是如此处理,直到最后得到解析的IP地址或是报错,本地DNS服务器再把结果返给查询主机。

资源记录

​ 域名与IP之间的对应关系,称为“记录”(record)。根据使用场景,“记录”可以分成不同的类型,常见的DNS记录类型如下:

​ **A:**地址记录(Address)。返回域名指向的IP地址。例如www.google.com 8.8.8.8;

​ **NS:**域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。

​ **MX:**邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。

​ **CNAME:**规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转。

​ **PTR:**逆向查询记录(Pointer Record),只用于IP地址查询域名。

DNS协议实战

Windows抓取DNS包

  1. 开启Wireshark并监听网卡
  2. ipconfig /all 查看DNS地址
  3. ipconfig /displaydns 显示DNS缓存
  4. ipconfig /flushdns 清除DNS记录
  5. nslookup+域名 比如nslookup www.baidu.com
  6. Wireshark 此时便能抓到DNS协议包: