只要記住你的名字,
不管你在世界的哪個地方,
我一定會,找到你
——新海誠《你的名字》
說回開篇那句經(jīng)典臺詞,這是人世間多么勵志和神奇的場景——仿佛只要我記住了你的名字,最終就會見到你。我思索良久,想想這特么怎么可能啊;但轉(zhuǎn)念又一想,發(fā)現(xiàn)這不是不可能的——在網(wǎng)絡(luò)的世界。。。
因?yàn)橹灰覀冚斎氚俣?、騰訊、淘寶的名字,無論它們的服務(wù)器在哪里,歷經(jīng)多少輪查詢,我們都能找到并訪問之。這就是計(jì)算機(jī)網(wǎng)絡(luò)中著名的域名系統(tǒng)DNS(Domain Name System),它能實(shí)現(xiàn)把一個網(wǎng)站的域名解析為對應(yīng)的IP地址。有了IP就能和目標(biāo)建立連接。這一看似簡單的過程,卻隱含多個步驟和小概念。
下面大家一起來動一動腦、掃一掃盲,當(dāng)瀏覽器里輸入http://www.baidu.com回車后,怎樣能解析到它的IP呢?
a) 我們會先檢查瀏覽器的緩存中有沒有http://www.baidu.com對應(yīng)的IP地址
b) 如果沒有,再檢查電腦操作系統(tǒng)的緩存中有沒有http://www.baidu.com的IP地址
[小貼士] 一般來說,當(dāng)電腦第一次成功訪問一個網(wǎng)站后,在一定時間內(nèi),瀏覽器或操作系統(tǒng)會緩存有它的IP地址(DNS解析記錄) 。
查看操作系統(tǒng)上已緩存的所有DNS解析記錄 (本例有2條):
Time To Live (TTL) 表示這條記錄還能緩存在操作系統(tǒng)內(nèi)的剩余時間。比如第一條,2119s后,它將不再有效。
這時如果網(wǎng)站的IP發(fā)生變化,但我們系統(tǒng)的DNS緩存未到期,這就會導(dǎo)致仍使用舊的IP去訪問而出錯。
所以這種情況下,需要清除一把操作系統(tǒng)的DNS緩存:
c) 如果瀏覽器和操作系統(tǒng)的緩存都沒有http://www.baidu.com的IP記錄,我們會接著檢查C:\Windows\System32\drivers\etc的hosts文件,因?yàn)檫@個文件能直接指定域名對應(yīng)某個IP地址。
如果以上3步都沒找到對應(yīng)的IP。恭喜~接下來我們將正式進(jìn)入請求域名服務(wù)器DNS(Domain Name Server)幫忙解析域名的階段了。。。
1. 電腦客戶端會發(fā)出一個DNS請求 (http://www.baidu.com的IP是啥啊) 給它的本地域名服務(wù)器 (本地DNS)。
本地域名服務(wù)器 (本地DNS) 是什么鬼?我們通過網(wǎng)絡(luò)屬性看一看↓↓↓
如果設(shè)置在左圖自動獲取模式下,本地DNS由你的網(wǎng)絡(luò)服務(wù)商(ISP) 如電信,移動等自動分配,它通常在你網(wǎng)絡(luò)商的某個機(jī)房。
如果設(shè)置在右圖,我們將不服從ISP分配。明確指定用Google (8.8.8.8) 或者我們國內(nèi)網(wǎng)絡(luò)商(114.114.114.114) 提供的免費(fèi)DNS服務(wù)器作為這臺電腦連接的本地DNS。
[小貼士] 一般如果ISP提供的DNS出現(xiàn)問題而導(dǎo)致域名解析失敗不能訪問網(wǎng)頁時,我們可以按右圖手工定義本地DNS的地址。
2. 本地DNS收到來自客戶端的請求。大家可以想象這臺服務(wù)器上緩存了一張各域名與之對應(yīng)IP地址的大表格。如果能找到www.baidu.com,它直接就返回IP地址。如果沒有,本地DNS會去問他的老大哥Root:嗨,能告訴我http://www.baidu.com的IP地址嗎?
老大哥Root就是根域名服務(wù)器,它是最高層次的,全球共有13套。它不直接用于域名解析,但能指明一條道路。
3. Root DNS收到來自本地DNS的請求說:哦,http://www.baidu.com啊,這個域名是由.com區(qū)域管理,我給你我小弟Top的地址,你去問問他吧。
4. 本地DNS:Hi Top哥,你能告訴我http://www.baidu.com的IP地址嗎?
小弟Top其實(shí)就是頂級域名服務(wù)器 (比如.com, .net, .org…一級區(qū)域),它負(fù)責(zé)管理二級域名(比如baidu.com, qq.com...),所以它能提供一條更清晰的方向。
5. Top說:我給你負(fù)責(zé)http://www.baidu.com區(qū)域的權(quán)威人士小A的地址,你去問她應(yīng)該能問到了。
6. 本地DNS:喂,小A,http://www.baidu.com對應(yīng)的IP是啥呀?
小A就是baidu的權(quán)威域名服務(wù)器,它是域名解析結(jié)果的原出處。就通俗上“這個域名我說了算”的服務(wù)器。
7. 小A查詢后將對應(yīng)的IP地址X.X.X.X告訴本地DNS
8-9. 本地DNS再將IP地址返回客戶端,客戶端和目標(biāo)建立連接。
至此,我們我們完成了DNS的解析過程。總結(jié)一下,整個過程就是:
站在客戶電腦角度,這是一次DNS遞歸查詢過程,因?yàn)橛杀镜谼NS全權(quán)為它效勞,它坐等結(jié)果即可;另一種是DNS迭代查詢,它需要客戶端親歷親為,各域名服務(wù)器只指明下一步方向。
PS~~最后一起來享受一把一條命令獲取DNS解析的快感吧。比如我們解析http://www.qq.com的IP地址
在命令結(jié)尾處加上IP地址,表示指定它作為這次查詢的本地DNS
以上。
如果說網(wǎng)絡(luò)的本質(zhì)是連接一切,那域名為“一切”提供了身份標(biāo)識,IP則為“一切”提供了聯(lián)系的可能。
現(xiàn)實(shí)生活不會因?yàn)槲矣涀×四愕拿?,而再次相遇。但在網(wǎng)絡(luò)的世界,知道你的名字,已是足矣。
聯(lián)系客服