一篇文章让你了解DNS

目录数据库

  • 什么是DNS数组

  • DNS的特色浏览器

  • DNS的工做原理缓存

  • 反向解析服务器

  • DNS的报文格式网络


1、什么是DNS
dom

        DNS--Domain Name System,域名系统。分布式

        互联网中计算机之间进行通信,数据怎么走,走向哪里,这些都须要根据IP地址来指引,再如客户端访问服务器,客户端必须知道服务器的IP地址才能将数据正确地发送过去,这么重要的IP地址固然是必不可少的。咱们知道如今的IP地址都是由32位的二进制数组成的,为了便于人们记忆,出现了十进制的表示方法,如192.168.0.1,可是人们对数字的记忆太困难了,更况且未来的IPV6(128位)时代,要记忆这些IP地址根本是不可能的。因此出现了更便于人记忆的域名来替代IP的记忆,如www.baidu.com,计算机只须要将域名和IP转换,就能够经过域名来访问其余的计算机。其中域名和IP转换工做就是DNS完成的,因为DNS极其重要,因此DNS在计算机网络中拥有不可缺乏的地位。ide

        DNS本质是用于TCP/IP应用程序的数据库,该数据库中记录了域名和IP的对应关系,同时也是一种用于客户端和服务端通信的应用层的计算机网络协议。计算机要将域名解析成IP(或者将IP反解成域名),须要先去询问DNS服务器的数据库,查询获得域名和IP的对应关系,才能开始使用IP地址进行计算机通信。 spa

        目前提供DNS功能的经常使用软件为BIND, 该软件产生的服务名叫作named。         


2、DNS的特色

        DNS服务器具备分布式、阶层式的特色。

        全球有那么多的计算机,要让一台服务器记录全部的域名和IP的对应关系的数据库,那这台服务器确定要炸了,所以人们想到了将这些庞大的数据库分布式地存储于不一样的计算机中,让他们共同提供查询域名和IP的功能,目前全球共有13台根服务器,其中1台主根服务器,12台辅助根服务器

        同时为了方便管理这些域名,人们规定域名的命名采用分层的结构,即采用相似树状结构的命名方式。在这颗倒状树中,每一个节点有一个最多63个字符的标识,树的最顶端的根用 . 来标识,从最底部的节点到最顶部的根节点的标识串联起来,不一样节点的标识之间也用 . 来分割,这样的一组就表示一个完整的域名(FQDN),例如www.baidu.com.,不过人们一般将最后去掉,即www.baidu.com,这是不完整域名。

2.1 域名格式        

blob.png

        .  ---root

        TLD---顶级域名(top-level domain)

            com     商业机构

            org     其余组织

            edu     教育机构

            ...     等等

        SLD---次级域名(second-level domain)

            用户能够注册SLD

            baidu

        host--主机名(三级域名)

            用户能够任意分配

            www

2.2 域名受权

        DNS的一个重要特征就是域名受权,整个DNS系统中只有一个机构--网络信息中心NIC有权负责顶级域名的分配和指派可以划分次级域名的受权机构。

        一棵独立管理的DNS子树就是一个区域(zone),一个区域能够再划分更小的区域,例如com.就是一个区域,com.下能够再划分baidu.com.子区域,一个区域被委派了受权机构以后,该机构须要搭建DNS服务器,记录该区域下的子域名和IP的对应关系,而且该受权机构能够再委派该区域下的子区域的DNS系统,这样整个DNS结构会是这样的,根服务器记录受权的顶级域名的域名和IP的对应关系数据库,顶级域名服务器记录受权的次级域名的域名和IP的对应关系数据库,这样依次向下委派,就造成了阶梯式的管理结构,减轻了每一个受权DNS服务器的负载。

2.3 DNS缓存

        DNS的另外一个特征就是创建缓存,当一个DNS服务器查询到域名和IP的映射关系后,会将该映射数据写入本身的缓存中,若是其余的主机再来询问相同的映射关系时,直接读取本身的缓存,而不须要再去询问其余服务器了。

2.4 DNS的TCP和UDP

        咱们知道DNS是同时监听TCP和UDP的53号端口,那么DNS何时使用UDP,何时使用TCP呢?

        DNS在大部分状况下是使用UDP的,可是UDP可以传输的DNS报文最大是512字节,若是客户端在获得响应报文后得知该响应报文不止512字节的时候,客户端会从新使用TCP发送请求报文,DNS服务器使用TCP将大于512字节的报文分段传输,这是其中一种使用TCP的状况;

        另一种使用TCP的状况是,主从DNS服务器在进行数据库同步时,那么庞大的数据量,slave是怎么从master哪里更新的,固然使用的是TCP分段传输了。


3、DNS的工做原理

        DNS的解析过程当中最重要的两个概念是递归查询迭代查询

        当你在浏览器输入www.baidu.com的时候,先查询浏览器的缓存中是否有域名和IP的映射关系,若是没有则查询本地hosts文件,而后查询客户端DNS缓存(若是存在客户端缓存的话),下一步是本地DNS服务器,检查本地DNS服务器的hosts文件和DNS缓存,若是尚未则下一步是ISP,ISP检查缓存仍是没有;则ISP向根服务器发起询问请求,根服务器向ISP返回com.的IP地址,ISP向com.发起询问请求,com.向ISP返回baidu.com.的IP,则ISP再想baidu.com.发起询问,恰好baidu.com.有www.baidu.com.的IP,向ISP返回该IP地址,ISP获得www.baidu.com的IP后,将IP返回本地DNS服务器,本地DNS服务器在返回给客户端。这样完成整个流程。

blob.png

DNS中的递归和迭代的重要区别是:递归是查询者变化,迭代是查询者不变。


4、反向解析

        咱们熟知的DNS的由域名得到IP为正向解析,可是DNS也提供了由IP得到域名的反向解析。这里补充一点,在顶级域中,有一个特殊的域名arpa,它有惟一的一个子域in-addr,其实in-addr.arpa域名是为反向解析作准备的。当一个DNS系统得到域名受权以后,同时也会得到in-addr.arpa的受权,假如某域名的IP地址为192.168.138.1,在DNS域名树中会这样记录该IP,in-addr下划分了192子域名,192下划分了168子域名,168下划分了138子域名,138下记录了1的映射关系,因为DNS的完整域名是从底往上串联的,所以就成了1.138.168.192.in-addr.arpa.

        所以当客户端反向解析192.168.138.1的时候,其实就是正向解析1.138.168.192.in-addr.arpa.,而后就是正向解析的正常流程,最后会访问到标识为138的DNS服务器获取该IP和域名的映射关系。总之,反向解析的本质仍是正向解析。

blob.png


5、DNS的报文格式

blob.png

        上图是DNS的通常报文格式:

标识-----两个字节,是请求报文和应答报文的对应id,用来区分应答报文是哪一个请求报文的响应;

标志-----进一步分为不一样的字段,分别为

         QR-----一位,0表示该报文为查询报文,1表示响应报文

         opcode-四位,操做码字段,0表示正向解析,1表示反向解析

         AA-----一位,受权回答,若是是响应报文设定,说明该响应是本域名的DNS服务器发出的

         TC-----一位,可截断,使用UDP时,若是响应报文的长度超过512字节,则只返回前512字节。

         RD-----一位,递归指望,1表示DNS服务器必须递归处理该请求报文

         RA-----一位,递归可用,在响应报文中设定,1表示该域名的DNS服务器支持递归查询

         zero---三位,保留字段,必须全为0

         rcode--四位,响应码,返回一些正确,格式错误等信息

问题数

资源记录数

受权资源记录数

额外资源记录数

    -----以上字段分别表示最后那四个可变字段的统计记录条目数

上边的12个字节字段是DNS报文的包头部分

blob.png

        上图是查询问题部分的字段格式:

查询名----表示要查询的域名

          查询名是由一连串的序列组成的,例如www.baidu.com.在报文中的表示方式为3www5baidu3com0,数字表示计数,由于域名树每一个节点的字符数最多为63,因此数字的范围为0~63,最后都以0结尾,表示root;

查询类型--表示要查询什么样的记录,响应报文就返回什么类型的记录;常见的记录类型有:

          A-----IP地址

          NS----name server,域名的DNS服务器

          CNAME-别名

          PRT---指针类型,用于反向解析

          MX----域名的邮件服务器

查询类----一般为1,表示查询的是互联网类型,即咱们常常在查询结果中看到的IN

blob.png

        上图表示的回答、受权、额外信息三个可变字段的通常格式,用于响应报文

域名-----指定响应的域名,存储格式和上边的同样

类型-----指定记录类型

类-------通常为1,表示互联网类型,即IN

生存时间-表示该记录能够再客户端的缓存中存放多长的时间

资源数据长度-表示返回的记录的数据长度,例如A记录,则数据长度为4字节的IP地址长度

资源数据-表示具体的记录结果

相关文章
相关标签/搜索