打開網(wǎng)站加載半天?消息收不到,可能你需要了解一下DNS
域名系統(tǒng)DNS
域名系統(tǒng)(Domain Name System,DNS)是一個(gè)互聯(lián)網(wǎng)服務(wù),其功能是用于將域名解析成IP地址
為什么需要DNS
以前我們說過,互聯(lián)網(wǎng)中的設(shè)備都有屬于自己的IP地址,要訪問這個(gè)設(shè)備就需要通過這個(gè)IP地址,比如現(xiàn)在你需要訪問一個(gè)網(wǎng)站www.fake.com,在沒有域名之前你可能需要直接在瀏覽器輸入IP地址如:138.128.11.3,這樣每次都要記憶這個(gè)IP地址太麻煩了,這個(gè)時(shí)候域名就出現(xiàn)了,域名www.fake.com指向138.128.11.3,這個(gè)時(shí)候你訪問www.fake.com就可以直接訪問138.12.11.3了,就跟我們將一個(gè)人的手機(jī)號(hào)碼備注上對(duì)方的名字一樣,這樣便于我們記憶與使用。
而DNS的作用就在于,將www.fake.com這個(gè)域名解析成IP地址的形式,否則瀏覽器是不知道www.fake.com究竟代表什么,這就是DNS的作用,也是為什么需要DNS的原因
技術(shù)細(xì)節(jié)
DNS查詢有兩種方式:遞歸和迭代
DNS客戶端一般是遞歸服務(wù)器,它全權(quán)負(fù)責(zé)處理客戶端的DNS查詢請(qǐng)求,直到返回結(jié)果。而DNS服務(wù)器之間一般采用迭代查詢方式。
查詢過程:
1. 客戶端發(fā)送查詢報(bào)文(query www.zaxuelab.com)到DNS服務(wù)器,DNS服務(wù)器首先檢查自身緩存,如果存在記錄就直接返回結(jié)果
2. 如果記錄老化或不存在,就會(huì)開始新的查詢操作:
- DNS服務(wù)器向根域名服務(wù)器發(fā)送查詢報(bào)文(query www.zaxuelab.com),跟域名服務(wù)器返回頂級(jí)域.com的權(quán)威域名服務(wù)器地址
- DNS服務(wù)器向.com域的權(quán)威域名服務(wù)器發(fā)送查詢報(bào)文(query www.zaxuelab.com)得到二級(jí)域.zaxuelab.com的權(quán)威域名服務(wù)器地址
- DNS服務(wù)器向.zaxuelab.com域的權(quán)威域名服務(wù)器發(fā)送查詢報(bào)文(query www.zaxuelab.com)得到主機(jī)www的A記錄,存入自身緩存并返回給客戶端
記錄類型
常用的幾種記錄類型:
- A記錄(主機(jī)記錄),用于名稱解析的重要記錄,域名-IP
- CNAME記錄(別名記錄),將某個(gè)別名指向A記錄,就不需要再創(chuàng)建A記錄了
- AAAA記錄(IPv6主機(jī)記錄),與A記錄對(duì)應(yīng),域名-IPv6地址
一般目前有網(wǎng)站或者一些服務(wù)都是做A記錄或CNAME,也有一些已經(jīng)開始玩IPv6的會(huì)做AAAA記錄
網(wǎng)速慢
有時(shí)候會(huì)發(fā)現(xiàn)打開一個(gè)網(wǎng)站加載半天,其實(shí)這就是DNS的問題,很多時(shí)候有一些人會(huì)教你配置DNS之類的操作,你可能不知道原因,其實(shí)就是一個(gè)相同的DNS,在不同地區(qū)或不同運(yùn)營(yíng)商都會(huì)有不同的體驗(yàn),選擇適合自己的DNS或者選擇合適的公共DNS能大大改善所謂的“網(wǎng)速”(實(shí)際網(wǎng)速有專門的測(cè)速方法,如果感興趣可以關(guān)注我發(fā)的相關(guān)文章)
有時(shí)候用了國外的DNS后,發(fā)現(xiàn)訪問國內(nèi)的一些網(wǎng)站奇慢無比,其實(shí)不是國外的DNS慢,而是要訪問的網(wǎng)站的`CDN分配錯(cuò)誤`導(dǎo)致很慢的。因?yàn)樵趪鴥?nèi)各大運(yùn)營(yíng)商之間的主干線路帶寬太窄,導(dǎo)致了最遠(yuǎn)的距離不是國內(nèi)和國外,而是從電信到聯(lián)通..其實(shí)在國內(nèi)的一些大網(wǎng)站基本都是做雙線或者多線CDN的(在三大運(yùn)營(yíng)商機(jī)房里放點(diǎn)服務(wù)器),因?yàn)榭蛻艨赡苡秒娦拧⒙?lián)通、移動(dòng)其中的一種。當(dāng)你訪問網(wǎng)站時(shí),智能DNS會(huì)根據(jù)你的來源IP判斷你是哪個(gè)運(yùn)營(yíng)商的用戶,再?zèng)Q定返回什么IP給你,我們來看一個(gè)例子:
? dig jd.com @202.101.103.55 +short
120.52.148.118 # 聯(lián)通
111.13.149.108 # 移動(dòng)
118.193.98.63 # 電信
? dig jd.com @114.114.114 +short
118.193.98.63
111.13.149.108
120.52.148.118
? dig jd.com @8.8.8.8 +short
120.52.148.118
118.193.98.63
111.13.149.108
? dig jd.com @223.5.5.5 +short
118.193.98.63
111.13.149.108
120.52.148.118
可以看到都是返回三個(gè)IP,但是順序不同,我是電信寬帶,這個(gè)時(shí)候只有獲取到電信才是最快的..這就是一個(gè)很簡(jiǎn)單的例子
實(shí)際上我們也可以借助一些軟件來看看DNS解析的情況,這邊我用DNS Benchmark測(cè)試了一下,可以看到一些主流的DNS(因?yàn)檐浖菄獾模珼NS和一些測(cè)試站點(diǎn)都是國際的,所以僅供參考,并不絕對(duì)),可以看到目前我使用的223.5.5.5和8.8.8.8的速度都是在前面的
常用的公共DNS
一般選擇正確的公共DNS即可解決大部分問題,這里推薦幾個(gè)公共DNS
[AliDNS]
223.5.5.5
223.6.6.6
[騰訊DNSPod]
119.29.29.29
119.28.28.28
[googleDNS]
8.8.8.8
8.8.4.4






