搞懂這 9 個(gè)步驟,DNS 訪問原理就明明白白了
作者:崔皓
來自:51CTO博客
鏈接:https://blog.51cto.com/14279308/2481205
DNS 的含義和結(jié)構(gòu)
眾所周知,在互聯(lián)網(wǎng)中是用IP來標(biāo)識(shí)一臺(tái)服務(wù)器的。IP地址雖然能夠代表一臺(tái)設(shè)備,但是由于記憶起來比較困難,所以將其替換成一個(gè)能夠理解和識(shí)別的名字,這個(gè)名字我們稱作為域名。例如:www.51cto.com 就是一個(gè)域名,在域名后面會(huì)定義一個(gè)IP地址用來指向網(wǎng)站服務(wù)器。那么問題來了,誰來做這個(gè)從域名到IP地址的對(duì)應(yīng)呢?答案是通過DNS來實(shí)現(xiàn)。
DNS 是域名系統(tǒng)(Domain Name System,縮寫:DNS)是互聯(lián)網(wǎng)的一項(xiàng)服務(wù)。它將域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)中保存域名與IP的對(duì)照關(guān)系,從而使人更方便地訪問互聯(lián)網(wǎng)。
DNS解析是分布式存儲(chǔ)的,從結(jié)構(gòu)上來說最頂層是,根域名服務(wù)器(ROOT DNS Server),存儲(chǔ)260個(gè)頂級(jí)域名服務(wù)器的IP地址。對(duì)于Ipv4來說全球有13個(gè)根域名服務(wù)器,它儲(chǔ)存了每個(gè)域(如.com .net .cn)的解析和域名服務(wù)器的地址信息。簡(jiǎn)單的說,根域名服務(wù)器就是存放頂級(jí)域名服務(wù)器地址的。
頂級(jí)域名又稱一級(jí)域名,頂級(jí)域名可以分為三類,即gTLD、ccTLD和New
gTLD:
-
gTLD:國(guó)際頂級(jí)域名(generic top-level domains,gTLD),例如:.com/.net/.org等都屬于gTLD;
-
ccTLD:國(guó)家和地區(qū)頂級(jí)域名(country code top-level domains,簡(jiǎn)稱ccTLD),例如:中國(guó)是.cn域名,日本是.jp域名;
-
New gTLD:新頂級(jí)域名(New gTLD),例如:.xyz/.top/.red/.help等新頂級(jí)域名。頂級(jí)域名服務(wù)器就是根據(jù)上面三類保存域名IP對(duì)應(yīng)數(shù)據(jù)的。
在頂級(jí)域名服務(wù)器下面一級(jí)就是,本地域名服務(wù)器(Local DNS)一般是運(yùn)營(yíng)商的DNS,主要作用就是代理用戶進(jìn)行域名分析的。
如圖1 所示,DNS域名服務(wù)器分為三級(jí),從上到下分別是根域名服務(wù)器(Root DNS Server)、頂級(jí)域名服務(wù)器(gTLD、ccTLD、New gTLD)、本地域名服務(wù)器(Local DNS Server)。
圖1 DNS 分層結(jié)構(gòu)
DNS解析原理
說完DNS的結(jié)構(gòu),再來談?wù)勂溥\(yùn)行原理。通過用戶訪問網(wǎng)頁(yè)的過程,來描述DNS解析以及獲取URL到IP映射的整個(gè)過程。其中過程比較復(fù)雜,會(huì)存在信息的來回傳遞。畫圖的過程中我們會(huì)簡(jiǎn)化信息來回傳遞的線段,重點(diǎn)放在信息傳遞的路徑,通過9步來詮釋DNS解析過程。
圖2 用戶請(qǐng)求以及DNS解析的全過程
1、用戶請(qǐng)求通過瀏覽器輸入要訪問網(wǎng)站的地址,例如:www.51cto.com。瀏覽器會(huì)在自己的緩存中查找URL對(duì)應(yīng)IP地址。如果之前訪問過,保存了這個(gè)URL對(duì)應(yīng)IP地址的緩存,那么就直接訪問IP地址。如果沒有緩存,進(jìn)入到第2步。
2、通過計(jì)算機(jī)本地的Host文件配置,可以設(shè)置URL和IP地址的映射關(guān)系。比如windows下是通過C:\windwos\system32\driver\etc\hosts文件來設(shè)置的,linux中則是/etc/named.confg文件。這里查找本地的Host文件,看是有IP地址的緩存。如果在文件中依舊沒有找到映射關(guān)系,進(jìn)入第3步。
3、請(qǐng)求Local DNS Server,通過本地運(yùn)營(yíng)商獲取URL和IP的映射關(guān)系。如果在校園網(wǎng),DNS服務(wù)器就在學(xué)校,如果是小區(qū)網(wǎng)絡(luò),DNS服務(wù)器是運(yùn)營(yíng)商提供的??傊@個(gè)服務(wù)器在物理位置上離發(fā)起請(qǐng)求的計(jì)算機(jī)比較近。Local DNS Server緩存了大量的DNS解析結(jié)果。由于它的性能較好,物理上的距離又比較近,它通常會(huì)在很短的時(shí)間內(nèi)返回指定域名的解析結(jié)果。80%的DNS解析需求在這一步就滿足了。如果在這一步還是沒有完成DNS解析,進(jìn)入第4步
4、通過Root DNS Server進(jìn)行解析,ROOT DNS Server會(huì)根據(jù)請(qǐng)求的URL 返回給Local DNS Server頂級(jí)域名服務(wù)器的地址。例如:查詢的是”.com”的域名,就查詢 gTL對(duì)應(yīng)的域名服務(wù)器的地址。
5、返回頂級(jí)域名服務(wù)器的地址以后,訪問對(duì)應(yīng)的頂級(jí)域名服務(wù)器(gTLD、ccTLD、New gTLD),并且返回Name Server服務(wù)器地址。這個(gè)Name Server就是網(wǎng)站注冊(cè)的域名服務(wù)器,上面包含了網(wǎng)站URL和IP的對(duì)應(yīng)信息。例如你在某個(gè)域名服務(wù)提供商申請(qǐng)的域名,這個(gè)域名就由他們的服務(wù)器來解析。這個(gè)Name Server是由域名提供商維護(hù)的。
6、Name Server會(huì)把指定域名的A記錄或者CNAME返回給Local DNS Server,并且設(shè)置一個(gè)TTL。
-
A (Address) 記錄是用來指定主機(jī)名(或域名)對(duì)應(yīng)的IP地址記錄。用戶可以將該域名下的網(wǎng)站服務(wù)器指向到自己的web server上。同時(shí)也可以設(shè)置您域名的二級(jí)域名。
-
CNAME:別名記錄。這種記錄允許您將多個(gè)名字映射到另外一個(gè)域名。通常用于同時(shí)提供WWW和MAIL服務(wù)的計(jì)算機(jī)。例如,有一臺(tái)計(jì)算機(jī)名為“host.mydomain.com”(A記錄)。它同時(shí)提供WWW和MAIL服務(wù),為了便于用戶訪問服務(wù)。服務(wù)商從方便維護(hù)的角度,一般也建議用戶使用CNAME記錄綁定域名的。如果主機(jī)使用了雙線IP,顯然使用CNAME也要方便一些。
-
TTL(Time To Live):也就是設(shè)置這個(gè)DNS解析在Local DNS Server上面的過期時(shí)間。超過了這個(gè)過期時(shí)間,URL和IP的映射就會(huì)被刪除,需要獲取還要請(qǐng)求Name Server。
7、如果此時(shí)獲取的是A記錄,那么就可以直接訪問網(wǎng)站的IP了。但是通常來說大型的網(wǎng)站都會(huì)返回CNAME,然后將其傳給GTM Server。
GTM(Global Traffic Manager的簡(jiǎn)寫)即全局流量管理,基于網(wǎng)宿智能DNS、分布式監(jiān)控體系,實(shí)現(xiàn)實(shí)時(shí)故障切換及全球負(fù)載均衡,保障應(yīng)用服務(wù)的持續(xù)高可用性。傳給GTM的目的就是希望通過GTM的負(fù)載均衡機(jī)制,幫助用戶找到最適合自己的服務(wù)器IP。
也就是離自己最近,性能最好,服務(wù)器狀態(tài)最健康的。而且大多數(shù)的網(wǎng)站會(huì)做CDN緩存,此時(shí)就更需要使用GTM幫你找到網(wǎng)絡(luò)節(jié)點(diǎn)中適合你的CDN緩存服務(wù)器。
8、找到CDN緩存服務(wù)器以后,可以直接從服務(wù)器上面獲取一些靜態(tài)資源,例如:HTML、CSS、JS和圖片。但是一些動(dòng)態(tài)資源,例如商品信息,訂單信息,需要通過第9步。
9、對(duì)于沒有緩存的動(dòng)態(tài)資源需要從應(yīng)用服務(wù)器獲取,在應(yīng)用服務(wù)器與互聯(lián)網(wǎng)之間通常有一層負(fù)載均衡器負(fù)責(zé)反向代理。有它路由到應(yīng)用服務(wù)器上。
總結(jié)
DNS服務(wù)器是用來做URL與IP地址解析的,幫助用戶找到要訪問服務(wù)器的IP。從DNS服務(wù)器的結(jié)構(gòu)來說大致分為三層:根域名服務(wù)器,頂級(jí)域名服務(wù)器,本地域名服務(wù)器。
申請(qǐng)域名的供應(yīng)商會(huì)提供Name Server作為DNS解析。從用戶訪問一個(gè)網(wǎng)站出發(fā),經(jīng)過瀏覽器,本地Host文件、Local DNS Server、Root DNS Server、頂級(jí)域名服務(wù)器(gTLD、ccTLD、New gTLD)、Name Server、GTM、CDN、Application Server。共經(jīng)歷了九個(gè)步驟。
-END-
推薦閱讀
【01】工程師純干貨總結(jié):TCP/IP網(wǎng)絡(luò)編程
【02】實(shí)戰(zhàn)解析:嵌入式系統(tǒng)的加密IP核可以這樣來設(shè)計(jì)!
【03】為什么要使用二級(jí)指針?
【04】帶你全面認(rèn)識(shí) Linux
【05】程序燒錄中SREC、Hex、Bin文件格式有啥區(qū)別?一文看懂!
免責(zé)聲明:整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除
作者:崔皓
來自:51CTO博客
鏈接:https://blog.51cto.com/14279308/2481205
DNS 的含義和結(jié)構(gòu)
-
gTLD:國(guó)際頂級(jí)域名(generic top-level domains,gTLD),例如:.com/.net/.org等都屬于gTLD; -
ccTLD:國(guó)家和地區(qū)頂級(jí)域名(country code top-level domains,簡(jiǎn)稱ccTLD),例如:中國(guó)是.cn域名,日本是.jp域名; -
New gTLD:新頂級(jí)域名(New gTLD),例如:.xyz/.top/.red/.help等新頂級(jí)域名。頂級(jí)域名服務(wù)器就是根據(jù)上面三類保存域名IP對(duì)應(yīng)數(shù)據(jù)的。
DNS解析原理
-
A (Address) 記錄是用來指定主機(jī)名(或域名)對(duì)應(yīng)的IP地址記錄。用戶可以將該域名下的網(wǎng)站服務(wù)器指向到自己的web server上。同時(shí)也可以設(shè)置您域名的二級(jí)域名。 -
CNAME:別名記錄。這種記錄允許您將多個(gè)名字映射到另外一個(gè)域名。通常用于同時(shí)提供WWW和MAIL服務(wù)的計(jì)算機(jī)。例如,有一臺(tái)計(jì)算機(jī)名為“host.mydomain.com”(A記錄)。它同時(shí)提供WWW和MAIL服務(wù),為了便于用戶訪問服務(wù)。服務(wù)商從方便維護(hù)的角度,一般也建議用戶使用CNAME記錄綁定域名的。如果主機(jī)使用了雙線IP,顯然使用CNAME也要方便一些。 -
TTL(Time To Live):也就是設(shè)置這個(gè)DNS解析在Local DNS Server上面的過期時(shí)間。超過了這個(gè)過期時(shí)間,URL和IP的映射就會(huì)被刪除,需要獲取還要請(qǐng)求Name Server。
總結(jié)
-END-
推薦閱讀
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!