Stories

Detail Return Return

網絡是如何連接的之域名解析 - Stories Detail

當你在瀏覽器地址欄輸入 baidu.com, 瀏覽器會做些什麼?今天我們一起用上帝視角,看看都發生了哪些事

首先,baidu.com這樣的地址也叫域名,但瀏覽器是用ip地址通信的,所以,在和目標服務器通信之前,域名(baidu.com)要轉成ip才行,類似這樣 39.156.70.37,那麼瀏覽器如何查找對應的ip呢?

首先瀏覽器會先查找自身的緩存,以chrome為例,在地址欄輸入:
chrome://net-internals/#dns

運行結果

如果沒有找到怎麼辦?再去系統hosts中查找。

#shell
#windows系統 hosts 文件地址
C:\Windows\System32\drivers\etc\hosts

#macOS系統 
/etc/hosts

hosts還是沒有怎麼辦?然後再去dns服務器查找,查看自己電腦的dns服務器地址

#shell
#查看本地dns服務器的ip
#windows系統查看dns服務器
ipconfig /all

如果運行正常,你將看到如圖所示的dns服務器地址


#shell
#macOS查看本地dns服務器ip
cat /etc/resolv.conf

下圖是macOS系統示例

在指定的dns服務器上,還是找不到域名的ip,接下來dns服務器會去根服務器去找,就是分佈在世界各地的13台根服務器,當然不是真的只有13台物理服務器,準確地講應該是13個ip地址,下圖就是13台根服務器ip地址和域名:

在自己的電腦上也可以模擬dns解析過程,下面以macOS為例。在上圖找一台根服務器(任何一台都行),在命令行輸入:

#shell
dig @192.36.148.17 baidu.com
運行結果

命令執行完成後,上圖紅框內的部分就是頂級域名 .com 的dns服務器域名,上圖中的 ADDITIONAL SECTION 顯示了對應的ip, 我用第一個dns服務器地址,繼續查找

#shell
dig @192.55.83.30 baidu.com
運行結果

上面的命令執行完成後,在上圖紅框內,顯示了 baidu.com 這個域名的 dns 服務器,ADDITIONAL SECTION 也是dns服務器域名對應的ip, 我們要找是baidu.com的ip,這裏只是告訴我 baidu.com 這個域名的dns服務器是誰,我繼續查找

這裏我用dns服務器域名查找,當然用ip也是可以的

#shell
dig @ns2.baidu.com baidu.com
運行結果

看到上圖 ANSWER SECTION 部分,下面有兩條ip地址,就是域名 “baidu.com”的ip地址,拿到ip地址後,我們驗證一下對不對,這裏我通過ping命令,可以查看域名對應的ip,如圖所示:

運行結果

上面的命令執行完成後,可以看到ip地址為220.181.7.203,與ANSWER SECTION顯示的地址一致,遞歸dns服務器就是這樣工作的。

Add a new Comments

Some HTML is okay.