小菜學(xué)網(wǎng)絡(luò)之域名系統(tǒng)
本文轉(zhuǎn)載自微信公眾號(hào)「小菜學(xué)編程」,作者fasionchan。轉(zhuǎn)載本文請(qǐng)聯(lián)系小菜學(xué)編程公眾號(hào)。
在時(shí)間查詢服務(wù)中,客戶端需要知道服務(wù)端的 IP 地址和端口號(hào),才能發(fā)起請(qǐng)求。但我們應(yīng)該如何記憶 IP 地址和端口號(hào)呢?要知道,人類(lèi)記憶數(shù)字型信息,比如電話號(hào)碼等,并不擅長(zhǎng)。
端口其實(shí)還好。因?yàn)榻?jīng)過(guò)多年的發(fā)展,常用網(wǎng)絡(luò)服務(wù)形成了一套約定俗成的慣例,這就是所謂的 知名端口 。舉個(gè)例子, Web 服務(wù)一般采用 80 端口。我們用瀏覽器訪問(wèn)網(wǎng)站,甚至都不需要輸入端口號(hào),默認(rèn)就是 80 端口。
IP 地址就不一樣了。10.35.87.61 這個(gè) IP 地址比 80 端口難記多了。不僅如此,不同的服務(wù)可能部署在不同的機(jī)器,IP 地址也肯定是不一樣的。很顯然,百度的服務(wù)器,地址肯定跟淘寶的不一樣。
我們每天都會(huì)訪問(wèn)很多網(wǎng)站,想記住它們的 IP 地址,顯然是不可能的!如果能夠通過(guò)名字來(lái)訪問(wèn),則事半功倍,因?yàn)槲覀冇洃浳谋疽扔洃洈?shù)字更拿手。
為此,網(wǎng)絡(luò)先驅(qū)們發(fā)明了域名和域名系統(tǒng),這就是本文的主角。
域名
域名是 網(wǎng)域名稱 ( domain name )的簡(jiǎn)稱,它是一串以點(diǎn)號(hào)分隔的字符串,用于標(biāo)識(shí)一臺(tái)或一組計(jì)算機(jī)。域名可作為 IP 地址的別名,更便于記憶。
我有一個(gè)博客網(wǎng)站,部署在阿里云上,服務(wù)器 IP 是 163.181.33.227 ,但讀者們肯定記不住 IP 地址的。為此,我申請(qǐng)了一個(gè)域名 www.fasionchan.com 作為別名。這樣就好記多了,因?yàn)?fasionchan 是我的英文名。
那么,域名該如何理解呢?點(diǎn)號(hào)分隔的各個(gè)部分都有什么作用呢?
實(shí)際上,域名是一個(gè)分層次的命名空間,各種域名都隸屬于根域 . 。位于第一層的域名稱為 一級(jí)域名 或 頂級(jí)域名 ;第二層的域名稱為 二級(jí)域名 ;以此類(lèi)推。
以 www.fasionchan.com.為例,從右往左讀依次是:
- 根
- 一級(jí)域名(頂級(jí)域名):com
- 二級(jí)域名:fasionchan
- 三級(jí)域名:www
請(qǐng)注意,域名是從根開(kāi)始,只不過(guò)我們經(jīng)常省略域名最右邊的點(diǎn)號(hào) . 。
某個(gè)域下層的域稱為 子域 ,上層的域稱為 父域 。舉個(gè)例子,從 fasionchan.com 的角度看,它的父域是 .com ,子域包括 www.fasionchan.com 、 linux.fasionchan.com 等等。子域從屬與父域,父域?qū)ψ佑驌碛泄芾頇?quán)。
域名由注冊(cè)管理機(jī)構(gòu)負(fù)責(zé)管理,可以通過(guò)注冊(cè)商來(lái)注冊(cè),先到先得。
域名注冊(cè)后,所有人擁有域名的管理權(quán):不僅可以修改域名關(guān)聯(lián)的 IP ,還可以分配子域名。域名 fasionchan.com 被我注冊(cè)后,我可以修改它關(guān)聯(lián)的 IP ,還可以隨意添加子域名 www.fasionchan.com 。
我甚至還可以添加一個(gè)子域 lumy.fasionchan.com ,送給我的朋友 Lumy 。同理, Lumy 擁有 lumy.fasionchan.com 的管理權(quán)。她可以修改域名關(guān)聯(lián)的 IP ,也可以隨意添加子域名。
頂級(jí)域
域名的第一級(jí)是 頂級(jí)域 ,包括
- 通用頂級(jí)域 ,例如 .com 、 .net 和 .org 等;
- 國(guó)家和地區(qū)頂級(jí)域 ,例如 .cn 、 .us 等;
通用頂級(jí)域 | 含義 |
---|---|
.com | 商業(yè)公司 |
.edu | 教育機(jī)構(gòu) |
.net | 互聯(lián)網(wǎng)服務(wù)供應(yīng)商 |
.org | 非營(yíng)利組織、國(guó)際機(jī)構(gòu)等 |
國(guó)家和地區(qū)頂級(jí)域 | 含義 |
---|---|
.cn | 中國(guó) |
.hk | 中國(guó)香港 |
.mo | 中國(guó)澳門(mén) |
.tw | 中國(guó)臺(tái)灣 |
.jp | 日本 |
.us | 美國(guó) |
域名系統(tǒng)
域名系統(tǒng) ( domain name system ,簡(jiǎn)稱 DNS ),是互聯(lián)網(wǎng)提供的一項(xiàng)名字服務(wù)。我們可以將 DNS 看作一個(gè)分布式數(shù)據(jù)庫(kù),它保存著域名和 IP 的映射關(guān)系。
有了這個(gè)對(duì)應(yīng)關(guān)系,我們就可以通過(guò) 域名 ( domain name )來(lái)訪問(wèn)網(wǎng)絡(luò)服務(wù),不用再苦苦記憶 IP 地址。要知道域名 www.fasionchan.com 比 IP 地址 163.181.33.224 好記多了。
那么,域名系統(tǒng)到底是怎么工作的呢?
域名注冊(cè)后,所有人可將域名關(guān)聯(lián)的 IP 登記到域名系統(tǒng)。這是一個(gè)分布式數(shù)據(jù)庫(kù),以域名為鍵,以 IP 為值。域名系統(tǒng)提供一些服務(wù)器用戶查詢,這就是 DNS服務(wù)器( dns server )。
當(dāng)互聯(lián)網(wǎng)用戶通過(guò)瀏覽器訪問(wèn)網(wǎng)站時(shí),以 https://www.fasionchan.com 為例:
- 瀏覽器解析 URL ,得到主機(jī)域名 www.fasionchan.com ;
- 瀏覽器向 DNS 服務(wù)器發(fā)起域名解析請(qǐng)求,獲取 www.fasionchan.com 對(duì)應(yīng)的 IP 地址,如圖示步驟①;
- DNS 服務(wù)器找到域名對(duì)應(yīng)的 IP ,然后向?yàn)g覽器回復(fù)應(yīng)答,如圖示步驟②;
- 瀏覽器拿到 IP 地址后,即可向 www.fasionchan.com 所在的 Web 服務(wù)器發(fā)起請(qǐng)求,如圖示步驟③;
這就是域名系統(tǒng)的基本工作原理,它看似簡(jiǎn)單,但還有很多細(xì)節(jié)等著我們進(jìn)一步探索。