域名系统(DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名(如 www.cskaoyan.com)转换为便于机器处理的 IP 地址。DNS 系统采用 C/S 模型,其协议运行在 UDP 之上,使用 53 号端口。
从概念上,可将 DNS 分为 3 部分:层次域名空间、域名服务器和解析器。
层次域名空间
因特网采用层次树状结构的命名方法。采用这种命名方法,任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,即域名。域是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等。每个域名都由标号序列组成,而各标号之间用点(“.”)隔开。级别最低的域名写在最左边,级别最高的顶级域名写在最右边。
域名服务器
因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模型。域名到 IP 地址的解析是由运行在域名服务器上的程序完成的,一个服务器所管辖的范围称为区。
根域名服务器
根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的 IP 地址。本地域名服务器自己无法解析域名时,会首先求助于根域名服务器。根域名服务器用来管辖顶级域(如.com),通常它并不直接把待查询的域名直接转换成 IP 地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询。
顶级域名服务器
顶级域名服务器负责管理在该顶级域名服务器注册的所有二级域名。收到 DNS 查询请求时,就给出相应的回答(可能是最后结果,也可能是下一步应当查找的域名服务器的 IP 地址)。
授权域名服务器(权限域名服务器)
每台主机都必须在授权域名服务器处登记。许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转换为该主机的 IP 地址。
本地域名服务器
每个因特网服务提供者(ISP),或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。当一台主机发出 DNS 查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。
域名解析过程
域名解析是指把域名映射成为 IP 地址或把 IP 地址映射成域名的过程。前者称为正向解析,后者称为反向解析。当客户端需要域名解析时,通过本机的 DNS 客户端构造一个 DNS 请求报文,以 UDP 数据报方式发往本地域名服务器。
域名解析有两种方式:递归查询(比较少用)和递归与迭代相结合的查询。
主机向本地域名服务器的查询采用的是递归查询,即如果本地主机所询问的本地服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向根域名服务器继续发出请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。
本地域名服务器向根域名服务器的查询采用迭代查询,当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器,“你下一步应该想哪一个顶级域名服务器进行查询”。
- 为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。当一个DNS服务器接收到DNS结果时,它能将该DNS信息缓存在高速缓存中。
- 主机名和IP地址之间的映射不是永久的,所以DNS服务器在一段时间后丢弃高速缓存中的信息。