1.什么是DNS?是为了解决什么问题而存在的
2.DNS解析原理<递归查询,迭代查询>
DNS概述及作用
DNS(Domain Name System)域名系统它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
IP地址的长度是固定的32位(IPv6是128位),而域名的长度不是固定的,机器处理比较困难,而对于人,二进制或者十进制的IP地址并不容易进行记忆,更何况还有主机名.而域名系统DNS能够把互联网上的主机名字转换为IP地址.
域名
互联网采用的是层次树状结构的命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name),”域”是名字空间中一个可被管理的划分,域还可以分为子域,子域还可以继续划分为子域的子域,这样就形成了顶级域,二级域,三级域等等..
域名
域名由标号序列组成,用点隔开
- 每一个标号由英文字母和数字组成,不超过63个字符(最好不要超过12)
- 不区分大小写
- 多个标号组成的完整域名总共不超过255个字符
- 级别低的在最左边,高的在右边
域名解析的过程
域名到IP地址的解析过程的要点如下:当某一个应用需要把主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用程序获得目的主机的IP地址后即可进行通信。
若本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS的另一个客户,并向其他域名服务器发出查询请求
一、主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
二、本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
重点
- 使用UPD查询报文
- 递归查询与迭代查询
- 为了提高查询效率,使用高速缓存(高速缓存服务器,主机,操作系统,浏览器等),用来存放最近查询过的域名以及从何处获得域名映射信息的记录.
- 合理的设置缓存时间,确保域名的准确性
实例
举一个例子,zh.wikipedia.org作为一个域名就和IP地址208.80.154.225相对应。DNS就像是一个自动的电话号码簿,我们可以直接拨打wikipedia的名字来代替电话号码(IP地址)。DNS在我们直接调用网站的名字以后就会将像zh.wikipedia.org一样便于人类使用的名字转化成像208.80.154.225一样便于机器识别的IP地址。
DNS查询有两种方式:递归和迭代。DNS客户端设置使用的DNS服务器一般都是递归服务器,它负责全权处理客户端的DNS查询请求,直到返回最终结果。而DNS服务器之间一般采用迭代查询方式。
以查询zh.wikipedia.org为例:
- 客户端发送查询报文"query zh.wikipedia.org"至DNS服务器,DNS服务器首先检查自身缓存,如果存在记录则直接返回结果。
- 如果记录老化或不存在,则
- DNS服务器向根域名服务器发送查询报文"query zh.wikipedia.org",根域名服务器返回.org域的权威域名服务器地址,这一级首先会返回的是顶级域名的权威域名服务器。
- DNS服务器向.org域的权威域名服务器发送查询报文"query zh.wikipedia.org",得到.wikipedia.org域的权威域名服务器地址。
- DNS服务器向.wikipedia.org域的权威域名服务器发送查询报文"query zh.wikipedia.org",得到主机zh的A记录,存入自身缓存并返回给客户端。
注:本文章摘自计算机网络(第七版 谢希仁),维基百科,只是用于学习记录.
网友评论