為何根域名服務器只有13個?

曾經寫過一個答案,兩年之後的今天當再次看到那個答案時,發現並不是很滿意。遵循著一貫的追根溯源的態度,查閱了多如牛毛的資料,最終順藤摸瓜找到了問題的答案,這個答案依然不完美,也許有一天依然需要更新。


為何根域名服務器只有13個?


以上官方文獻清清楚楚表明,最初的DNS域名查詢默認使用UDP協議,而使用UDP傳輸的DNS查詢響應(Query Response)報文,不希望任何形式的分片。換句話說,要求使用唯一的UDP報文傳輸DNS響應。

上文提到的任何形式的分片,包括DNS應用層的分片、以及IP層的分片。前者的分片只會造成DNS報文消息作廢(Corrupted),IP的分片同樣無法接受,因為那個時候很多原始的主機不具備IP分片的重組(Reassemble)。

再來回顧一下當時的互聯網環境:


為何根域名服務器只有13個?


絕大多數的網絡接口類型支持IP報文≥576 字節無需分片自由通行,考慮到以上諸因素,IETF決定將DNS報文體限制在512字節。每一個根域名服務器佔用32字節,其中包括根域名的名稱、IP地址、TTL(Time To Live)等參數。

13根域名服務器一共佔用416字節,剩餘的96字節用於包裝DNS報文頭以及其它協議參數。所以從空間上來說,沒有多餘的空間容納第14個根域名服務器的32字節。

13個根域名服務器列表


為何根域名服務器只有13個?


容易被大眾誤解的是,這13個根域名服務器並不等於13臺物理服務器,而是代表著13個全球IP地址,由12個機構來管理,其中美國最大電信運營商Verizon管理兩個根域名全球IP地址。

截至到今天為止,全球一共有996臺服務器實例(Instances),遍佈5大洲4大洋。


為何根域名服務器只有13個?


既然根域名服務器只有13個全球IP,而物理服務器卻有996臺,到底怎麼分配的?

BGP泛播技術(Anycast)

Verizon管理的“IPv4: 198.41.0.4”為例,在全球一共分佈在28個站點,每個站點的服務器都使用“198.41.0.4”這個全球IP。


為何根域名服務器只有13個?


IP地址在互聯網上重複使用,會不會有什麼問題?

記得我在講企業局域網的時候,著重強調IP地址要唯一,不允許有重複使用IP地址的情況發生。

但是,在互聯網上不同站點可以使用相同的IP地址,只要使用方是IP地址的合法使用者。

“198.41.0.4”就會在28個站點,通過BGP路由協議,28次擴散到Internet路由表。


為何根域名服務器只有13個?


全球的主機究竟挑選哪個“198.41.0.4”來使用呢?

當然是距離自己最近的,用BGP的專業術語表達就是最優路徑

泛播技術有哪些優點?

根域名服務器特別重要,曾經有黑客集中攻擊它,差一點就成功了,因為13個服務器中某些依然沒有被打趴下,源於服務器的全球式分佈。

一朝被蛇咬,十年怕草繩。互聯網管理機構發現對付DDoS攻擊最有效的方法,就是分佈式部署根域名服務器。於是,使用了泛播技術,全球有了996臺實例。

如果有一天996臺不夠用,可以添加任意多臺服務器,因為全球IP可以重複使用。

攻擊方可以打趴其中的幾十臺、甚至幾百臺,但是永遠打不趴所有臺!

如果喜歡這篇文章,請轉發給您喜歡的朋友閱讀,謝謝


分享到:


相關文章: