2.6 DNS的客戶端
在Linux中,DNS是由BIND(Berkeley Internet Name Domain,伯克萊網(wǎng)間域名)軟件實現(xiàn)的。BIND是一個c/s系統(tǒng)。
1.客戶端產(chǎn)生對IP與主機名解析的需求
DNS的客戶端部分被叫作轉(zhuǎn)換程序(resolver),負責產(chǎn)生域名查詢信息,即向域名服務器獲得域名解析/反解析服務,將這類信息發(fā)送給服務器端。轉(zhuǎn)換程序的功能是內(nèi)嵌一些程序,需要通過它調(diào)用解析庫。轉(zhuǎn)換程序在功能上是在標準的C語言庫中執(zhí)行。
2.客戶端將無法自行解釋的需求,通過53端口送給指定的DNS服務器
DNS客戶端和服務器端在大多數(shù)情況中使用UDP包通信。UDP通信是迅速的,但包的大小不能比512bytes大。希望DNS查詢或者服務器響應超過512bytes,包必須使用減慢的Tcp協(xié)議發(fā)送。
3.DNS客戶端功能上內(nèi)嵌一些程序
轉(zhuǎn)換程序庫使用兩個配置文件:/etc/host.conf和/etc/resolv.conf。 host.conf被主要用于指出DNS和hosts文件的原始信息。/etc/resole.conf用于配置搜索行為,指出使用什么名稱的服務器并且不管任何一個域被假設為非完全合格域名。
4.返回來的數(shù)據(jù)也許并不權(quán)威
如果域名服務器響應一個查詢是有查詢執(zhí)行權(quán)威的,那么數(shù)據(jù)返回的是權(quán)威的,也有可能,詢問可能從域名服務器的響應緩存而來,這種情況中響應是非權(quán)威的。DNS客戶端可以或者不可以選擇去訪問非權(quán)威信息。
BIND版本9介紹一個選擇的名稱解析新方法使用lwresd,輕量級的解析域。這也不太廣泛使用和在這兒不詳述。
在Linux系統(tǒng)上,客戶端一般先檢索本地文件/etc/hosts,如果無法得到解析,則根據(jù)/etc/resolv.conf決定查詢域名服務器。然后送出請求。這個順序可以在/etc/nsswitch.conf文件設置中更改。