DNS(域名系统),是一种进行网络资源名到IP地址转换的网络应用,它是由应用程序而不是用户直接使用的应用程序(例如,通常由HTTP、SMTP和FTP等协议调用),因此位于应用层。
一.DNS的工作原理
1.例如,当某用户主机上的一个浏览器使用HTTP请求www.plaust.edu.cn页面时,解析过程如图所示:
① 用户主机浏览器请求www.plaust.edu.cn
② 用户主机用UDP的53端口将该web服务器名字发送给DNS域名解服务器进行解析。
③ 域名服务器将www.plaust.edu.cn对应IP地址58.193.152.3通过UDP的53端口返回给用户主机。
④ 用户主机将HTTP请求报文发送到IP地址为58.193.152.3的web服务器的80端口。
⑤ web服务器将对应页面发送给用户主机。
2. ★ DNS采用分布式的的设计方案。分布式方案不仅改善了DNS的可靠性,而且使IP地址能够缓存在 一个附近的DNS服务器中,有助于减少DNS的网络流量和DNS的平均时延。
★ DNS运行划分为多个层,每层均客户/服务器方式工作,从而形成一个联机分布式数据库系统。
★ DNS在本地域名服务器中进行大多数名字解析,仅少量解析需要通过更高级域名服务器完成。
★ DNS服务器通常是运行BIND软件的类UNIX服务器。
★ DNS协议运行在UDP上,使用53号周知端口。
3. 域名系统的工作过程:
① 若某应用进程请求将主机名解析为IP地址,则该应用进程将带解析的域名放入DNS请求报文,以UDP报文段方式发给本地域名服务器。
② 本地域名服务器在查找域名映射对后,把对应的ip地址放在应答报文中运回;应用进程获得目的主机的IP地址后即可进行通信。
③ 若本地域名服务器找不到相关信息,则此域名服务器就会成为DNS中的一台客户机,并向其上级域名服务器提出查询请求(具体见下三)。
二.域名的层次结构
1.域名层次结构:
① 顶级域名:国家代码标识某个国家(如cn、uk等);国际性组织在int下;其他七个(com、net、org、edu、gov、mil、arpa)。
② 二级域名:由各个国家自行确定。我国将二级域名划分为类别域名(ac、com、edu、gov、net、org工6个)和行政区域名(34个,如bj、js等)。
③ 三级域名:二级域名下注册的公司、单位等。
④ 四级域名:三级域名划分的子域名。
2.域名服务器:
① 根域名服务器:因特网上共13个,标号为A到M。尽管这13个根服务器中的每个都视为独立的服务器,但每台“服务器”实际上都是冗余服务器的集群。
② 顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名。
③ 权威域名服务器: 为本组织的服务器(如Web和电子邮件)提供映射,通常有基本、辅助(备份)服务器。
④本地域名服务器: 又叫默认域名服务器。
3.域名管辖区:
因特网允许将各域名划分为若干个区,各个区对应于负责层次结构中某一部分的某个可管理的权威实体。区是域的子集,每个区都可以有一个权威域名服务器,而用户主机直接指向的域名服务器称为本地域名服务器。例如:哥伦比亚大学有CS和EE两个系,其下分别有三个部门。关系如下图:
三.域名服务器的解析过程:
假如李军主机lijun.plaust.edu.cn想知道用户张红的主机zhanghong.columbia.edu的ip地址,plaust的本地DNS服务器为dns.plaust.edu.cn,哥伦比亚大学的权威DNS为dns.columbia.edu。解析过程如下:
① 主机lijun.plaust.edu.cn向本地服务器dns.plaust.edu.cn发送DNS查询报文。
② 本地DNS服务器无法解析而将该报文转发到根DNS服务器。
③ 根DNS服务器向本地DNS服务器返回负责edu的顶级域名的IP列表。
④ 本地DNS服务器向这些顶级域名服务器发送查询报文。
⑤ 顶级域名服务器注意到columbia.edu前缀,用相应的权威DNS服务器的IP地址进行相应,该权威DNS服务器负责dns.columbia.edu。
⑥ 本地DNS服务器直接向dns.columbia.edu重发查询报文。
⑦ dns.columbia.edu找到zhanghong的ip地址并进行响应。
★ 主机----→本地DNS服务器 (递归)
本地DNS服务器-----→其他DNS服务器(迭代)