域名系统( DNS, Domain Name System)是一种用于 TCP/IP 应用程序的分布式数据库,提供域名与 IP 地址之间的转换。通过域名系统,用户进行某些应用时,可以直接使用便于记忆的、有意义的域名,而由网络中的 DNS 服务器将域名解析为正确的 IP 地址。
说明:
·域名解析分为静态域名解析和动态域名解析。在解析域名时,首先采用静态域名解析,如果静
态域名解析不成功,再采用动态域名解析。
·设备支持配置动态域名解析,因此本章仅介绍动态域名解析的原理。
1.1.1 动态域名解析
1. 解析过程
动态域名解析是通过对 DNS 服务器的查询完成的。解析过程如下:
(1) 当用户使用域名进行某些应用时,用户程序首先向 DNS 客户端中的解析器发出请求。
(2) DNS 客户端收到请求后,首先查询本地的域名缓存。如果存在已解析成功的映射项,就将域名对应的 IP 地址返回给用户程序;如果没有发现所要查找的映射项,就向 DNS 服务器发送查询请求。
(3) 域名服务器首先从自己的数据库中查找域名对应的 IP 地址。如果判断该域名不属于本域范围之内,就将请求交给上一级的域名解析服务器处理,直到完成解析,并将解析的结果返回给DNS 客户端。
(4) DNS 客户端收到域名服务器的响应报文后,将解析结果返回给应用程序。
用户程序、 DNS客户端及DNS服务器的关系如 图 1-1 所示,其中解析器和缓存构成DNS客户端。
用户程序、 DNS客户端在同一台设备上,而DNS客户端和服务器一般分布在两台设备上。
动态域名解析支持缓存功能。每次动态解析成功的域名与 IP 地址的映射均存放在动态域名缓存区中,当下一次查询相同域名的时候,就可以直接从缓存区中读取,不用再向域名服务器进行请求。
缓存区中的映射在一段时间后会被老化删除,以保证及时从域名服务器得到最新的内容。老化时间由域名服务器设置, DNS 客户端从协议报文中获得老化时间。
2. 域名后缀列表功能
动态域名解析支持域名后缀列表功能。用户可以预先设置一些域名后缀,在域名解析的时候,用户只需要输入域名的部分字段,系统会自动将输入的域名加上不同的后缀进行解析。举例说明,用户想查询域名 aabbcc.com,那么可以先在后缀列表中配置 com,然后输入 aabbcc 进行查询,系统会自动将输入的域名与后缀连接成 aabbcc.com 进行查询。
使用域名后缀的时候,根据用户输入域名方式的不同,查询方式分成以下几种情况:
·如果用户输入的域名中没有“.”,比如 aabbcc,系统认为这是一个主机名,会首先加上域名后缀进行查询,如果所有加后缀的域名查询都失败,将使用最初输入的域名(如 aabbcc)进行查询。
·如果用户输入的域名中间有“.”,比如 www.aabbcc,系统直接用它进行查询,如果查询失败,再依次加上各个域名后缀进行查询。
·如果用户输入的域名最后有“.”,比如 aabbcc.com.,表示不需要进行域名后缀添加,系统直接用输入的域名进行查询,不论成功与否都直接返回。就是说,如果用户输入的字符中最后一个字符为“.”,就只根据用户输入的字符进行查找,而不会去匹配用户预先设置的域名后缀,因此最后这个“.”,也被称为查找终止符。带有查询终止符的域名,称为绝对域名或完全合格的域名 FQDN( Full Qualified Domain Name)。
目前,设备支持静态域名解析和动态域名解析的客户端功能。
说明:
如果域名服务器上配置了域名的别名,设备可以通过别名来解析主机的 IP 地址。
DNS 代理
1. DNS 代理简介
DNS 代理( DNS proxy)用来在 DNS 客户端和 DNS 服务器之间转发 DNS 请求和应答报文,代替DNS 客户端进行域名解析。
局域网内的 DNS 客户端把 DNS 代理当作 DNS 服务器,将 DNS 请求报文发送给 DNS 代理。 DNS代理将该请求报文转发到真正的 DNS 服务器,并将 DNS 服务器的应答报文返回给 DNS 客户端,从而实现域名解析。
使用 DNS 代理功能后,当 DNS 服务器的地址发生变化时,只需改变 DNS 代理上的配置,无需改变局域网内每个 DNS 客户端的配置,从而简化了网络管理。
DNS代理的典型应用环境如 图 1-2 所示。
2. DNS 代理的工作机制
DNS 代理的工作过程如下:
(1) DNS 客户端把 DNS 代理当作 DNS 服务器,将 DNS 请求报文发送给 DNS 代理,即请求报文的目的地址为 DNS 代理的 IP 地址。
(2) DNS 代理收到请求报文后,首先查找本地的域名解析表,如果存在请求的信息,则 DNS 代理直接通过 DNS 应答报文将域名解析结果返回给 DNS 客户端。
(3) 如果不存在请求的信息,则 DNS 代理将报文转发给 DNS 服务器,通过 DNS 服务器进行域名解析。
(4) DNS 代理收到 DNS 服务器的应答报文后,将报文转发给 DNS 客户端。 DNS 客户端利用域名解析的结果进行相应的处理。