域名是網際網路的基礎設施,只要上網就會用到。
它還是一門利潤豐厚的生意,所有域名每年都必須交註冊費,這是很大的一筆錢。
這些錢交到了哪裡?到底誰控制域名的價格?為什麼有的域名註冊費很貴,有的便宜?......今天,我就來談談這些與根域名(root domain)相關的知識。
一、ICANN
全世界域名的最高管理機構,是一個叫做 ICANN (Internet Corporation for Assigned Names and Numbers)的組織。它的總部在美國加州。
它原來是美國商務部下面的一個非盈利機構,所以有人說,美國政府控制了全世界的域名,這種說法是有根據的。2016年,美國政府宣佈,ICANN 不再隸屬於商務部,成為一個自我管理的獨立機構。但是可想而知,美國政府依然對它有絕對影響。
ICANN 負責管理全世界域名系統的運作。它的一項主要工作,就是規定頂級域名(top level domain,簡寫為 TLD)。
二、TLD
所謂頂級域名(TLD),就是最高層級的域名。簡單說,就是網址的最後一個部分。比如,網址www.example.com
的頂級域名就是.com
。
ICANN 就負責規定,哪些字串可以當作頂級域名。截至2015年7月,頂級域名共有1058個。
它們可以分成兩類。一類是一般性頂級域名(gTLD),比如.com
、.net
、.edu
、.org
、.xxx
等等,共有700多個。另一類是國別頂級域名(ccTLD),代表不同的國家和地區,比如.cn
(中國)、.io
(英屬印度洋領地)、.cc
( 科科斯群島)、.tv
(吐瓦魯)等,共有300多個。
三、頂級域名託管商
ICANN 自己不會去管理這些頂級域名,因為根本管不過來。想想看,頂級域名有1000多個,每個頂級域名下面都有許多批發商,如果每個都要管,就太麻煩了。
ICANN 的政策是,每個頂級域名都找一個託管商,該域名的所有事項都由託管商負責。ICANN 只與託管商聯絡,這樣管理起來就容易多了。舉例來說,.cn
域名的託管商就是中國網際網路絡資訊中心(CNNIC),它決定了.cn
域名的各種政策。
目前,世界最大的頂級域名託管商是美國的 Verisign 公司。
四、Verisign
Verisign 是一家商業公司,總部在美國維吉尼亞州。它託管了.com
、.net
、.name
、.gov
這四個一般性頂級域名,以及.cc
和.tv
這兩個國別頂級域名。另外,.edu
和.jobs
的後臺管理工作,也外包給了它。
它對.com
和.net
的獨家壟斷是歷史形成的。最早的時候, Network Solutions 公司接受美國國家科學基金會的委託,管理頂級域名。2000年,Verisign 收購了這家公司,繼承了域名業務。2003年,Verisign 賣掉了域名註冊業務,只保留頂級域名管理。也就是說,它只做域名批發,不做域名零售了。
2010年,Verisign 又把網站安全和加密證書業務賣給了 Symantec 公司。後者又在2017年把這項業務賣給了 DigiCert。
五、ICANN 與 Verisign 打官司
按理說,Verisign 是 ICANN 最大的託管商,兩家的關係應該很好才對。事實卻是它們的關係很差,甚至還打過官司。
原因在於,ICANN 是政府支援的非盈利機構,不以盈利為目標,而 Verisign 是一家商業公司,追求利潤最大化,每年必須交大量的託管費給前者。兩家的矛盾就源於此。
2003年,Verisign 推出了一項新業務 Site Finder,使用者訪問沒有註冊過的.com
或.net
域名,都會被導向 Verisign 的網站。這意味著,它事實上擁有了所有沒有註冊過的.com
和.net
域名。 幾天之內,Verisign 就擠入了全世界的前10大網站。
ICANN 要求 Verisign 立刻停止該業務,否則將終止域名託管合同。Verisign 屈服了,停止了這項業務,但是接著就把 ICANN 告上了法庭,要求法庭釐請兩者之間的合同,ICANN 到底有沒有權力干涉它的業務。
2006年底,它們達成了庭外和解。ICANN 同意延長 Verisign 的頂級域名託管合同,並且同意 Verisign 向消費者收取的單個域名註冊費的上限,從6美元提高到了7.85美元。這個費用標準,一直沿用到了今天,你去註冊一個.com
或.net
域名,所交的錢有0.18美元是 ICANN 收取的管理費,7.85美元是 Verisign 收取的託管費,其餘的錢就是域名零售商的費用。
如果一個.com
或.net
域名售價10美元,ICANN 和 Verisign 合計拿走8.03美元。
後來,Verisign 的頂級域名託管合同又延長過兩次,當前合同要到2024年才會到期。
表面上看,ICANN 讓 Verisign 獲得了鉅額壟斷利潤。(曾經有公司提出,只要讓它來託管.com
域名,單個域名的託管費,可以降低到每年1美元。)但是實際上,ICANN 通過另一種方式在發揮市場的力量,那就是它不斷提高頂級域名的數量和品種。如果你覺得.com
域名太貴,你完全可以申請其他的頂級域名,有 1000多個頂級域名任你選擇。
六、根域名
由於 ICANN 管理著所有的頂級域名,所以它是最高一級的域名節點,被稱為根域名(root domain)。在有些場合,www.example.com
被寫成www.example.com.
,即最後還會多出一個點。這個點就是根域名。
理論上,所有域名查詢都必須先查詢根域名,因為只有根域名才能告訴你,某個頂級域名由哪臺伺服器管理。事實上也確實如此,ICANN 維護著一張列表,裡面記載著頂級域名和對應的託管商。
比如,我要訪問www.example.com
,就必須先詢問 ICANN 的根域名列表,它會告訴我.com
域名由 Verisign 託管,我必須去找 Verisign,它會告訴我example.com
伺服器在哪裡。
再比如,我要訪問abc.xyz
,也必須先去詢問根域名列表,它會告訴我.xyz
域名由 CentralNic 公司託管。根域名列表還記載,.google
由谷歌公司託管,.apple
由蘋果公司託管等等。
由於根域名列表很少變化,大多數 DNS 服務商都會提供它的快取,所以根域名的查詢事實上不是那麼頻繁。
七、DNS 根區
根域名列表的正式名稱是 DNS 根區(DNS root zone),ICANN 官網可以檢視這個根區檔案。
該檔案儲存所有頂級域名的託管資訊,所以非常大,超過2MB。
舉例來說,頂級域名.com
可以查到13個域名伺服器。
com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net.
也就是說,.com
域名的解析結果,可以到這個13個伺服器的任一臺查詢。細心的讀者可能發現,這些伺服器本身也是使用域名(比如a.gtld-servers.net.
)標識,那麼還得去查詢它們指向的伺服器,這樣很容易造成迴圈查詢。
因此,DNS 根區還會同時提供這些伺服器的 IP 地址(IPv4 和 IPv6)。
a.gtld-servers.net. 172800 IN A 192.5.6.30 a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e:0:0:0:2:30 b.gtld-servers.net. 172800 IN A 192.33.14.30 b.gtld-servers.net. 172800 IN AAAA 2001:503:231d:0:0:0:2:30 c.gtld-servers.net. 172800 IN A 192.26.92.30 c.gtld-servers.net. 172800 IN AAAA 2001:503:83eb:0:0:0:0:30 ... ...
八、根域名伺服器
儲存 DNS 根區檔案的伺服器,就叫做 DNS 根域名伺服器(root name server)。
由於早期的 DNS 查詢結果是一個512位元組的 UDP 資料包。這個包最多可以容納13個伺服器的地址,因此就規定全世界有13個根域名伺服器,編號從a.root-servers.net
一直到m.root-servers.net
。
這13臺根域名伺服器由12個組織獨立運營。其中,Verisign 公司管理兩臺根域名伺服器:A 和 J。每家公司為了保證根域名伺服器的可用性,會部署多個節點,比如單單 Verisign 一家公司就部署了104臺根域名伺服器(2016年1月資料)。
所以,根域名伺服器其實不止13臺。據統計,截止2016年1月,全世界共有 517 臺根域名伺服器。你可以在 http://root-servers.org 這個網站查到所有根域名伺服器的資訊。
根域名伺服器雖然有域名,但是最少必須知道一臺的 IP 地址,否則就會陷入迴圈查詢。一般來說,本機都儲存一份根域名伺服器的 IP 地址的快取,叫做 name.cache 檔案。
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:ba3e :: 2:30 B.ROOT-SERVERS.NET. 3600000 A 199.9.14.201 B.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:200 :: b C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 C.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2 :: c ... ...
這個檔案記錄了13臺根域名伺服器的 IP 地址。
九、參考連結
- What actually happens when you buy a domain name?, by Taimur
- ICANN, by Wikipedia
- Verisign, by Wikipedia
- DNS root zone, by Wikipedia
- Root Name Server, by Wikipedia
(完)