域名系統 DNS
我們知道網絡中每臺機器都有自己的 IP 地址,才能與外面的網絡相互通信,傳統的 IP 是由 4 個 8 位的字節組成的數字,這樣的標識是不利于記憶的,所以延伸出域名的概念,每個域名可以映射成一個 IP。像 www.taobao.com
;www.baidu.com
;這種域名我們一看就知道是淘寶和百度。于是有了 DNS(Domain Name System)域名系統,它的職責就是將人們便于記憶的域名轉成計算機所需要的 IP 地址。
1. DNS 結構
DNS 是一個記錄滿了 IP 和域名映射的賬本,這個賬本非常的大,涉及到了全世界的域名信息,所以它的底層結構是分層和分布式的一個數據庫。
1.1 語法結構
常見的頂級域名有:
- .com 代表工商企業域名;
- .cn 代表中國的域名;
- .net 網絡提供商域名;
- .org 非盈利組織域名;
- .gov 政府域名;
- .edu 教育類的域名。
1.1 域名服務器分布
域名是分層的,每種域名服務器也都是分布式部署的,而不是只有單臺。因為只要一種域名服務器提供不了服務,全世界對應種類的域名都會受到影響。
根域名服務器
最高層和最重要的的域名服務器,任何一個域名服務器只要自己解析不了,就會交給根服務器。全世界共用 13 臺域名服務器,其中 10 臺在美國,剩下的 3 臺分別在日本,英國,瑞典。
頂級域名服務器
管理所有注冊在它上面的二級域名服務器。
2. 域名服務器類型
- 權威域名服務器:能夠決定域名和 IP 的關系。
- 本地域名服務器:一般由本地運營商提供,不能解析域名,通常是緩存域名解析和幫用戶到權威域名服務器查詢解析結果。
- 公共域名服務器:跟本地域名服務器類似,只是它不是某個運營商提供的,是全網公用的。
3. 解析過程
- 機器訪問本地 LDNS 查詢;
- LDNS 檢查本地緩存,沒有的話就向 13 臺根服務器的其中一臺發起查詢請求;
- 根域名服務器根據解析的域名結構找到對應的頂級域名服務器信息給 LDNS;
- LDNS 向頂級域名服務器發起查詢;
- 頂級域名服務器根據域名結構查找到對應的二級域名服務器;
- 根據這樣的迭代最終查找到域名和 IP 的對應關系。
4. DNS 解析對應的常見記錄類型
4.1 A 記錄
將域名直接解析成某個具體的服務器 IP。
4.2 CNAME 記錄
給域名起了一個 cname 的別名,訪問這個別名與訪問原域名效果是一樣的。
4.3 NS 記錄
域名解析服務器記錄,通常用來指定不同子域名對應不同的解析服務器。
4.4 MX 記錄
建立電子郵箱服務,將指向郵件服務器地址,需要設置MX記錄。建立郵箱時,一般會根據郵箱服務商提供的 MX 記錄填寫此記錄。
下圖是筆者在阿里云上面購買的一個域名 zhourj.cn
,這個域名目前設置了如下列表的解析規則:
- CNAME 記錄 :對應了記錄值
hosting.gitbook.com
,意思是訪問了我的域名docs.zhourj.com
會轉發到hosting.gitbook.com
這個域名上。 - A 記錄:還有幾個 A 記錄的規則,* 就代表所有的
*.zhourj.cn
的域名都解析到對應 IP 。假如主機記錄是 www 就代表著wwww.zhourj.cn
解析到對應的某個記錄值上面的 IP ,所以一個域名是可以解析到許多不同 IP 上面的。
5. 小結
DNS 簡單著說就是域名解析成 IP 的過程,但是這個小小的域名也隱藏著很多的知識點。它有組織之分:.com .cn .gov
。服務于全球的域名解析系統它是一種分布式的架構,一般都由最近的域名解析服務器完成解析,解析不成功才往上級去請求。域名有記錄類型的概念,其實就是它的解析規則,一個簡單的域名,我們可以根據自己的業務拆解成不同的子域名,并解析到不同服務器去。