目录
1. 用 tcpdump工具监听抓包
2. 用 host 工具获取域名对应的IP地址
3. 分析DNS以太网查询数据帧
linux%E4%B8%8B%E6%9F%A5%E8%AF%A2DNS%E6%9C%8D%E5%8A%A1%E5%99%A8IP%E5%9C%B0%E5%9D%80-toc" style="margin-left:80px;">3.1 linux下查询DNS服务器IP地址
3.2 DNS以太网查询数据帧
(1)数据链路层
(2)网络层
(3)传输层
(4)应用层
DNS (Domain Name System),域名系统是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式系统,能够使人们更方便地访问互联网,DNS服务器使用UDP端口 53。在linux操作系统下,我们可以通过 host 命令,查询域名的IP地址,命令格式为:host -t A 域名,它的工作原理是怎样的呢,接下来,通过解析DNS查询报文,探索DNS工作原理。
1. 用 tcpdump工具监听抓包
tcpdump -i ens33 -ent -X port domain
-i: 是 interface 的意思,指定要监听的网卡接口。"-i any"表示抓取所有网卡接口的数据包。
ens33:网卡接口名
-e: 是 ethernet (以太网) 的意思,显示以太网帧头部信息。
-n: 是 number 的意思,显示 IP 地址表示主机,而不是主机名;显示数字表示端口号,而不是服务名称。
-t: 不打印抓包时间戳
-XX: X是 hex 的意思,以十六进制显示数据包的内容,并打印每个十六进制字节对应的 ASCII 字符,XX表示还打印以太网帧头部信息
port domain:表示只抓取使用 domain (域名) 服务的数据包,即 DNS 查询和应答数据包
2. 用 host 工具获取域名对应的IP地址
host -t A www.baidu.com
host:是linux下一个常用的访问DNS服务器的客户端程序
-t:告诉DNS协议使用哪种查询方式
A:通过域名获取IP地址
www.baidu.com:需要查询的域名
从 host 命令输出可知,www.baidu.com 是 www.a.shifen.com 的别名,并且对应有两个IP地址,host 命令是通过 DNS 协议跟DNS服务器通信。
3. 分析DNS以太网查询数据帧
linux%E4%B8%8B%E6%9F%A5%E8%AF%A2DNS%E6%9C%8D%E5%8A%A1%E5%99%A8IP%E5%9C%B0%E5%9D%80">3.1 linux下查询DNS服务器IP地址
我们的目的是要查询域名 www.baidu.com 对应的 IP地址,就要去访问DNS服务器查询,要访问DNS服务器,就要知道DNS服务器的IP地址,在linux下,/etc/resolv.conf 文件存放着DNS服务器的IP地址。我的主机 192.168.0.155 。
cat /etc/resolv.conf
该文件的内容如下:
# Generated by NetworkManager
nameserver 192.168.0.1
nameserver 8.8.8.8
# Generated by NetworkManager 这行是注释,说明这两个 DNS服务器地址是由网络管理程序写入的
首选DNS服务器IP地址是:192.168.0.1,即路由器(网关)的IP地址
备选DNS服务器IP地址是:8.8.8.8,是google提供的免费DNS服务器的IP地址
有了DNS服务器的IP地址:192.168.0.1,就可以首先在本机 192.168.0.155 的ARP缓存中查询,是否有对应映射的 MAC地址,如果没有就会发送ARP请求,让192.168.0.1告诉它的MAC地址,192.168.0.1就会发送一个ARP应答告诉192.168.0.155 它的MAC地址。
arp -a 192.168.0.1 // 查询本机的ARP缓存是否有192.168.0.1对应映射MAC地址