2.6 DNS的客户端
在Linux中,DNS是由BIND(Berkeley Internet Name Domain,伯克莱网间域名)软件实现的。BIND是一个c/s系统。
1.客户端产生对IP与主机名解析的需求
DNS的客户端部分被叫作转换程序(resolver),负责产生域名查询信息,即向域名服务器获得域名解析/反解析服务,将这类信息发送给服务器端。转换程序的功能是内嵌一些程序,需要通过它调用解析库。转换程序在功能上是在标准的C语言库中执行。
2.客户端将无法自行解释的需求,通过53端口送给指定的DNS服务器
DNS客户端和服务器端在大多数情况中使用UDP包通信。UDP通信是迅速的,但包的大小不能比512bytes大。希望DNS查询或者服务器响应超过512bytes,包必须使用减慢的Tcp协议发送。
3.DNS客户端功能上内嵌一些程序
转换程序库使用两个配置文件:/etc/host.conf和/etc/resolv.conf。 host.conf被主要用于指出DNS和hosts文件的原始信息。/etc/resole.conf用于配置搜索行为,指出使用什么名称的服务器并且不管任何一个域被假设为非完全合格域名。
4.返回来的数据也许并不权威
如果域名服务器响应一个查询是有查询执行权威的,那么数据返回的是权威的,也有可能,询问可能从域名服务器的响应缓存而来,这种情况中响应是非权威的。DNS客户端可以或者不可以选择去访问非权威信息。
BIND版本9介绍一个选择的名称解析新方法使用lwresd,轻量级的解析域。这也不太广泛使用和在这儿不详述。
在Linux系统上,客户端一般先检索本地文件/etc/hosts,如果无法得到解析,则根据/etc/resolv.conf决定查询域名服务器。然后送出请求。这个顺序可以在/etc/nsswitch.conf文件设置中更改。