回覆列表
  • 1 # 小夜數碼

    為什麼域名根伺服器只能有 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 個吧,留下一點東西以備後患,留待擴充套件。

  • 中秋節和大豐收的關聯?
  • 你遇到過借錢不還還理直氣壯的人嗎?