DNS原理

1 什么是DNS

        Domain Name System,域名系统。因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53

2 DNS域名系统

        域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫"名字"而叫"域名"呢?这是因为在这种因特网的命名系统中使用了许多的"域(domain)",因此就出现了"域名"这个名词。"域名系统"明确地指明这种系统是应用在因特网中。
        我们都知道,IP地址是由32位的二进制数字组成的。用户与因特网上某台主机通信时,显然不愿意使用很难记忆的长达32位的二进制主机地址。即使是点分十进制IP地址也并不太容易记忆。相反,大家愿意使用比较容易记忆的主机名字。但是,机器在处理IP数据报时,并不是使用域名而是使用IP地址。这是因为IP地址长度固定,而域名的长度不固定,机器处理起来比较困难。
        因为因特网规模很大,所以整个因特网只使用一个域名服务器是不可行的。因此,早在1983年因特网开始采用层次树状结构的命名方法,并使用分布式的域名系统DNS。并采用客户服务器方式。DNS使大多数名字都在本地解析(resolve),仅有少量解析需要在因特网上通信,因此DNS系统的效率很高。由于DNS是分布式系统,即使单个计算机除了故障,也不会妨碍整个DNS系统的正常运行。
        域名到IP地址的解析是由分布在因特网上的许多域名服务器程序共同完成的。域名服务器程序在专设的结点上运行,而人们也常把运行域名服务器程序的机器称为域名服务器。
        域名到IP地址的解析过程的要点如下:当某一个应用需要把主机名解析为IP地址时,该应用进程就调用解析程序,并称为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用程序获得目的主机的IP地址后即可进行通信。
        若本地域名服务器不能回答该请求,则此域名服务器就暂时称为DNS的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。

3 DNS域名结构

        由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。
        从语法上讲,每一个域名都是有标号(label)序列组成,而各标号之间用点(小数点)隔开。
如下例子所示:
                                                                dns
        这是中央电视台用于手法电子邮件的计算机的域名,它由三个标号组成,其中标号com是顶级域名,标号cctv是二级域名,标号mail是三级域名。
        DNS规定,域名中的标号都有英文和数字组成,每一个标号不超过63个字符(为了记忆方便,一般不会超过12个字符),也不区分大小写字母。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的字符写在最右边。由多个标号组成的完整域名总共不超过255个字符。DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找域名的机制。
        域名只是逻辑概念,并不代表计算机所在的物理地点。据2006年12月统计,现在顶级域名TLD(Top Level Domain)已有265个,分为三大类:

  1. 国家顶级域名nTLD:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。
  2. 通用顶级域名gTLD:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
  3. 基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。
    注:目前全球有13台根服务器。

4 域名服务器

        如果采用上述的树状结构,每一个节点都采用一个域名服务器,这样会使得域名服务器的数量太多,使域名服务器系统的运行效率降低。所以在DNS中,采用划分区的方法来解决。
        一个服务器所负责管辖(或有权限)的范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机到域名IP地址的映射。

  • 顶级域名服务器:负责管理在该顶级域名服务器注册的一级域名。
  • 权限域名服务器:负责一个"区"的域名服务器。
  • 本地域名服务器:本地服务器不属于下图的域名服务器的层次结构,但是它对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。

5 域名解析过程

  1. 主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
  2. 本地域名服务器向根域名服务器的查询叫做迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
    小结:
  3. (1)递归查询: 一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机;
  4. (2)迭代查询(反复查询): 一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求;
  5. 用户访问www.baidu.com,向本地DNS请求百度的服务器地址。
  6. 本地域名服务器没有查到本地缓存的记录,请求根DNS服务器响应,根DNS服务器把请求的顶级域名服务器地址(com)告诉它,让它去找com解析。
  7. 本地域名服务器得到根域名服务器回应后,就去访问com,请求com进行解析,com服务器会把请求的一级域名服务器地址(baidu.com)告诉它,r让它去找baidu.com解析。
  8. 本地域名服务器得到一级域名服务响应后,就去访问baidu.com,请求baidu.com进行解析,baidu.com服务器会把自己的www主机地址,反馈给本地域名服务器,本地域名缓存之后,会把www.baidu.com及对应的ip地址反馈给客户机。
  9. 客户机根据得到的IP地址,直接访问www.baidu.com服务器。

6 特殊记录说明

6.1 什么是A记录?

        A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置域名的二级域名。

6.2 什么是NS记录?

        NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。
        DNS记录在不同的环境下需要特定的域名设置,相应地就会有不同的记录来表示和描述。比如说A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。记录(CNAME)也被称为规范名字。这种记录允许您将多个名字映射到同一台计算机。通过MX(Mail Exchange)记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操作控制所有的邮箱设置。
        而NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。我们在使用域名解析过程中,后台操作都会有域名管理这一项,尤其是我们选择了智能DNS解析的时候,在域名管理过程中经常会遇到NS相关的一些问题。如域名转入,以及记录解释里的添加、修改、删除等相关操作都会涉及到NS问题。
        我们知道DNS在网络中扮演的角色相当重要,其地位完全可以用举足轻重来形容。所以DNS的正常与否,直接影响到整个网络的正常运作,同时还涉及到相关安全问题。在这种情况下,安全起见,一般都会有多台服务器备用可供选择,在机器故障发生应急时使用。这些服务器组合在一起又叫服务器组,一个服务器组里至少包含两个服务器。

6.3 什么是CNAME记录?

        别名记录也被称为规范名字。这种记录允许将多个名字映射到同一台计算机。通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为"host.domain.com"(A记录)。它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。这两个别名的全称就是"www.domain.com"和"mail.domain.com"。实际上他们都指向"host.domain.com"。

6.4 什么是MX记录

        通过MX(Mail Exchange)记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操作控制所有的邮箱设置。

6.5 什么是PTR记录

        PTR (Pointer Record),指针记录,是电子邮件系统中的一种数据类型,被互联网标准文件RFC1035所定义。与其相对应的是A记录、地址记录。二者组成邮件交换记录。

  • A记录解析名字到地址,而PTR记录解析地址到名字。
  • 地址是指一个客户端的IP地址,名字是指一个客户的完全合格域名。

7 DNS相关命令

dig

[root@lixin ~]# dig www.baidu.com
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22543
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
 
;; QUESTION SECTION:
;www.baidu.com.                 IN      A
 
;; ANSWER SECTION:
www.baidu.com.          5       IN      A       119.75.218.70
www.baidu.com.          5       IN      A       119.75.217.109
 
;; Query time: 7 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Thu Apr 14 17:44:17 2016
;; MSG SIZE  rcvd: 63
 
[root@lixin ~]#
nslookup
[root@lixin ~]# nslookup www.baidu.com
Server:         10.0.0.2
Address:        10.0.0.2#53
 
Non-authoritative answer:
Name:   www.baidu.com
Address: 119.75.217.109
Name:   www.baidu.com
Address: 119.75.218.70
 
[root@lixin ~]#

host

[root@lixin ~]# host www.baidu.com
www.baidu.com has address 119.75.218.70
www.baidu.com has address 119.75.217.109
www.baidu.com is an alias for www.a.shifen.com.
www.baidu.com is an alias for www.a.shifen.com.
[root@lixin ~]#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值