《計(jì)算機(jī)網(wǎng)絡(luò)——自頂向下方法》應(yīng)用層——DNS

DNS:因特網(wǎng)的目錄服務(wù)

因特網(wǎng)上的主機(jī)和人類一樣,可以使用多種方式進(jìn)行標(biāo)識(shí)。主機(jī)的一種標(biāo)識(shí)方法是用它的主機(jī)名(如cnn.com),然而,主機(jī)名幾乎沒(méi)有提供主機(jī)在因特網(wǎng)中的位置信息,由于這些原因主機(jī)也可以使用所謂的IP地址進(jìn)行標(biāo)識(shí)。IP地址由4個(gè)字節(jié)組成,并且有著嚴(yán)格的層次結(jié)構(gòu)。其中每個(gè)字節(jié)都被句點(diǎn)隔開(kāi),表示了0~255的十進(jìn)制數(shù)字,具有層次結(jié)構(gòu)是因?yàn)閺淖蟮接覓呙鐸P地址時(shí),我們能夠得到越來(lái)越具體的關(guān)于主機(jī)位于因特網(wǎng)何處的信息。

DNS提供的服務(wù)

域名系統(tǒng)(DNS)提供了主機(jī)名到IP地址轉(zhuǎn)換的目錄服務(wù)。
DNS是:

  • 一個(gè)由分層的DNS服務(wù)器實(shí)現(xiàn)的分布式數(shù)據(jù)庫(kù);
  • 一個(gè)使得主機(jī)能夠查詢分布式數(shù)據(jù)庫(kù)的應(yīng)用層協(xié)議。
    DNS協(xié)議運(yùn)行在UDP之上,使用53號(hào)端口。
    DNS通常是其他應(yīng)用層協(xié)議所使用的,包括HTTP,SMTP和FTP,將用戶提供的主機(jī)名解析為IP地址。下面是應(yīng)用瀏覽器請(qǐng)求URL時(shí)的一個(gè)轉(zhuǎn)換過(guò)程:
  • 同一臺(tái)用戶主機(jī)上運(yùn)行著DNS應(yīng)用的客戶端;
  • 瀏覽器從上述URL中抽出主機(jī)名,并將主機(jī)名傳給DNS應(yīng)用的客戶端;
  • DNS客戶想DNS服務(wù)器發(fā)送一個(gè)包含主機(jī)名的請(qǐng)求;
  • DNS客戶最終會(huì)受到一份回答報(bào)文,其中包含有對(duì)應(yīng)于該主機(jī)名的IP地址;
  • 一旦瀏覽器接收到來(lái)自DNS的該IP地址,它能夠向位于該IP地址80端口的HTTP服務(wù)器發(fā)起一個(gè)TCP連接。
    通過(guò)上面的這個(gè)過(guò)程我們也能夠看到DNS給使用它的因特網(wǎng)應(yīng)用帶來(lái)了額外的時(shí)延。
    除了主機(jī)名到IP地址的轉(zhuǎn)換外,DNS還提供了一些重要的服務(wù):
  • 主機(jī)別名
  • 郵件服務(wù)器別名
  • 負(fù)載分配

DNS工作機(jī)理概述

如果運(yùn)行在用戶主機(jī)上的某些應(yīng)用程序需要將主機(jī)名轉(zhuǎn)換為IP地址,這些應(yīng)用程序?qū)⒄{(diào)用DNS的客戶端,并指明需要被轉(zhuǎn)換的主機(jī)名(在很多基于UNIX的機(jī)器上,進(jìn)行這種轉(zhuǎn)換需要調(diào)用函數(shù)gethostname())。用戶主機(jī)上的DNS接收到后,向網(wǎng)絡(luò)紅發(fā)送一個(gè)DNS查詢報(bào)文。所有的DNS請(qǐng)求和回答報(bào)文使用UDP數(shù)據(jù)報(bào)經(jīng)端口53發(fā)送。
為什么DNS不采用集中式數(shù)據(jù)庫(kù)?主要是因?yàn)檫@種設(shè)計(jì)包含以下問(wèn)題:

  • 單點(diǎn)故障
  • 局部流量過(guò)大
  • 遠(yuǎn)距離延遲
  • 維護(hù)
    因此DNS采用的分布式的設(shè)計(jì)方案:
    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳


    image

分布式、層次數(shù)據(jù)庫(kù)

大致來(lái)說(shuō),有三種類型的DNS服務(wù)器:根DNS服務(wù)器、頂級(jí)DNS服務(wù)器和權(quán)威DNS服務(wù)器。
還有另外一類重要的DNS,稱為本地DNS服務(wù)器,每個(gè)ISP都有一臺(tái)本地DNS服務(wù)器。當(dāng)主機(jī)發(fā)出DNS請(qǐng)求時(shí),該請(qǐng)求被發(fā)往本地DNS服務(wù)器,它起著代理的作用,并將請(qǐng)求轉(zhuǎn)發(fā)到DNS層次服務(wù)器中。
域名解析是通過(guò)迭代加遞歸的方式進(jìn)行的。
[站外圖片上傳中...(image-f2a15e-1581422010159)]

DNS緩存

DNS緩存是DNS系統(tǒng)一個(gè)非常重要的特色,是為了改善實(shí)驗(yàn)性能并減少在因特網(wǎng)上到處傳輸DNS報(bào)文而采用的技術(shù)。

DNS記錄與報(bào)文

共同實(shí)現(xiàn)DNS分布式數(shù)據(jù)庫(kù)的所有服務(wù)器存儲(chǔ)了資源記錄(RR),RR提供了主機(jī)名到IP地址的映射。每個(gè)DNS回答報(bào)文包含了一套或者多條資源記錄。
資源記錄是一個(gè)包含了下列字段的4元組:
(Name, Value, Type, TTL)
TTL是該記錄的生存時(shí)間,他決定了資源記錄應(yīng)當(dāng)從緩存中刪除的時(shí)間。Name和Value的值取決于Type:

  • Type = A , 則Name是主機(jī)名,Value是主機(jī)名對(duì)應(yīng)的IP地址;因此,一條類型為A的資源記錄提供了標(biāo)準(zhǔn)的主機(jī)名到IP地址的映射;
  • Type = NS,則Name是個(gè)域,Value是個(gè)知道如何獲得該域中主機(jī)IP地址的權(quán)威DNS服務(wù)器主機(jī)名;
  • Type = CNAME,則Value是別名為Name的主機(jī)名對(duì)應(yīng)的規(guī)范主機(jī)名;
  • Type = MX,Value是個(gè)別名為Name的郵件服務(wù)器的規(guī)范主機(jī)名。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容