域名系統(tǒng)時一種用于TCP/IP應(yīng)用的分布式數(shù)據(jù)庫莫换,提供主機名和IP地址之間的轉(zhuǎn)換,以及電子郵件的選路信息。單個站點不能擁有所有的信息理朋。每個站點保留自己的數(shù)據(jù)庫,并運行自己的服務(wù)器程序供其他客戶查詢查詢绿聘。
對DNS的訪問是通過地址解析器完成的嗽上,解析器主要通過兩個庫函數(shù):gethostbyname(3) 和 gethostbyaddr(3)來訪問。
解析器不像TCP/IP協(xié)議那樣是操作系統(tǒng)的內(nèi)核熄攘。
一個獨立管理的DNS子樹稱為一個區(qū)域兽愤。一個常見的區(qū)域是一個二級域。如noao.edu挪圾。許多二級域也將它們的區(qū)域劃分為更小的區(qū)域浅萧。
一旦一個區(qū)域的授權(quán)機構(gòu)被委派后,由它負責(zé)向該區(qū)域提供多個名字服務(wù)器哲思。當一個新系統(tǒng)加入到一個區(qū)域后洼畅,該區(qū)域的DNS管理者為該新系統(tǒng)申請一個域名和一個IP地址,并將它們加到名字服務(wù)器的數(shù)據(jù)庫中棚赔。
一個名字服務(wù)器負責(zé)一個或多個區(qū)域帝簇。一個區(qū)域管理者必須為該區(qū)域提供一個主名字服務(wù)器和至少一個輔助名字服務(wù)器徘郭。這兩個服務(wù)器是獨立亢余的,以應(yīng)付故障情況丧肴。
主残揉,輔名字服務(wù)器的主要區(qū)別在于主名字服務(wù)器從磁盤文件調(diào)取該區(qū)域的所有信息,而輔名字服務(wù)器從主服務(wù)器調(diào)入所有信息芋浮。(區(qū)域傳送)
當一個新主機加入一個區(qū)域后抱环,區(qū)域管理者把適當信息加入到運行在主名字服務(wù)器上的一個磁盤文件中,然后通知主名字服務(wù)器重新調(diào)入它的配置文件纸巷。輔名字服務(wù)器定時輪詢主名字服務(wù)器是否有新數(shù)據(jù)镇草。
當一個名字服務(wù)器沒有請求的信息時,它必須和其他的名字服務(wù)器聯(lián)系何暇。每個名字服務(wù)器必須知道如何與根名字服務(wù)器聯(lián)系陶夜,必須知道根名字服務(wù)器的IP地址。跟服務(wù)器則知道所有二級域中每個授權(quán)名字服務(wù)器的IP裆站。
DNS的另一個特性是高速緩存条辟,當一個名字服務(wù)器收到有關(guān)映射信息時,會將信息存放在高速緩存中宏胯,之后若遇到相同請求羽嫡,則可以直接用緩存中的結(jié)果而無需向其他服務(wù)器查詢。
DNS的報文格式
查詢問題部分的格式:
查詢名是要查找的名字肩袍,是一個或多個標識符的序列杭棵。
資源記錄部分的格式
域名是記錄中資源數(shù)據(jù)對應(yīng)的名字。
生存時間字段是客戶程序保留該資源記錄的秒數(shù)氛赐。
指針查詢
給定一個IP地址魂爪,返回與該IP地址對應(yīng)的域名。
高速緩存
高速緩存是為了減少internet上DNS的通信量艰管,由名字服務(wù)器維護的滓侍。
DNS名字服務(wù)器使用的熟知端口號無論對于UDP還是TCP都是53,所以DNS均支持UDP和TCP訪問牲芋。
當名字解析器發(fā)出一個查詢請求撩笆,返回響應(yīng)中的TC(刪減標志)比特被設(shè)置為1,表示響應(yīng)長度超過了512字節(jié)缸浦,只能返回前512個字節(jié)夕冲。遇到這樣的情況,名字解析器通常使用TCP重發(fā)原來的查詢請求裂逐。因為TCP能將數(shù)據(jù)流分為一些報文端歹鱼,所以它就能用多個報文段來傳送任意長度的用戶數(shù)據(jù)。同樣卜高,輔名字服務(wù)器向主名字服務(wù)器執(zhí)行的區(qū)域傳送也使用TCP醉冤,因為這里傳送的數(shù)據(jù)遠比一個查詢響應(yīng)大得多秩霍。
DNS服務(wù)器主要使用UDP,那么DNS查詢和響應(yīng)通常經(jīng)過廣域網(wǎng)蚁阳,分組丟失率和往返時間更大,無論是名字解析器還是名字服務(wù)器都要自己處理超時和重傳鸽照。