你所忽略的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/#dnside

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

1.2 window 自己缓存google

1.3 hosts文件

位于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实战及深度解读

报文的详细内容以下:

0000 00 00 5e 00 01 d4 48 8a d2 9d d9 29 08 00 45 00 ..^...H....)..E.
0010 00 3b 38 d4 00 00 40 11 ac 50 ac 10 4d 97 ca 60 .;8...@..P..M..`
0020 d1 85 ca d1 00 35 00 27 ed 5d f5 ac 01 00 00 01 .....5.'.]......
0030 00 00 00 00 00 00 03 77 77 77 05 62 61 69 64 75 .......www.baidu
0040 03 63 6f 6d 00 00 01 00 01 .com.....
响应报文

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

报文详情:

复制代码
0000 48 8a d2 9d d9 29 48 8e ef e1 c2 05 08 00 45 00 H....)H.......E.
0010 00 76 38 d4 00 00 2e 11 be 15 ca 60 d1 85 ac 10 .v8........`....
0020 4d 97 00 35 ca d1 00 62 fc a4 f5 ac 81 80 00 01 M..5...b........
0030 00 03 00 00 00 00 03 77 77 77 05 62 61 69 64 75 .......www.baidu
0040 03 63 6f 6d 00 00 01 00 01 c0 0c 00 05 00 01 00 .com............
0050 00 01 ec 00 0f 03 77 77 77 01 61 06 73 68 69 66 ......www.a.shif
0060 65 6e c0 16 c0 2b 00 01 00 01 00 00 01 2c 00 04 en...+.......,..
0070 73 ef d2 1b c0 2b 00 01 00 01 00 00 01 2c 00 04 s....+.......,..
0080 73 ef d3 70 s..p
复制代码
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

相关文章
相关标签/搜索