2.11.1DNS
1.DNS概述
使用IP地址来标识一台主机,但对于使用者来说,这种数字形式的地址很不方便记忆。TCP/IP协议族创建了一种ASCI码形式的主机命名形式,称为“域名(Domain Name)”。例如,新浪主页的域名为www.sina.com,其IP地址为59.175.132.126。显然,域名比IP地址更容易记忆。
在TCP/IP协议簇中,需要在域名和IP地址之间建立起一种映射关系,称为“域名映射”。在小型系统里面可以使用一个静态域名解析文件来保存这种映射关系,但是,在一个大规模的网络中,域名解析文件将变得非常庞大,而且域名的变更会非常频繁,因此,需要引入一种动态的域名解析方法,称为“DNS”。
DNS是一种分布式网络目录服务,主要用于域名与IP地址的相互转换。简单地说,DNS的工作方式如下:为了将一个域名映射到一个IP地址,应用程序调用一个被称为“解析器(Resolver)”的程序,将域名作为参数传递给该程序;解析器将域名封装到一个UDP包中,发送给本地域名服务器;域名服务器将域名映射为IP地址,将IP地址封装到另一个UDP包中,发回给解析器;解析器再将IP地址返回给调用者。有了这个IP地址,应用程序就可以与目的方建立一个TCP连接或发送一个UDP包。
DNS是基于客户端服务器模型设计的,整个域名系统以一个大的分布式数据库的方式工作。DNS使用UDP的53号端口进行通信。
2.域名解析原理
DNS为本地域名服务器,当用户访问一个网址,计算机就会提出域名解析请求,并发给本地域名服务器。本地域名服务器收到请求后,查询本地资源,如有记录则返回查询结果;如果资源较少会导致访问网址加载速度变慢,此时可以换一个DNS。
(1)客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
(2)当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该记录项,则本地的域名服务器就直接把查询的结果返回。
(3)如果本地的缓存中没有该记录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
(4)本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该记录,则返回相关的下级的域名服务器的地址。
(5)重复第(4)步,直到找到正确的记录。
(6)本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
让我们举一个例子来详细说明解析域名的过程。假设我们的客户机想要访问站点www.linejet.com,此客户本地的域名服务器是dns.company.com,一个根域名服务器是ns.inter.net,所要访问的网站的域名服务器是dns.linejet.com,则域名解析的过程如下所示:
(1)客户机发出请求解析域名www.linejet.com的报文。
(2)本地的域名服务器收到请求后,查询本地缓存,假设没有该记录,则本地域名服务器dns.company.com向根域名服务ns.inter.net发出请求解析域名www.linejet.com。
(3)根域名服务器ns.inter.net收到请求后查询本地记录得到如下结果:linejet.com NS dns.linejet.com(表示linejet.com域中的域名服务器为dns.linejet.com),同时给出dns.linejet.com的地址,并将结果返回给域名服务器dns.company.com。
(4)域名服务器dns.company.com收到回应后,再发出请求解析域名www.linejet.com的报文。
(5)域名服务器dns.linejet.com收到请求后,开始查询本地的记录,找到如下一条记录:www.linejet.com A 211.120.3.12(表示linejet.com域中域名服务器dns.linejet.com的IP地址为211.120.3.12),并将结果返回给客户本地域名服务器dns.company.com。
(6)客户本地域名服务器将返回的结果保存到本地缓存,同时将结果返回给客户机。
这样,就完成了一次域名解析过程。