DNS 是一種用于 TCP/IP 應(yīng)用程序的分布式數(shù)據(jù)庫(kù),它提供主機(jī)名字和 IP 地址之間的轉(zhuǎn)換及有關(guān)電子郵件的選路信息稚字。DNS 提供了允許服務(wù)器和客戶(hù)端程序相互通信的協(xié)議雕崩。
從應(yīng)用的角度上看,對(duì) DNS 的訪(fǎng)問(wèn)是通過(guò)一個(gè)地址解析器來(lái)完成的狸吞,在 Unix 主機(jī)中勉耀,該解析器主要通過(guò)兩個(gè)庫(kù)函數(shù) gethostbyname(3) 和 gethostbyaddr(3) 來(lái)完成的指煎,前者接收主機(jī)名字返回 IP 地址,后者接收 IP 地址尋找主機(jī)名字便斥。
DNS 基礎(chǔ)
DNS 的名字空間具有層次結(jié)構(gòu)至壤,每個(gè)結(jié)點(diǎn)有一個(gè)至多63個(gè)字符長(zhǎng)的標(biāo)識(shí)。樹(shù)根是沒(méi)有任何標(biāo)識(shí)的特殊結(jié)點(diǎn)枢纠,命名標(biāo)識(shí)中一律不區(qū)分大寫(xiě)和小寫(xiě)像街。命名樹(shù)上任何一個(gè)結(jié)點(diǎn)的域名就是將從該結(jié)點(diǎn)到最高層的域名串聯(lián)起來(lái),中間使用 “.” 分隔這些域名京郑。
以 “.” 結(jié)尾的域名稱(chēng)為絕對(duì)域名或完全合格域名宅广,如果不完整的域名由兩個(gè)或兩個(gè)以上的標(biāo)號(hào)組成,則認(rèn)為他是完整的些举,或者在該域名的右邊加入一個(gè)局部后綴跟狱。
頂級(jí)域名被分為三個(gè)部分:
(1)arpa 是一個(gè)用作地址到名字轉(zhuǎn)換的特殊域。
(2)7個(gè)3字符長(zhǎng)的普通域户魏,有些書(shū)也將這些稱(chēng)為組織域驶臊。
(3)所有2字符長(zhǎng)的域是基于 ISO3166 中定義的國(guó)家代碼,這些域被稱(chēng)為國(guó)家域叼丑,或者地理域关翎。
普通域的劃分:
域 | 描述 |
---|---|
com | 商業(yè)組織 |
edu | 教育機(jī)構(gòu) |
gov | 其他美國(guó)政府部門(mén) |
int | 國(guó)際組織 |
mil | 美國(guó)軍事網(wǎng)點(diǎn) |
net | 網(wǎng)絡(luò) |
org | 其他組織 |
DNS 的一個(gè)基本特性是使用高速緩存。即當(dāng)一個(gè)名字服務(wù)器收到有關(guān)映射的信息時(shí)鸠信,他就會(huì)將該信息存放在高速緩存中纵寝。這樣若以后遇到相同的映射請(qǐng)求,就能直接使用緩存中的結(jié)果而無(wú)需通過(guò)其他服務(wù)器查詢(xún)星立。
DNS 的報(bào)文格式
DNS 定義了一個(gè)用于查詢(xún)和響應(yīng)的報(bào)文格式爽茴,由12字節(jié)長(zhǎng)的首部和四個(gè)長(zhǎng)度可變的字段組成。首部由標(biāo)識(shí)绰垂、標(biāo)志室奏、問(wèn)題數(shù)、資源記錄數(shù)劲装、授權(quán)資源記錄數(shù)胧沫、額外資源記錄數(shù)組成;可變字段包括查詢(xún)問(wèn)題占业、回答绒怨、授權(quán)、額外信息纺酸。
DNS查詢(xún)報(bào)文中的問(wèn)題部分
問(wèn)題部分包括查詢(xún)名窖逗、查詢(xún)類(lèi)型、查詢(xún)類(lèi)餐蔬。查詢(xún)名是要查找的名字碎紊,他是一個(gè)或多個(gè)標(biāo)識(shí)符的序列,最后以0結(jié)束樊诺;每個(gè)問(wèn)題有一個(gè)查詢(xún)類(lèi)型仗考,最常用的查詢(xún)類(lèi)型是 A 類(lèi)型,表示期望獲得查詢(xún)名的 IP 地址词爬;查詢(xún)類(lèi)通常是1秃嗜,指互聯(lián)網(wǎng)地址。DNS 響應(yīng)報(bào)文中的資源記錄部分
DNS 報(bào)文中最后的三個(gè)字段顿膨,回答字段锅锨、授權(quán)字段和附加信息字段,均采用一種稱(chēng)為資源記錄RR的相同格式恋沃。包含域名必搞、類(lèi)型、類(lèi)囊咏、生存時(shí)間恕洲、資源數(shù)據(jù)長(zhǎng)度、資源數(shù)據(jù)梅割。
資源記錄包含如下內(nèi)容:
域名:記錄中資源數(shù)據(jù)對(duì)應(yīng)的名字霜第;類(lèi)型:說(shuō)明 RR 的類(lèi)型碼;類(lèi)户辞;生存時(shí)間:客戶(hù)端保留該資源記錄的秒數(shù)泌类;資源數(shù)據(jù)長(zhǎng)度:資源數(shù)據(jù)的數(shù)量。
指針查詢(xún)
即給定一個(gè) IP 地址底燎,返回與該地址對(duì)應(yīng)的域名刃榨。
資源記錄
A:一個(gè) A 記錄定義了一個(gè) IP 地址,它存儲(chǔ)32 bit 的二進(jìn)制數(shù)书蚪。
PTR:指針記錄用于指針查詢(xún)喇澡。IP 地址被看作是 in-addr.arpa 域下的一個(gè)域名(標(biāo)識(shí)符串)。
CNAME:這表示 “規(guī)范名字”殊校。某些 FTP 服務(wù)器使用它向其他系統(tǒng)提供的別名晴玖。
HINFO:表示主機(jī)信息,包括說(shuō)明主機(jī) CPU 和操作系統(tǒng)的兩個(gè)字符串为流。并非所有的站點(diǎn)均提供他們系統(tǒng)的 HINFO 記錄呕屎,并且提供的信息也可能不是最新的。
MX:郵件交換記錄敬察。
NS:名字服務(wù)器記錄秀睛。它說(shuō)明一個(gè)域的授權(quán)名字服務(wù)器。