我知道 DNS 根伺服器有 13 個 ip,他們使用任播將請求傳播到世界各地的 800 台實際實體伺服器。
我知道香港的根伺服器與某處的另一台鏡像伺服器具有相同的IP,在互聯網上有兩台具有相同IP的不同實體位址的伺服器是合法的嗎?
但我不知道 DNS 請求如何將目標定位到離我所在位置最近的伺服器,例如香港。
DNS 如何選擇它的伺服器?
答案1
在大型網路(具有專用路由器的網路)中,兩台電腦之間可能存在多個網路路徑。路由器通常具有多個相互連接的網路連結以實現冗餘,因此您可以透過任一鏈路發送封包以到達同一目標電腦。
任播利用這一點,使其看起來像是有兩個或多個到某個 IP 位址的路由,但實際上這些路由會通往完全不同的電腦。如果其中一台電腦離線,則該路由將消失,但另一條路由仍然可用。
它需要一些配置才能工作。要在站點之間共用 IP,您需要設定 BGP(ISP 層級路由),並且只能對至少 256 個 IP 位址的區塊進行此操作(因此僅對一個 IP 使用任播將浪費約 253 個 IP)。在網站內,您仍然需要設定路由器,以便它們知道在哪裡可以找到所有任播端點,這通常是透過讓每個端點在線上時發布其存在來完成的。
由於端點看起來像是通往同一台電腦的多個路徑,因此流量可能會隨機使用不同的路徑。通常這不是問題(即使資料包所採用的路徑發生變化,資料包仍然到達同一位置),但對於任播 IP 而言,不同的路徑意味著不同的目的地。這意味著您可以將流量傳送到一個端點,然後資料包突然到達另一端點。
因此,選播不適用於「長期存在」的協議,並且通常僅與無狀態協定一起使用。 DNS 任播很常見,因為封包很小,端點伺服器意外變更也沒關係。某些網站將任播與 HTTP 結合使用來傳輸非常小的文件,這些文件只需一兩個資料包即可檢索。但除此之外的任何事情對於選播來說都變得不可靠,因為只要「路徑」發生變化,TCP 連線就會隨機中斷。