[DNS] 2. 網路世界運作原理 & 本地 DNS cache
今天會延續 DNS 的部分,正式來解釋 DNS 如何運作,和如何優化
DNS 原理解釋
Internet 與 IP address
在解釋 DNS 前,讓我們先來簡單介紹一下網路世界怎麼溝通的
在網路的世界中,電腦是依靠數據 (digits) 來溝通的,而在網路世界,電腦透過 IP address 辨識 (identify) 對方和對方溝通
但在人類的世界中,我們是依靠語言來溝通的,我們透過名字來辨識對方和對方溝通
因此,若人要辨識電腦且與電腦溝通,為了方便性,我們希望電腦的 IP address 可以轉換成可識別的名字,也就是 domain name,而將 domain name 轉換成 IP address,就需要 DNS (Domain Name System) 幫我們做轉換
本地快取查找 (DNS local cache)
在本地,包括我們下載的 chrome 瀏覽器,和我的作業系統,都會幫我們緩存 (cache) 曾經利用 DNS 查到對應 domain 的 ip address
檢查 Browser 的 DNS cache
在瀏覽器中,輸入 chrome://net-internals#DNS ,就可以查找我們自己本地的瀏覽器,是否有 cache 該 domain 解析出的 ip address,例如,當我們查找 google.com
就會顯示
Resolved IP addresses of "google.com": ["142.250.207.14"].
對應 google.com 的 IP address 為 142.250.207.14
檢查 Operating System 的 DNS cache
在本地作業系統中,也會緩存 DNS 的查找結果,我們可以在 terminal 輸入以下指令
nslookup <your domain>
例如
nslookup google.com
就會出現以下結果
其中最上層的部分,為本地 DNS server
的資訊:
Server: 192.168.31.1: 這一行告訴你你的本地 DNS 伺服器的 IP 地址。當你的系統需要解析一個網域名稱(例如
google.com
)時,它會首先聯絡這個本地 DNS 伺服器。Address: 192.168.31.1#53: 這一行再次顯示了你的本地 DNS 伺服器的 IP 地址,並附加了
#53
,表示這個伺服器正在使用標準 DNS 端口 53 來接收查詢。端口 53 是 DNS 協議的標準端口。
這些信息告訴你,當你的系統需要解析網域名稱時,它會首先聯絡位於 192.168.31.1
的本地 DNS 伺服器,並通過端口 53 發送 DNS 查詢。這個本地 DNS 伺服器可能是你的路由器或你的網路提供商(ISP)提供的,它會有自己的緩存,並且可能會向其他 DNS 伺服器轉發查詢以獲得解析結果
下面的資訊,為查詢網域的 DNS lookup
結果:
Non-authoritative answer: 這表示返回的答案不是來自網域名稱的授權 DNS 伺服器,而是來自某個緩存伺服器。這通常意味著你正在看到的是一個緩存的答案,它可能是在稍早前某個時間點由授權伺服器提供的
Name: google.com: 這是你查詢的網域名稱
Address: 142.250.207.14: 這是
google.com
網域名稱解析到的 IP 地址。當你在瀏覽器中輸入google.com
時,你的電腦會使用這個 IP 地址來連接到 Google 的伺服器。
這個 nslookup
的結果基本上告訴你,當你試圖訪問 google.com
時,你的電腦將嘗試連接到 IP 地址 142.250.207.14
。這個特定的 IP 地址可能會隨時間而變化,因為大型網站如 Google 會使用多個伺服器和 IP 地址來處理流量,並可能會基於負載均衡和其他因素而更改 DNS 解析
結論
- 為了利用可讀的 domain name 找到對應的 ip address,我們需要 DNS
- 在 local 的 Browser 和 OS 中,都可能存有 DNS result 得快取,讓我們可以快速取得 domain name
參考資訊
- 稀土掘金 - 面试装X:深入理解 DNS 解析
- 稀土掘金 - DNS 解析优化
- ByteByteGo - Everything You Need to Know About DNS: Crash Course System Design #4
- PowerCert Animated Videos - How a DNS Server (Domain Name System) works.