域名的概念與機(jī)制2
2.6.1. RR的文本表示RR在DNS中是以二進(jìn)制形式表示的,而在名字服務(wù)器或resolver中保存的時(shí)是經(jīng)過(guò)壓縮編碼處理的。本文中我們采用相同于主文件中表示的表示方法,也就是不壓縮的方法,以便顯示
2.6.1. RR的文本表示RR在DNS中是以二進(jìn)制形式表示的,而在名字服務(wù)器或resolver中保存的時(shí)是經(jīng)過(guò)壓縮編碼處理的。本文中我們采用相同于主文件中表示的表示方法,也就是不壓縮的方法,以便顯示RR的內(nèi)容。行開(kāi)始時(shí)給出誰(shuí)擁有RR,如果這一位置空出,就表示本行RR的擁有者和上面RR的擁有者是一個(gè)。其后是TTL,type和RR的class。RR的RDATA部分是在當(dāng)前數(shù)據(jù)的表示類型的基礎(chǔ)上得到的。下面是一些RR的例子:其中我們注意到MX那一部分,它的RDATA部分有是一個(gè)16位數(shù)后面跟一個(gè)域名組成。其它的也就不說(shuō)了。本例子顯示了6個(gè)RR,第三個(gè)域名有兩個(gè)RR。下面是一個(gè)例子,它顯示在不同的class下如何表示:2.6.2. 別名和統(tǒng)一命名現(xiàn)存的系統(tǒng)中有時(shí)會(huì)對(duì)相同的資源有不同的命名,不但主機(jī)是這樣,郵箱也是這樣,不同的名字指向的是同一個(gè)位置。大部分系統(tǒng)都能夠?qū)Χ鄠€(gè)名字指定一個(gè)是統(tǒng)一命名的結(jié)果,另外的是別名。域名系統(tǒng)提供使用統(tǒng)一命名的機(jī)制(CNAME RR),CNAME RR標(biāo)記它的owner名為別名,并指出在RDATA部分的相應(yīng)統(tǒng)一命名。如果一個(gè)結(jié)點(diǎn)存在CNAME RR,不應(yīng)該有其它的數(shù)據(jù),這保證了統(tǒng)一命名和它的別名不能不同。這也使得緩沖的CNAME可以不用檢索認(rèn)證權(quán)威服務(wù)器就可以提供服務(wù)。在有CNAME RR時(shí),DNS軟件如果查詢不到與域名相關(guān)的資源,它會(huì)檢查資源集中是不是有一個(gè)有匹配class的CNAME,如果有,名字服務(wù)器返回的應(yīng)答中包括這個(gè)CNAME記錄,并根據(jù)在CNAME中指定的數(shù)據(jù)開(kāi)始新的查詢。下面我們看一個(gè)例子,假設(shè)名字服務(wù)器處理對(duì)USC-ISIC.ARPA的查詢,它要求查詢A信息,下面是RR的內(nèi)容:這兩個(gè)RR都作為響應(yīng)返回,而只查詢CNAME的*查詢則只返回CNAME。RR中指向其它名字的域名應(yīng)該指向主名而不是別名,這就避免了查詢中過(guò)多的轉(zhuǎn)向查詢。例如,對(duì)于上面的RR,它的IN-ADDR.ARPA記錄應(yīng)該是:最后指向的是C.ISI.EDU,而不是USC-ISIC.ARPA,當(dāng)然一個(gè)健壯的域名軟件不會(huì)因?yàn)樘峁┝搜h(huán)的CNAME而失敗。2.7. 查詢查詢就是發(fā)向名字服務(wù)器要求響應(yīng)的一個(gè)請(qǐng)求。在Internet上,這種請(qǐng)求以UDP或TCP傳輸,名字服務(wù)器的響應(yīng)可以是查詢結(jié)果,或是另一個(gè)名字名字器地址,要么就是一個(gè)錯(cuò)誤信息。通常用戶并不直接發(fā)送請(qǐng)求,而是向resolver發(fā)送請(qǐng)求,由resolver依次將一個(gè)或多個(gè)請(qǐng)求發(fā)向名字服務(wù)器,并負(fù)責(zé)處理錯(cuò)誤情況。請(qǐng)求和響應(yīng)有標(biāo)準(zhǔn)格式,它們包括一個(gè)頭和數(shù)個(gè)固定的域,然后是包括查詢參數(shù)和RR的四個(gè)部分。頭中最重要的域是稱為操作符的東西,它指出要進(jìn)行什么操作。在所有可能的16個(gè)值中,標(biāo)準(zhǔn)查詢是必須的,反向查詢和狀態(tài)查詢是可選的,有一個(gè)完全查詢已經(jīng)過(guò)時(shí),其它的還未