(14)DNS:域名系统
一、简介
域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,他提供主机名字和IP地址间的转换及有关电子邮件的选路信息。从应用角度上看,DNS的访问是通过一个地址解析器(resolver)来完成的。在Unix主机中,该解析器主要通过库函数gethostbyname和gethostbyaddr来访问。前者接收主机名返回IP地址,后者接收IP地址来寻找主机名。解析器通过一个活多个名字服务器完成这种相互转换。
二、DNS基础
DNS层次组织如下所示:
感觉就像是维护一个trial树一样,命名标识中一律不区分大小写。
每个名字服务器必须知道如何同根的名字服务器联系。DNS的一个基本特性是使用超高速缓存。
三、DNS报文格式
DNS报文格式如下所示:
四、指针查询
DNS中的指针查询方式,即给定一个IP第一,返回与该地址对应的域名。DNS树中通过独立的分支arpa下的in-addr域来处理这种地址名字的转换。
五、高速缓存
为了减少Internet上DNS的通信量,所有的名字服务器均使用高速缓存。
六、用UDP还是用TCP
DNS名字服务器使用的熟知端口号无论对UDP还是TCP都是53。这意味着DNS均支持TCP和UDP访问。
当名字解析器发送一个查询请求,而响应长度超过512字节时,使用TCP重发原来的查询请求。传送大量数据时也使用TCP。
DNS主要还是使用UDP的,无论是名字解析器还是名字服务器都必须自己处理超时和重传。DNS查询和响应通常需经过广域网,分组丢失率和往返时间的不确定性相对局域网更大。
另外通过P57页的例子可以对DNS特性做一个综合性的回顾。