美國能讓中國從網(wǎng)絡(luò)上消失?
今天聊個有意思的話題。
世界上共有 13 個根域名服務(wù)器,其中主根域名服務(wù)器是在美國。
那美國有沒有可能通過根域名服務(wù)器掐斷中國的互聯(lián)網(wǎng)呢?
在說結(jié)論之前,我們先來了解:
- DNS到底是怎么工作的?
- 為什么根域名服務(wù)器只有 13 臺?
- 美國可以讓中國從互聯(lián)網(wǎng)上消失嗎?
DNS到底是怎么工作的?
在上網(wǎng)沖浪時,我們在瀏覽器輸入的都是網(wǎng)站的域名,而不是 Web 服務(wù)器的 IP 地址。
原因很簡單,域名和 IP 地址的關(guān)系就像我們手機通訊錄那樣,用對方的名字來對應(yīng)它的手機號碼。這樣每次撥打電話的時候,直接在通訊錄里查名字就可以找到對方的手機號碼,而不需要去記憶對方的手機號碼。
IP 地址和手機號碼都是一長串的數(shù)字,如果要去記憶它們,還是挺費勁的。
所以,為了網(wǎng)民上網(wǎng)沖浪舒服點,就搞了個 DNS 服務(wù)器,也就是域名解析服務(wù)器,它可以通過我們輸入的域名來找到 Web 服務(wù)器的 IP 地址,然后瀏覽器再向 Web 服務(wù)器發(fā)送請求。
域名都是用句點來分隔的,比如 www.server.com,這里的句點代表了不同層次之間的界限,越靠右的位置表示其層級越高。
根域是在最頂層,它的下一層就是 com 頂級域,再下面是 server.com,所以域名的層級關(guān)系類似一個樹狀結(jié)構(gòu):
- 根 DNS 服務(wù)器
- 頂級域 DNS 服務(wù)器(com)
- 權(quán)威 DNS 服務(wù)器(server.com)
我們電腦實際上并不直接訪問根域名服務(wù)器,而是訪問我們「本地的 DNS 服務(wù)器」,由它來訪問根域名服務(wù)器,而且在解析域名的時候,是一個遞歸的過程。
域名解析是怎樣的呢?
現(xiàn)在舉一個具體的例子,比如客戶端請求 www.server.com 這個域名,解析域名的過程如下:
- 客戶端首先會發(fā)出一個 DNS 請求,問 www.server.com 的 IP 是啥,并發(fā)給本地 DNS 服務(wù)器(也就是客戶端的 TCP/IP 設(shè)置中填寫的 DNS 服務(wù)器地址)。
- 本地域名服務(wù)器收到客戶端的請求后,如果緩存里的表格能找到 www.server.com,則它直接返回 IP 地址。如果沒有,本地 DNS 會去問它的根域名服務(wù)器:“老大, 能告訴我 www.server.com 的 IP 地址嗎?” 根域名服務(wù)器是最高層次的,它不直接用于域名解析,但能指明一條道路。
- 根 DNS 收到來自本地 DNS 的請求后,發(fā)現(xiàn)后置是 .com,說:“www.server.com 這個域名歸 .com 區(qū)域管理”,我給你 .com 頂級域名服務(wù)器地址給你,你去問問它吧。”
- 本地 DNS 收到頂級域名服務(wù)器的地址后,發(fā)起請求問“老二, 你能告訴我 www.server.com 的 IP 地址嗎?”
- 頂級域名服務(wù)器說:“我給你負責 www.server.com 區(qū)域的權(quán)威 DNS 服務(wù)器的地址,你去問它應(yīng)該能問到”。
- 本地 DNS 于是轉(zhuǎn)向問權(quán)威 DNS 服務(wù)器:“老三,www.server.com對應(yīng)的IP是啥呀?” server.com 的權(quán)威 DNS 服務(wù)器,它是域名解析結(jié)果的原出處。為啥叫權(quán)威呢?就是我的域名我做主。
- 權(quán)威 DNS 服務(wù)器查詢后將對應(yīng)的 IP 地址 X.X.X.X 告訴本地 DNS。
- 本地 DNS 再將 IP 地址返回客戶端,客戶端和目標建立連接。
至此,我們完成了 DNS 的解析過程,整個過程我畫成了一個圖:
域名解析的過程蠻有意思的,整個過程就和我們?nèi)粘I钪姓胰藛柭返倪^程類似,只指路不帶路。
那是不是每次解析域名都要經(jīng)過那么多的步驟呢?
當然不是了,還有緩存這個東西的嘛。
瀏覽器會先看自身有沒有對這個域名的緩存,如果有,就直接返回,如果沒有,就去問操作系統(tǒng),操作系統(tǒng)也會去看自己的緩存,如果有,就直接返回,如果沒有,再去 hosts 文件看,也沒有,才會去問「本地 DNS 服務(wù)器」。
為什么「本地 DNS 服務(wù)器」會知道根域名服務(wù)器的 IP 地址?
世界上根域名服務(wù)器只有 13 臺,這 13 臺根域名服務(wù)器以英文字母 A 到 M 依序命名,
網(wǎng)域名稱格式為“字母.root-servers.org”,而且它們的 IP 地址基本不會變化。
所以,「本地 DNS 服務(wù)器」會內(nèi)置一個根域名服務(wù)器的配置文件,通過讀取這個配置文件就能找到根域名服務(wù)器的 IP 地址。
下面這個圖就是 13 臺根域名服務(wù)器的配置文件的部分內(nèi)容:
可能有的同學會說,這個是靜態(tài)的配置文件,如果某一個根域名服務(wù)器的 IP 地址改變了,要怎么知道的呢?
其實,「本地 DNS 服務(wù)器」首次啟動時,并不會先讀這份靜態(tài)的配置文件,而是會先去查根域名服務(wù)器的 IP 列表,這個查詢過程使用的傳輸協(xié)議是 UDP。
另外,可以看到上圖中所有記錄的 TTL 值是 3600000 秒,相當于 1000 小時。也就是說,每 1000 小時會去查詢一次根域名服務(wù)器的列表。
為什么根域名服務(wù)器只有 13 臺?
嚴格來講,是世界上共有 13 個「IPv4協(xié)議」的根域名服務(wù)器,而 IPv6的根節(jié)點不止 13 個。
注意,這 13 個并不是表示背后只有 13 臺真正的物理服務(wù)器,這 13 個對應(yīng)的是 13 個 IP 地址,對應(yīng)了 A-M 13 個編號。通過任播(Anycast)技術(shù),編號相同的根服務(wù)器使用同一個 IP(類似一個集群)。
任播最初由RFC1546提出,主要用在 DNS 根服務(wù)器上,具體的解釋如下:
任播是指在IP網(wǎng)絡(luò)上通過一個IP地址標識一組提供特定服務(wù)的主機,服務(wù)訪問方并不關(guān)心提供服務(wù)具體是哪一臺主機提供的,訪問該地址的報文可以被IP網(wǎng)絡(luò)路由到“最近”的一個(最好也只是一個,別送到多個)服務(wù)器上。這里“最近”可以是指路由器跳數(shù)、服務(wù)器負載、服務(wù)器吞吐量、客戶和服務(wù)器之間的往返時間( RTT,round trip time )、鏈路的可用帶寬等特征值。
為什么只有 13 個呢?
前面我提到,查詢根域名服務(wù)器的 IP 列表使用的傳輸協(xié)議是 UDP。
當 UDP 包大小超過 MTU 時,就會在 IP 層進行分片,但是只有第一片有 UDP 頭部字段(意味著包含有端口號),由于其它分片沒有 UDP 頭部字段(意味著沒有端口號號),能否通過防火墻則完全看防火墻的臉色,因為防火墻可能會檢查端口號。
所以,最好的通信效果就是避免 UDP 包大小超過 MTU 大小,防止在 IP 層發(fā)生分片。
Internet 大多數(shù)網(wǎng)絡(luò)接口MTU >= 512,所以RFC1035 規(guī)定了 DNS 報文要求被控制在 512 字節(jié)之內(nèi)。
一個查詢根域名服務(wù)器信息的 DNS 報文要能裝下所有的根域名服務(wù)節(jié)點基本信息,因為 512個字節(jié)有限,所以根域名服務(wù)節(jié)點當然要限制住了。
具體計算細節(jié)我不做介紹了,最終算到是 512 字節(jié)大小的 DNS 報文可以裝下 14 個根域名服務(wù)器節(jié)點的信息,不過當時的人覺得留一手,不全用完,所以就規(guī)定在了 13 個根域名服務(wù)器。
美國能讓中國從互聯(lián)網(wǎng)上消失嗎?
前面我們知道,根域名服務(wù)器共有 13 個。
其中 1 個為主根域名服務(wù)器,放置在美國,其余12個均為輔根域名服務(wù)器,其中9個放置在美國,歐洲2個,位于英國和瑞典,亞洲1個,位于日本。
可以看到,我們中國并沒有一臺根域名服務(wù)器,而且主根域名在美國,由 ICANN 管理。
如果美國終止 .cn 后綴的解析和申請,會不會導致中國網(wǎng)絡(luò)癱瘓?
先說結(jié)論,這個大可不必擔心。
雖說根域名服務(wù)器都在國外,但是我們中國已經(jīng)有很多臺「鏡像的根域名服務(wù)器」了,也就是會向主根域名服務(wù)器同步數(shù)據(jù)到國內(nèi)的根域名服務(wù)器,這意味著根域名服務(wù)器的常用記錄,我們早就有了備份,相當于我們自己也有了根服務(wù)器。
即使美國從主根域名服務(wù)器刪除了 .cn 記錄,也不怕,因為我們已經(jīng)維護了根域名服務(wù)器的鏡像,我們自己可以控制鏡像的內(nèi)容,我們可以不同步關(guān)于 .cn 記錄的刪除。
還記得訪問根域名服務(wù)器是誰嗎?就是本地 DNS 服務(wù)器,而這個本地 DNS 服務(wù)器一般是由國內(nèi)的網(wǎng)絡(luò)運營商管理的,只要在我國內(nèi)對根域名服務(wù)器發(fā)出的請求,其實都是由這些鏡像完成的。對于中國用戶來說,對根的請求,一般不會跑到美國去。
所以,國內(nèi)的用戶基本不受影響。不過,其他國家可能就無法訪問 .cn 后綴的網(wǎng)站了。
PS:美國之前就做過這樣的事情,將伊拉克頂級域名 .iq 的申請和解析工作終止掉,導致所有以 .iq 后綴的網(wǎng)站,讓伊拉克從互聯(lián)網(wǎng)消失。