為什麼域名根伺服器只能有 13 臺呢?
其實對於一個小白,這個問題核心並不是 13 臺,而是,域名根伺服器什麼,查詢的過程是怎麼樣呢?
DNS 是一種分層結構,在整個網際網路中組成一個樹狀系統,頂層是系統的根域名,下層為 TLD 以及二級域名,葉子就構成了所謂的 FQDN ( Fully Qualified Domain Names ),根域名通常使用 "." 來表示,其實際上也是由域名組成,全世界目前有 13 組域名根節點,由少數幾個國家進行管理,而國內僅有幾臺根節點映象。
是不是感覺沒那麼重要了呢。
是這樣的,在 DNS 設計之初,在龜速的網路下,當然是希望做Prime Query查Root Servers價效比達到最高啦。
DNS 是用 UDP 傳資料的,而設計的時候規定 DNS 查詢時,一個包的能放的資料最多是 512 Bytes,為什麼是 512 Bytes,為什麼域名根伺服器只能有 13 臺呢? - 車小胖的回答 - 知乎 做了完整的回答,摘錄一點如下:
Internet 大多數網路介面 MTU>512,即使 DNS 報文 + UDP+ IP= 512+8+20=540,這個大小几乎可以在 Internet 上暢通無阻,而無需 IP 分片。
為何 IP 分片不好? 一個 UDP 報文如果因為 size > MTU,則會被 IP 層分成兩片多片,但是隻有一片有埠號,由於其它分片沒有埠號,能否透過防火牆則完全看防火牆的臉色,所以對於能否通訊成功是一個未知數。
如果防火牆網開一面,不檢查埠號,分片可以全部通行,到目的地再組裝到一起,IP 層提交給 UDP/DNS,一點問題沒有。但是防火牆的安全功能大打折扣,如何阻止非法的外來攻擊包?
如果防火牆嚴格檢查埠號,則沒有埠號的分片則統統丟棄,造成通訊障礙。
所以選擇一個合適的 UDP size 至關重要,避免分片。
有同學說,對於 MTU <512 物理介面的 DNS 如何處理?這個其實好辦,這些只是接入層介面,用於接入終端使用者,使用者的 DNS 請求是請求其上一級 DNS 伺服器做遞迴查詢(告訴我最終查詢結果)
為了做Prime Query查Root Servers價效比達到最高,肯定是一個包能放多少東西就塞多少東西,所以把所有Root Servers的結果都塞進去,剛好能塞 14 個,不全用就塞 13 個吧,留下一點東西以備後患,留待擴充套件。
為什麼域名根伺服器只能有 13 臺呢?
其實對於一個小白,這個問題核心並不是 13 臺,而是,域名根伺服器什麼,查詢的過程是怎麼樣呢?
不算太久以前的基礎知識DNS 是一種分層結構,在整個網際網路中組成一個樹狀系統,頂層是系統的根域名,下層為 TLD 以及二級域名,葉子就構成了所謂的 FQDN ( Fully Qualified Domain Names ),根域名通常使用 "." 來表示,其實際上也是由域名組成,全世界目前有 13 組域名根節點,由少數幾個國家進行管理,而國內僅有幾臺根節點映象。
為什麼是 13,還重要嗎?是不是感覺沒那麼重要了呢。
是這樣的,在 DNS 設計之初,在龜速的網路下,當然是希望做Prime Query查Root Servers價效比達到最高啦。
DNS 是用 UDP 傳資料的,而設計的時候規定 DNS 查詢時,一個包的能放的資料最多是 512 Bytes,為什麼是 512 Bytes,為什麼域名根伺服器只能有 13 臺呢? - 車小胖的回答 - 知乎 做了完整的回答,摘錄一點如下:
Internet 大多數網路介面 MTU>512,即使 DNS 報文 + UDP+ IP= 512+8+20=540,這個大小几乎可以在 Internet 上暢通無阻,而無需 IP 分片。
為何 IP 分片不好? 一個 UDP 報文如果因為 size > MTU,則會被 IP 層分成兩片多片,但是隻有一片有埠號,由於其它分片沒有埠號,能否透過防火牆則完全看防火牆的臉色,所以對於能否通訊成功是一個未知數。
如果防火牆網開一面,不檢查埠號,分片可以全部通行,到目的地再組裝到一起,IP 層提交給 UDP/DNS,一點問題沒有。但是防火牆的安全功能大打折扣,如何阻止非法的外來攻擊包?
如果防火牆嚴格檢查埠號,則沒有埠號的分片則統統丟棄,造成通訊障礙。
所以選擇一個合適的 UDP size 至關重要,避免分片。
有同學說,對於 MTU <512 物理介面的 DNS 如何處理?這個其實好辦,這些只是接入層介面,用於接入終端使用者,使用者的 DNS 請求是請求其上一級 DNS 伺服器做遞迴查詢(告訴我最終查詢結果)
接著就是13這個數字的果了。為了做Prime Query查Root Servers價效比達到最高,肯定是一個包能放多少東西就塞多少東西,所以把所有Root Servers的結果都塞進去,剛好能塞 14 個,不全用就塞 13 個吧,留下一點東西以備後患,留待擴充套件。