DNS协议分析
DNS协议原理
- ***DNS(Domain Name System,域名系统)***即互联网的命名系统,通过域名和IP地址的互相映射组成一个分布式的数据库,能够使用户更方便地访问互联网,比如基于域名而不是基于IP地址来访问互联网。
- 通过主机名,最终得到该主机对应的IP地址的过程叫做域名解析。
- DNS协议运行在UDP协议之上,使用端口号53。
- 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包
- 开启Wireshark并监听网卡
- ipconfig /all 查看DNS地址
- ipconfig /displaydns 显示DNS缓存
- ipconfig /flushdns 清除DNS记录
- nslookup+域名 比如nslookup www.baidu.com
- Wireshark 此时便能抓到DNS协议包: