不再懼怕DNS面試題:大牛用1張大圖,9個(gè)步驟輕松應(yīng)對
原創(chuàng)【51CTO.com原創(chuàng)稿件】 又到了招聘季了,前兩天遇到一個(gè)面試的小伙伴,他說面試官和他聊得很投機(jī),無意中談到了DNS請求的過程。他一時(shí)語塞隨便應(yīng)付了兩句,雖然對方?jīng)]有追問的意思,但最后面試結(jié)果也并不理想。本著邊面試邊學(xué)習(xí)的態(tài)度,我們來看看DNS請求的過程中涉及到的定義和原理。
DNS的含義和結(jié)構(gòu)
眾所周知,在互聯(lián)網(wǎng)中是用IP來標(biāo)識一臺服務(wù)器的。IP地址雖然能夠代表一臺設(shè)備,但是由于記憶起來比較困難,所以將其替換成一個(gè)能夠理解和識別的名字,這個(gè)名字我們稱作為域名。例如:www.toutiao.com 就是一個(gè)域名,在域名后面會定義一個(gè)IP地址用來指向網(wǎng)站服務(wù)器。那么問題來了,誰來做這個(gè)從域名到IP地址的對應(yīng)呢?答案是通過DNS來實(shí)現(xiàn)。
DNS 是域名系統(tǒng)(Domain Name System,縮寫:DNS)是互聯(lián)網(wǎng)的一項(xiàng)服務(wù)。它將域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫,在數(shù)據(jù)庫中保存域名與IP的對照關(guān)系,從而使人更方便地訪問互聯(lián)網(wǎng)。
DNS解析是分布式存儲的,從結(jié)構(gòu)上來說最頂層是,根域名服務(wù)器(ROOT DNS Server),存儲260個(gè)頂級域名服務(wù)器的IP地址。對于Ipv4來說全球有13個(gè)根域名服務(wù)器,它儲存了每個(gè)域(如.com .net .cn)的解析和域名服務(wù)器的地址信息。簡單的說,根域名服務(wù)器就是存放頂級域名服務(wù)器地址的。
在根域名服務(wù)器下一級就是,頂級域名服務(wù)器。例如.com的域名服務(wù)器,存儲的是一些一級域名的權(quán)威DNS服務(wù)器地址(如toutiao.com的DNS)。
頂級域名又稱一級域名,頂級域名可以分為三類,即gTLD、ccTLD和New gTLD:
- gTLD:國際頂級域名(generic top-level domains,gTLD),例如:.com/.net/.org等都屬于gTLD;
- ccTLD:國家和地區(qū)頂級域名(country code top-level domains,簡稱ccTLD),例如:中國是.cn域名,日本是.jp域名;
- New gTLD:新頂級域名(New gTLD),例如:.xyz/.top/.red/.help等新頂級域名。
頂級域名服務(wù)器就是根據(jù)上面三類保存域名IP對應(yīng)數(shù)據(jù)的。
在頂級域名服務(wù)器下面一級就是,本地域名服務(wù)器(Local DNS)一般是運(yùn)營商的DNS,主要作用就是代理用戶進(jìn)行域名分析的。
如圖1 所示,DNS域名服務(wù)器分為三級,從上到下分別是根域名服務(wù)器(Root DNS Server)、頂級域名服務(wù)器(gTLD、ccTLD、New gTLD)、本地域名服務(wù)器(Local DNS Server)。

DNS解析原理
說完DNS的結(jié)構(gòu),再來談?wù)勂溥\(yùn)行原理。通過用戶訪問網(wǎng)頁的過程,來描述DNS解析以及獲取URL到IP映射的整個(gè)過程。其中過程比較復(fù)雜,會存在信息的來回傳遞。畫圖的過程中我們會簡化信息來回傳遞的線段,重點(diǎn)放在信息傳遞的路徑,通過9步來詮釋DNS解析過程。

圖2 用戶請求以及DNS解析的全過程
①用戶請求通過瀏覽器輸入要訪問網(wǎng)站的地址,例如:www.toutiao.com。瀏覽器會在自己的緩存中查找URL對應(yīng)IP地址。如果之前訪問過,保存了這個(gè)URL對應(yīng)IP地址的緩存,那么就直接訪問IP地址。如果沒有緩存,進(jìn)入到第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步。
③請求Local DNS Server,通過本地運(yùn)營商獲取URL和IP的映射關(guān)系。如果在校園網(wǎng),DNS服務(wù)器就在學(xué)校,如果是小區(qū)網(wǎng)絡(luò),DNS服務(wù)器是運(yùn)營商提供的。總之這個(gè)服務(wù)器在物理位置上離發(fā)起請求的計(jì)算機(jī)比較近。Local DNS Server緩存了大量的DNS解析結(jié)果。由于它的性能較好,物理上的距離又比較近,它通常會在很短的時(shí)間內(nèi)返回指定域名的解析結(jié)果。80%的DNS解析需求在這一步就滿足了。如果在這一步還是沒有完成DNS解析,進(jìn)入第4步
④通過Root DNS Server進(jìn)行解析,ROOT DNS Server會根據(jù)請求的URL 返回給Local DNS Server頂級域名服務(wù)器的地址。例如:查詢的是”.com”的域名,就查詢 gTL對應(yīng)的域名服務(wù)器的地址。
⑤返回頂級域名服務(wù)器的地址以后,訪問對應(yīng)的頂級域名服務(wù)器(gTLD、ccTLD、New gTLD),并且返回Name Server服務(wù)器地址。這個(gè)Name Server就是網(wǎng)站注冊的域名服務(wù)器,上面包含了網(wǎng)站URL和IP的對應(yīng)信息。例如你在某個(gè)域名服務(wù)提供商申請的域名,這個(gè)域名就由他們的服務(wù)器來解析。這個(gè)Name Server是由域名提供商維護(hù)的。
⑥Name Server會把指定域名的A記錄或者CNAME返回給Local DNS Server,并且設(shè)置一個(gè)TTL。
- A (Address) 記錄是用來指定主機(jī)名(或域名)對應(yīng)的IP地址記錄。用戶可以將該域名下的網(wǎng)站服務(wù)器指向到自己的web server上。同時(shí)也可以設(shè)置您域名的二級域名。
- CNAME:別名記錄。這種記錄允許您將多個(gè)名字映射到另外一個(gè)域名。通常用于同時(shí)提供WWW和MAIL服務(wù)的計(jì)算機(jī)。例如,有一臺計(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的映射就會被刪除,需要獲取還要請求Name Server。
⑦如果此時(shí)獲取的是A記錄,那么就可以直接訪問網(wǎng)站的IP了。但是通常來說大型的網(wǎng)站都會返回CNAME,然后將其傳給GTM Server。
GTM(Global Traffic Manager的簡寫)即全局流量管理,基于網(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)站會做CDN緩存,此時(shí)就更需要使用GTM幫你找到網(wǎng)絡(luò)節(jié)點(diǎn)中適合你的CDN緩存服務(wù)器。
⑧找到CDN緩存服務(wù)器以后,可以直接從服務(wù)器上面獲取一些靜態(tài)資源,例如:HTML、CSS、JS和圖片。但是一些動態(tài)資源,例如商品信息,訂單信息,需要通過第9步。
⑨對于沒有緩存的動態(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ù)器,頂級域名服務(wù)器,本地域名服務(wù)器。
申請域名的供應(yīng)商會提供Name Server作為DNS解析。從用戶訪問一個(gè)網(wǎng)站出發(fā),經(jīng)過瀏覽器,本地Host文件、Local DNS Server、Root DNS Server、頂級域名服務(wù)器(gTLD、ccTLD、New gTLD)、Name Server、GTM、CDN、Application Server。共經(jīng)歷了九個(gè)步驟。
作者:崔皓
簡介:十六年開發(fā)和架構(gòu)經(jīng)驗(yàn),曾擔(dān)任過惠普武漢交付中心技術(shù)專家,需求分析師,項(xiàng)目經(jīng)理,后在創(chuàng)業(yè)公司擔(dān)任技術(shù)/產(chǎn)品經(jīng)理。善于學(xué)習(xí),樂于分享。目前專注于技術(shù)架構(gòu)與研發(fā)管理。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】


























