DNS解析過程

為什么寫這篇文章,因為有這樣一個面試題毁习,在瀏覽器中輸入www.baidu.com發(fā)生了什么(整個過程請自行百度)智嚷。但是網(wǎng)上的介紹都是講宏觀上的,比如第一步是解析域名成IP地址纺且。那如果面試官問怎么解析的盏道,讓你回答解析的細(xì)節(jié),這不就一臉懵逼了载碌。所以我在這里記錄一下這一步猜嘱,即如何將域名解析成IP地址衅枫。

在查詢資料的過程中,我發(fā)現(xiàn)一篇文章講的挺好朗伶。尤其是遞歸查詢和迭代查詢那里弦撩。所以本文大部分內(nèi)容摘自參考文章:DNS原理總結(jié)及其解析過程詳解

一、域名系統(tǒng)

1论皆、域名系統(tǒng)概述

域名系統(tǒng)DNS(Domain Name System)是因特網(wǎng)使用的命名系統(tǒng)益楼,用來把便于人們使用的機(jī)器名字轉(zhuǎn)換成為IP地址。域名系統(tǒng)其實就是名字系統(tǒng)点晴。為什么不叫“名字”而叫“域名”呢感凤?這是因為在這種因特網(wǎng)的命名系統(tǒng)中使用了許多的“域(domain)”,因此就出現(xiàn)了“域名”這個名詞觉鼻】∨ぃ“域名系統(tǒng)”明確地指明這種系統(tǒng)是應(yīng)用在因特網(wǎng)中。

我們都知道坠陈,IP地址是由32位的二進(jìn)制數(shù)字組成的。用戶與因特網(wǎng)上某臺主機(jī)通信時捐康,顯然不愿意使用很難記憶的長達(dá)32位的二進(jìn)制主機(jī)地址仇矾。即使是點分十進(jìn)制IP地址也并不太容易記憶。相反解总,大家愿意使用比較容易記憶的主機(jī)名字贮匕。但是,機(jī)器在處理IP數(shù)據(jù)報時花枫,并不是使用域名而是使用IP地址刻盐。這是因為IP地址長度固定,而域名的長度不固定劳翰,機(jī)器處理起來比較困難敦锌。

域名到IP地址的解析是由分布在因特網(wǎng)上的許多域名服務(wù)器程序共同完成的。域名服務(wù)器程序在專設(shè)的結(jié)點上運行佳簸,而人們也常把運行域名服務(wù)器程序的機(jī)器稱為域名服務(wù)器乙墙。

2、因特網(wǎng)的域名結(jié)構(gòu)

由于因特網(wǎng)的用戶數(shù)量較多生均,所以因特網(wǎng)在命名時采用的是層次樹狀結(jié)構(gòu)的命名方法听想。任何一個連接在因特網(wǎng)上的主機(jī)或路由器,都有一個唯一的層次結(jié)構(gòu)的名字马胧,即域名(domain name)汉买。這里,“域”(domain)是名字空間中一個可被管理的劃分佩脊。

如下例子所示:


這是中央電視臺用于手法電子郵件的計算機(jī)的域名蛙粘,它由三個標(biāo)號組成垫卤,其中標(biāo)號com是頂級域名,標(biāo)號cctv是二級域名组题,標(biāo)號mail是三級域名葫男。

DNS規(guī)定,域名中的標(biāo)號都有英文和數(shù)字組成崔列,每一個標(biāo)號不超過63個字符(為了記憶方便梢褐,一般不會超過12個字符),也不區(qū)分大小寫字母赵讯。標(biāo)號中除連字符(-)外不能使用其他的標(biāo)點符號盈咳。級別最低的域名寫在最左邊,而級別最高的字符寫在最右邊边翼。由多個標(biāo)號組成的完整域名總共不超過255個字符鱼响。DNS既不規(guī)定一個域名需要包含多少個下級域名,也不規(guī)定每一級域名代表什么意思组底。各級域名由其上一級的域名管理機(jī)構(gòu)管理丈积,而最高的頂級域名則由ICANN進(jìn)行管理。用這種方法可使每一個域名在整個互聯(lián)網(wǎng)范圍內(nèi)是唯一的债鸡,并且也容易設(shè)計出一種查找域名的機(jī)制江滨。
域名只是邏輯概念,并不代表計算機(jī)所在的物理地點厌均。據(jù)2006年12月統(tǒng)計唬滑,現(xiàn)在頂級域名TLD(Top Level Domain)已有265個,分為三大類:
(1)國家頂級域名nTLD:采用ISO3166的規(guī)定棺弊。如:cn代表中國晶密,us代表美國,uk代表英國模她,等等稻艰。國家域名又常記為ccTLD(cc表示國家代碼contry-code)。
(2)通用頂級域名gTLD:最常見的通用頂級域名有7個缝驳,即:com(公司企業(yè))连锯,net(網(wǎng)絡(luò)服務(wù)機(jī)構(gòu)),org(非營利組織)用狱,int(國際組織)运怖,gov(美國的政府部門),mil(美國的軍事部門)夏伊。
(3)基礎(chǔ)結(jié)構(gòu)域名(infrastructure domain):這種頂級域名只有一個摇展,即arpa,用于反向域名解析溺忧,因此稱為反向域名咏连。

3盯孙、域名服務(wù)器

如果采用上述的樹狀結(jié)構(gòu),每一個節(jié)點都采用一個域名服務(wù)器祟滴,這樣會使得域名服務(wù)器的數(shù)量太多振惰,使域名服務(wù)器系統(tǒng)的運行效率降低。所以在DNS中垄懂,采用劃分區(qū)的方法來解決骑晶。

一個服務(wù)器所負(fù)責(zé)管轄(或有權(quán)限)的范圍叫做區(qū)(zone)。各單位根據(jù)具體情況來劃分自己管轄范圍的區(qū)草慧。但在一個區(qū)中的所有節(jié)點必須是能夠連通的桶蛔。每一個區(qū)設(shè)置相應(yīng)的權(quán)限域名服務(wù)器,用來保存該區(qū)中的所有主機(jī)到域名IP地址的映射漫谷∽欣祝總之,DNS服務(wù)器的管轄范圍不是以“域”為單位舔示,而是以“區(qū)”為單位碟婆。區(qū)是DNS服務(wù)器實際管轄的范圍。區(qū) <= 域惕稻。

下圖是區(qū)的不同劃分方法的舉例脑融。假定abc公司有下屬部門x和y,部門x下面有分三個分布們u,v,w缩宜,而y下面還有下屬部門t。圖a表示abc公司只設(shè)一個區(qū)abc.com甥温。這是锻煌,區(qū)abc.com和域abc.com指的是同一件事。但圖b表示abc公司劃分為兩個區(qū):abc.com和y.abc.com姻蚓。這兩個區(qū)都隸屬于域abc.com宋梧,都各設(shè)置了相應(yīng)的權(quán)限域名服務(wù)器。不難看出狰挡,區(qū)是域的子集捂龄。

下圖是以上圖b中abc公司劃分的兩個區(qū)為例,給出了DNS域名服務(wù)器樹狀結(jié)構(gòu)圖加叁。這種DNS域名服務(wù)器樹狀結(jié)構(gòu)圖可以更準(zhǔn)確地反映出DNS的分布式結(jié)構(gòu)倦沧。圖中的每一個域名服務(wù)器都能夠部分域名到IP地址的解析。當(dāng)某個DNS服務(wù)器不能進(jìn)行域名到IP地址的轉(zhuǎn)換時它匕,它就會設(shè)法找因特網(wǎng)上別的域名服務(wù)器進(jìn)行解析展融。

從下圖可以看出,因特網(wǎng)上的DNS服務(wù)器也是按照層次安排的豫柬。每一個域名服務(wù)器只對域名體系中的一部分進(jìn)行管轄告希。根據(jù)域名服務(wù)器所起的作用扑浸,可以把域名服務(wù)器劃分為下面四種不同的類型。

根域名服務(wù)器:最高層次的域名服務(wù)器燕偶,也是最重要的域名服務(wù)器喝噪。所有的根域名服務(wù)器都知道所有的頂級域名服務(wù)器的域名和IP地址。不管是哪一個本地域名服務(wù)器指么,若要對因特網(wǎng)上任何一個域名進(jìn)行解析酝惧,只要自己無法解析,就首先求助根域名服務(wù)器涧尿。所以根域名服務(wù)器是最重要的域名服務(wù)器系奉。假定所有的根域名服務(wù)器都癱瘓了,那么整個DNS系統(tǒng)就無法工作姑廉。需要注意的是缺亮,在很多情況下,根域名服務(wù)器并不直接把待查詢的域名直接解析出IP地址桥言,而是告訴本地域名服務(wù)器下一步應(yīng)當(dāng)找哪一個頂級域名服務(wù)器進(jìn)行查詢萌踱。

頂級域名服務(wù)器:負(fù)責(zé)管理在該頂級域名服務(wù)器注冊的二級域名。

權(quán)限域名服務(wù)器:負(fù)責(zé)一個“區(qū)”的域名服務(wù)器号阿。

本地域名服務(wù)器:本地服務(wù)器不屬于下圖的域名服務(wù)器的層次結(jié)構(gòu)并鸵,但是它對域名系統(tǒng)非常重要。當(dāng)一個主機(jī)發(fā)出DNS查詢請求時扔涧,這個查詢請求報文就發(fā)送給本地域名服務(wù)器园担。

4、域名的解析過程

一枯夜、主機(jī)向本地域名服務(wù)器的查詢一般都是采用遞歸查詢弯汰。所謂遞歸查詢就是:如果主機(jī)所詢問的本地域名服務(wù)器不知道被查詢的域名的IP地址,那么本地域名服務(wù)器就以DNS客戶的身份湖雹,向其它根域名服務(wù)器繼續(xù)發(fā)出查詢請求報文(即替主機(jī)繼續(xù)查詢)咏闪,而不是讓主機(jī)自己進(jìn)行下一步查詢。因此摔吏,遞歸查詢返回的查詢結(jié)果或者是所要查詢的IP地址鸽嫂,或者是報錯,表示無法查詢到所需的IP地址征讲。

二据某、本地域名服務(wù)器向根域名服務(wù)器的查詢的迭代查詢。迭代查詢的特點:當(dāng)根域名服務(wù)器收到本地域名服務(wù)器發(fā)出的迭代查詢請求報文時稳诚,要么給出所要查詢的IP地址哗脖,要么告訴本地服務(wù)器:“你下一步應(yīng)當(dāng)向哪一個域名服務(wù)器進(jìn)行查詢”。然后讓本地服務(wù)器進(jìn)行后續(xù)的查詢。根域名服務(wù)器通常是把自己知道的頂級域名服務(wù)器的IP地址告訴本地域名服務(wù)器才避,讓本地域名服務(wù)器再向頂級域名服務(wù)器查詢橱夭。頂級域名服務(wù)器在收到本地域名服務(wù)器的查詢請求后,要么給出所要查詢的IP地址桑逝,要么告訴本地服務(wù)器下一步應(yīng)當(dāng)向哪一個權(quán)限域名服務(wù)器進(jìn)行查詢棘劣。最后,知道了所要解析的IP地址或報錯楞遏,然后把這個結(jié)果返回給發(fā)起查詢的主機(jī)茬暇。

下圖給出了這兩種查詢的差別:


下面舉一個例子演示整個查詢過程:

假定域名為m.xyz.com的主機(jī)想知道另一個主機(jī)y.abc.com的IP地址。例如寡喝,主機(jī)m.xyz.com打算發(fā)送郵件給y.abc.com糙俗。這時就必須知道主機(jī)y.abc.com的IP地址。下面是上圖a的幾個查詢步驟:

1预鬓、主機(jī)m.abc.com先向本地服務(wù)器dns.xyz.com進(jìn)行遞歸查詢巧骚。

2、本地服務(wù)器采用迭代查詢格二。它先向一個根域名服務(wù)器查詢劈彪。

3、根域名服務(wù)器告訴本地服務(wù)器顶猜,下一次應(yīng)查詢的頂級域名服務(wù)器dns.com的IP地址沧奴。

4、本地域名服務(wù)器向頂級域名服務(wù)器dns.com進(jìn)行查詢长窄。

5滔吠、頂級域名服務(wù)器dns.com告訴本地域名服務(wù)器,下一步應(yīng)查詢的權(quán)限服務(wù)器dns.abc.com的IP地址挠日。

6屠凶、本地域名服務(wù)器向權(quán)限域名服務(wù)器dns.abc.com進(jìn)行查詢。

7肆资、權(quán)限域名服務(wù)器dns.abc.com告訴本地域名服務(wù)器,所查詢的主機(jī)的IP地址灶芝。

8郑原、本地域名服務(wù)器最后把查詢結(jié)果告訴m.xyz.com难捌。

整個查詢過程共用到了8個UDP報文蹬跃。

為了提高DNS查詢效率朗兵,并減輕服務(wù)器的負(fù)荷和減少因特網(wǎng)上的DNS查詢報文數(shù)量栓辜,在域名服務(wù)器中廣泛使用了高速緩存贝搁,用來存放最近查詢過的域名以及從何處獲得域名映射信息的記錄滨溉。

例如栗竖,在上面的查詢過程中猫胁,如果在m.xyz.com的主機(jī)上不久前已經(jīng)有用戶查詢過y.abc.com的IP地址,那么本地域名服務(wù)器就不必向根域名服務(wù)器重新查詢y.abc.com的IP地址涣澡,而是直接把告訴緩存中存放的上次查詢結(jié)果(即y.abc.com的IP地址)告訴用戶贱呐。

由于名字到地址的綁定并不經(jīng)常改變,為保持告訴緩存中的內(nèi)容正確入桂,域名服務(wù)器應(yīng)為每項內(nèi)容設(shè)置計時器并處理超過合理時間的項(例如每個項目兩天)奄薇。當(dāng)域名服務(wù)器已從緩存中刪去某項信息后又被請求查詢該項信息,就必須重新到授權(quán)管理該項的域名服務(wù)器綁定信息抗愁。當(dāng)權(quán)限服務(wù)器回答一個查詢請求時馁蒂,在響應(yīng)中都指明綁定有效存在的時間值。增加此時間值可減少網(wǎng)絡(luò)開銷蜘腌,而減少此時間值可提高域名解析的正確性沫屡。

不僅在本地域名服務(wù)器中需要高速緩存,在主機(jī)中也需要撮珠。許多主機(jī)在啟動時從本地服務(wù)器下載名字和地址的全部數(shù)據(jù)庫沮脖,維護(hù)存放自己最近使用的域名的高速緩存,并且只在從緩存中找不到名字時才使用域名服務(wù)器劫瞳。維護(hù)本地域名服務(wù)器數(shù)據(jù)庫的主機(jī)應(yīng)當(dāng)定期地檢查域名服務(wù)器以獲取新的映射信息倘潜,而且主機(jī)必須從緩存中刪除無效的項。由于域名改動并不頻繁志于,大多數(shù)網(wǎng)點不需花精力就能維護(hù)數(shù)據(jù)庫的一致性涮因。

參考文獻(xiàn):《計算機(jī)網(wǎng)絡(luò)第5版》--謝希仁

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市伺绽,隨后出現(xiàn)的幾起案子养泡,更是在濱河造成了極大的恐慌,老刑警劉巖奈应,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澜掩,死亡現(xiàn)場離奇詭異,居然都是意外死亡杖挣,警方通過查閱死者的電腦和手機(jī)肩榕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惩妇,“玉大人株汉,你說我怎么就攤上這事「柩辏” “怎么了乔妈?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長氓皱。 經(jīng)常有香客問我路召,道長勃刨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任股淡,我火速辦了婚禮身隐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揣非。我一直安慰自己抡医,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布早敬。 她就那樣靜靜地躺著忌傻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搞监。 梳的紋絲不亂的頭發(fā)上水孩,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天,我揣著相機(jī)與錄音琐驴,去河邊找鬼俘种。 笑死,一個胖子當(dāng)著我的面吹牛绝淡,可吹牛的內(nèi)容都是我干的宙刘。 我是一名探鬼主播,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼牢酵,長吁一口氣:“原來是場噩夢啊……” “哼悬包!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起馍乙,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤布近,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后丝格,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撑瞧,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年显蝌,在試婚紗的時候發(fā)現(xiàn)自己被綠了预伺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡曼尊,死狀恐怖扭屁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涩禀,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布然眼,位于F島的核電站艾船,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屿岂,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一践宴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧爷怀,春花似錦阻肩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吁朦,卻和暖如春柒室,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逗宜。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工雄右, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纺讲。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓擂仍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親熬甚。 傳聞我的和親對象是個殘疾皇子逢渔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,666評論 2 350

推薦閱讀更多精彩內(nèi)容