如何搭建一個(gè)自己的網(wǎng)站-域名篇(上)
咪哥雜談

本篇閱讀時(shí)間約為 7 分鐘。
1
前言
隨著互聯(lián)網(wǎng)時(shí)代來臨,瀏覽器成為了日常必備的電腦工具。
而域名,但凡用過瀏覽器的朋友都知道它長(zhǎng)什么樣。
比如百度:

那我們用了這么久的域名,你知道它的組成以及作用是什么嗎?
帶著這個(gè)問題,繼續(xù)往下讀。
2
域名的組成
依然以百度為例:

從形式上來說,域名由 . 來進(jìn)行分割英文組成。
如果按照正常的閱讀方式,從左往右看。
但是,看域名則不同,需要你從右往左看去理解。
首先在最右邊?.com?的域名位置,有一個(gè)專業(yè)名詞,叫頂級(jí)域名。
.com,商業(yè)通用域名
.gov,政府網(wǎng)站域名
.edu,教育網(wǎng)站域名
.org,非盈利組織域名
.net,網(wǎng)絡(luò)服務(wù)商域名
.........等等
其次,從右側(cè)數(shù),倒數(shù)第二位的, baidu 。
排在頂級(jí)域名的左側(cè)域名,都稱之為子域名。如果細(xì)分,那對(duì)于 baidu 的專業(yè)名詞,叫二級(jí)域名。
同時(shí) baidu.com 這一整串,也可以叫二級(jí)域名。
二級(jí)域名一般是人們基于產(chǎn)品、公司等來創(chuàng)建的名稱,主要作用就是好記。
接下來,就是 3w 了。
我們經(jīng)常說的 3w 是什么意思呢?
www,原本英文:World Wide Web。中文,萬維網(wǎng)。
是一個(gè)透過互聯(lián)網(wǎng)訪問的,由許多互相鏈接的超文本組成的系統(tǒng)
wiki百科
如果讀了還是不明白,那我簡(jiǎn)單用一句話概括下:
日常瀏覽網(wǎng)頁就是在使用萬維網(wǎng),而有一些互聯(lián)網(wǎng)常用的服務(wù),就不是使用的萬維網(wǎng),比如發(fā)郵件、ftp文件傳輸?shù)取?/span>
PS:互聯(lián)網(wǎng)不等同于萬維網(wǎng),萬維網(wǎng)屬于互聯(lián)網(wǎng)中的"子服務(wù)"之一。
對(duì)于 www 來說,告訴你訪問的就是 web 服務(wù),那么,又問題來了。
當(dāng)我們?cè)L問一個(gè)網(wǎng)頁時(shí),www 是必須要帶上嗎?那你覺得 3w 會(huì)是三級(jí)域名嗎?
答案:
www.baidu.com 屬于二級(jí)域名。
3w 俗稱萬維網(wǎng),只是大家“默認(rèn)”的域名前綴,但它并不是必須的。
譬如,百度知道:

3
域名以及域名系統(tǒng)
組成講完了,我們來聊聊域名的作用。
一說到域名,那必然離不開一個(gè)詞 - DNS 。
DNS,英語:Domain Name System,中文:域名系統(tǒng)。
是互聯(lián)網(wǎng)的一項(xiàng)服務(wù),它作為將域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù),能夠使人更方便地訪問互聯(lián)網(wǎng)。
wiki百科
看了概念還沒懂?沒關(guān)系,讓我用通俗易懂的例子來給你解釋一下。
現(xiàn)在我們?yōu)g覽網(wǎng)站的數(shù)量非常多,每個(gè)網(wǎng)站背后都對(duì)應(yīng)著 ip ,就像你的電腦也對(duì)應(yīng)著一個(gè)公網(wǎng) ip 一樣,比如下面:

如果網(wǎng)站全部用 ip 進(jìn)行訪問,那肯定很難記住,所以就需要一個(gè)類似地址簿一樣的東西,根據(jù)名稱,去查詢背后的地址。
比如,有天中午你餓了,于是你打開美團(tuán)外賣,訂了"麥當(dāng)勞"。

此時(shí)外賣小哥收到來自你的訂單,"麥當(dāng)勞"是全國(guó)連鎖店,那具體外賣小哥要去哪里取餐呢?
通過美團(tuán)的提示,查詢到離你最近的麥當(dāng)勞地點(diǎn),提示小哥應(yīng)該去"前門西大街店"的麥當(dāng)勞進(jìn)行取餐。
所以,這里的"麥當(dāng)勞"可以對(duì)應(yīng)成域名,"美團(tuán)"對(duì)應(yīng)成 DNS 服務(wù)器,前門西大街麥當(dāng)勞店的具體地址則對(duì)應(yīng)成 ip 地址。
那回到網(wǎng)絡(luò)世界里,我們每訪問域名一次,都需要經(jīng)過 DNS 服務(wù)幫我們進(jìn)行解析。
可見 DNS?非常重要,因此?DNS?服務(wù)器的設(shè)計(jì),就引出了高可用,高并發(fā),分布式的概念。
然后,就有了按照不同層來劃分 DNS 服務(wù)器的設(shè)計(jì),如下圖:

根 DNS 服務(wù)器:返回頂級(jí) DNS 服務(wù)器的 ip 地址。
頂級(jí)域 DNS 服務(wù)器:返回權(quán)威 DNS 服務(wù)器的 ip 地址。
權(quán)威 DNS 服務(wù)器:返回相應(yīng)主機(jī)的 ip 地址。
是不是覺得這個(gè)分層和域名的組成有些類似?
先對(duì)著這幾個(gè)基礎(chǔ)概念眼熟下,不明白沒關(guān)系,繼續(xù)往下看。
眼熟上述概念,那再來看看我們請(qǐng)求域名后,解析ip的流程是怎樣的?
依舊是來看一張流程圖,一共有十步,用文字來對(duì)照解釋:

從上往下,從 1 到 10來看。首先電腦通過瀏覽器訪問一個(gè)域名,比如百度 www.baidu.com 。
1. 瀏覽器檢查是否有 DNS 相關(guān)緩存,通過域名查找 ip 。
比如谷歌瀏覽器:

如果你想看到瀏覽器緩存的 dns 列表,還有一種方法。
訪問 chrome://net-export/ ,進(jìn)行網(wǎng)絡(luò)日志下載。

將 json 日志文件上傳到此網(wǎng)站:https://netlog-viewer.appspot.com/

實(shí)際上,就像圖中表格一樣,域名和 ip 地址相對(duì)應(yīng),就是 DNS 所做的事兒。
如果找到,則直接返回 ip ,若沒有,進(jìn)行下一步。
2. 如果瀏覽器 DNS 緩存失效,則去本機(jī)的 hosts 文件中進(jìn)行查找。
windows和Linux的hosts文件路徑不同,自行網(wǎng)上搜索。有的時(shí)候,GitHub訪問不了,知道為什么改 hosts 文件起作用了吧?
如果找到,則直接返回 ip ,若沒有,進(jìn)行下一步。
3. 如果 hosts 文件中沒有對(duì)應(yīng)的映射,則訪問本地 DNS 服務(wù)器。

本地 DNS 服務(wù)器,一般都是由網(wǎng)絡(luò)供應(yīng)商提供,比如中國(guó)聯(lián)通、電信自動(dòng)分配。說白了,就是服務(wù)商的某個(gè)機(jī)房。
如果找到,則直接返回 ip ,若沒有,進(jìn)行下一步。
4、5. 本地 DNS 服務(wù)器依然沒有找到相關(guān) ip。
那本地 DNS 服務(wù)器就會(huì)問根 DNS 服務(wù)器。本地DNS:"根老大,告訴我下 www.baidu.com 的 ip 地址唄!"
根老大聽到本地 DNS 小弟的召喚后,
回復(fù)到:".com結(jié)尾的域名啊,我給你它對(duì)應(yīng)的頂級(jí)域名 DSN 服務(wù)器地址,你去問它!"
6、7:本地 DNS 服務(wù)器詢問頂級(jí) DNS 服務(wù)器。

于是本地DNS小弟又再次請(qǐng)求了頂級(jí)域名DNS服務(wù)器。
本地DNS:"頂老二,老大叫我來問你,www.baidu.com的 ip 地址,告訴我一下唄!"
頂老二:"嗨,不就 www.baidu.com 嗎!小意思,我給你它的權(quán)威 DNS 服務(wù)器地址,你去問它!"
8、9:本地 DNS 服務(wù)器詢問權(quán)威 DNS 服務(wù)器。

本地DNS:"權(quán)三哥,頂老二都讓我來問你,www.baidu.com 對(duì)應(yīng)的 ip 地址,到底是啥啊!!"
權(quán)威DNS:"別急,老弟,我給你查查。查到了!220.181.38.148"
PS:權(quán)威DNS服務(wù)器,就是針對(duì)特殊的 ip 進(jìn)行解析的服務(wù)器,所謂的權(quán)威是針對(duì)特定域名來說的。
下圖只是我為了獲取百度 ip 而做的例圖:

10:本地 DNS 服務(wù)器拿著真實(shí)的 ip ,開開心心地將 ip 返回給了電腦。
最終,電腦與目標(biāo) ip 成功地建立了連接。故事完。
當(dāng)你明白了根、頂級(jí)、權(quán)威 DNS 服務(wù)器的基礎(chǔ)概念之后,再去看解析流程后,才會(huì)有一種"恍然大悟"的感覺。
那關(guān)于 DNS ,它和域名的關(guān)系,到這里就結(jié)束了。
除了幫助域名解析以外,其實(shí) DNS 還有一個(gè)作用,就是負(fù)載均衡,那這里就不過多講了,感興趣的可以看下我后面分享的極客時(shí)間鏈接。
4
結(jié)語
今天這篇文章,足以讓你了解域名的常用知識(shí)了。
對(duì)網(wǎng)絡(luò)感興趣的同學(xué),建議消化一下。
本篇內(nèi)容是原理部分,授人以魚不如授人以漁,一直是我推崇的文章風(fēng)格,所以不能光有結(jié)論,弄清原理也是非常重要的。
關(guān)于 DNS 的原理部分,是我當(dāng)初在極客時(shí)間上,學(xué)習(xí)劉超老師趣談網(wǎng)絡(luò)協(xié)議寫下的總結(jié)。
如果你對(duì)原文感興趣,可以自行復(fù)制鏈接,發(fā)送到微信對(duì)話框,打開進(jìn)行查看:
https://time.geekbang.org/column/article/df26400ec571b6c6353e9fe493491881/share?code=ba5SNpiZcgP6gFH2N4CPup0%2FDIiiparYLkzB803qb-s%3D
(20個(gè)免費(fèi)試讀名額,先到先得)
下一篇就來直接上手介紹,如何申請(qǐng)我們自己的域名,以及一些配置和注意的點(diǎn)。
那關(guān)于本篇,如果你有什么疑惑點(diǎn),歡迎評(píng)論區(qū)留言探討。
看到這里,絕對(duì)是真愛學(xué)習(xí)粉了,今天的 2700+?字內(nèi)容,你學(xué)廢了嘛!
