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

相關文章
相關標籤/搜索