你所忽略的DNS---DNS实战及深度解读

不少人没有dns的概念,或者仅仅知道dns负责解析从域名到ip地址,这对普通人来讲,也许是够的,但对于开发者来讲,就远远不够了。html

不少中高级开发者的眼中的DNS是这样的(以百度为例):chrome

你所忽略的DNS---DNS实战及深度解读

读取hosts文件(位于C:\Windows\System32\drivers\etc)--->isp-dnswindows

总的过程是没有问题,但忽略了不少细节。下面咱们就深刻的探讨一下:浏览器

1.dns的访问过程

(以window为例)缓存

浏览器-->window缓存-->hosts文件-->DNS服务服务器

1.1.浏览器(以chrome为例)dns 网络

chrome://net-internals/#dns负载均衡

你所忽略的DNS---DNS实战及深度解读

1.2 window 自己缓存ide

1.3 hosts文件google

位于C:\Windows\System32\drivers\etc,再也不赘述。注意,一个域名能够配置多个ip地址,一个ip也能够配置多个域名上。

1.4. ISP-DNS

nslookup解析

C:\Users\dell>nslookup www.baidu.com
服务器:  ns-pd.online.sh.cn
Address:  202.96.209.133

非权威应答:
名称:    www.a.shifen.com
Addresses:  115.239.210.27
          115.239.211.112
Aliases:  www.baidu.com

上海电信的服务,ip地址为202.96.209.133

百度的别名为:www.a.shifen.com

对应的ip地址为

115.239.210.27
115.239.211.112
两个ip地址起到灾备和负载均衡的做用
更多详细的信息能够使用dig +trace命令(window自己不支持dig命令,须要额外安装,请自行搜索windows下的dig安装过程,再也不赘述)

你所忽略的DNS---DNS实战及深度解读

2.dns报文深度解析

浏览器访问www.baidu.com,使用wireshar进行抓包,并保存。

Wireshark(前称Ethereal)是一个网络报文分析软件。网络封包分析软件的功能是撷取网络封包,并尽量显示出最为详细的网络封包资料。Wireshark使用WinPCAP做为接口,直接与网卡进行数据报文交换。

单独分析抓取的dns报文:

2.1 请求报文

request报文:

你所忽略的DNS---DNS实战及深度解读

响应报文

你所忽略的DNS---DNS实战及深度解读

2.2.数据封装过程

数据封装通常分五层,第一层是应用层协议的数据,第二层分别是TCP封装,第三层IP封装,第四层以太网封装,最后转成二进制的物理报文

你所忽略的DNS---DNS实战及深度解读

2.2.1 dns报文协议
你所忽略的DNS---DNS实战及深度解读

分析一下请求报文

你所忽略的DNS---DNS实战及深度解读

详细信息能够参考附录【3】

2.2.2 UDP协议封装

udp报文格式

你所忽略的DNS---DNS实战及深度解读

其对应的封装以下

你所忽略的DNS---DNS实战及深度解读

2.2.3 ip报文封装

ip报文格式

你所忽略的DNS---DNS实战及深度解读

你所忽略的DNS---DNS实战及深度解读

2.2.3 以太网协议

源mac+源mac地址+协议类型
你所忽略的DNS---DNS实战及深度解读

3.总结

  dns是上层协议,和http,ftp等协议是一层的,以下图所示

你所忽略的DNS---DNS实战及深度解读

  dns报文的封装是基于UDP的,udp之下是ip的封装,ip又基于以太网的封装,最终转成二进制信号发送出去。

参考资料

【1】https://www.howtogeek.com/197804/how-to-clear-the-google-chrome-dns-cache-on-windows/

【2】https://www.cnblogs.com/liyuanhong/articles/7353974.html

【3】https://blog.csdn.net/tianxuhong/article/details/74922454

【4】https://blog.csdn.net/kernel_jim_wu/article/details/7447377

相关文章
相关标签/搜索