DNS协议——网络天下的地址簿
一、DNS 的特点
DNS做事用具有分布式、阶层式的特点。

环球有那么多的打算机,要让一台做事器记录所有的域名和IP的对应关系的数据库,那这台做事器肯定要炸了,因此人们想到了将这些弘大的数据库分布式地存储于不同的打算机中,让他们共同供应查询域名和IP的功能,目前环球共有13台根做事器,个中1台主根做事器,12台赞助根做事器;
同时为了方便管理这些域名,人们规定域名的命名采取分层的构造,即采取类似树状构造的命名办法。
在这颗倒状树中,每个节点有一个最多63个字符的标识,树的最顶真个根用 . 来标识,从最底部的节点到最顶部的根节点的标识串联起来,不同节点的标识之间也用 . 来分割,这样的一组就表示一个完全的域名(FQDN),例如“www.baidu.com.”,不过人们常日将末了的“. ”去掉,即“www.baidu.com”,这是不完全域名。
1.1 域名格式
. ---root
TLD---顶级域名(top-level domain)
com 商业机构org 其他组织edu 教诲机构... 等等SLD---次级域名(second-level domain)
用户可以注册SLD3onedatahost--主机名(三级域名)
用户可以任意分配www1.2 域名授权
DNS的一个主要特色便是域名授权,全体DNS系统中只有一个机构--网络信息中央NIC有权卖力顶级域名的分配和指派能够划分次级域名的授权机构。
一棵独立管理的DNS子树便是一个区域(zone),一个区域可以再划分更小的区域,
例如:
com.便是一个区域,com.下可以再划分baidu.com.子区域,一个区域被委派了授权机构之后,该机构须要搭建DNS做事器,记录该区域下的子域名和IP的对应关系,并且该授权机构可以再委派该区域下的子区域的DNS系统;
这样全体DNS构造会是这样的,根做事器记录授权的顶级域名的域名和IP的对应关系数据库,顶级域名做事器记录授权的次级域名的域名和IP的对应关系数据库,这样依次向下委派,就形成了阶梯式的管理构造,减轻了每个授权DNS做事器的负载。
1.3 DNS缓存
DNS的另一个特色便是建立缓存,当一个DNS做事器查询到域名和IP的映射关系后,会将该映射数据写入自己的缓存中,如果其他的主机再来讯问相同的映射关系时,直接读取自己的缓存,而不须要再去讯问其他做事器了。
1.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分段传输了。
二、DNS 的事情事理
DNS的解析过程中最主要的两个观点是递归查询和迭代查询,
当你在浏览器输入www.3onedata.com的时候,先查询浏览器的缓存中是否有域名和IP的映射关系,如果没有则查询本地hosts文件,然后查询客户端DNS缓存(如果存在客户端缓存的话),下一步是本地DNS做事器,检讨本地DNS做事器的hosts文件和DNS缓存;
如果还没有则下一步是ISP,ISP检讨缓存还是没有;则ISP向根做事器发起讯问要求,根做事器向ISP返回com.的IP地址,
ISP向com.发起讯问要求,com.向ISP返回3onedata.com.的IP,则ISP再想3onedata.com.发起讯问,
刚好3onedata.com.有www.3onedata.com.的IP,向ISP返回该IP地址,ISP得到www.3onedata.com的IP后,将IP返回本地DNS做事器,本地DNS做事器在返回给客户端。这样完玉成部流程。(此处有点繁芜,请细读一遍~)
DNS中的递归和迭代的主要差异是:递归是查询者变革,迭代是查询者不变。
三、反向解析
我们熟知的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和域名的映射关系。总之,反向解析的实质还是正向解析。
四、DNS 报文格式
上图是DNS的一样平常报文格式:
1、标识-----两个字节,是要求报文和应答报文的对应id,用来区分应答报文是哪个要求报文的相应;
2、标志-----进一步分为不同的字段,分别为
QR-----一位,0表示该报文为查询报文,1表示相应报文opcode-四位,操作码字段,0表示正向解析,1表示反向解析AA-----一位,授权回答,如果是相应报文设定,解释该相应是本域名的DNS做事器发出的TC-----一位,可截断,利用UDP时,如果相应报文的长度超过512字节,则只返回前512字节。RD-----一位,递归期望,1表示DNS做事器必须递归处理该要求报文RA-----一位,递归可用,在相应报文中设定,1表示该域名的DNS做事器支持递归查询zero---三位,保留字段,必须全为0rcode--四位,相应码,返回一些精确,格式缺点等信息问题数
资源记录数
授权资源记录数
额外资源记录数
-----以上字段分别表示末了那四个可变字段的统计记录条款数
上边的12个字节字段是DNS报文的包头部分
上图是查讯问题部分的字段格式:
查询名----表示要查询的域名
查询名是由持续串的序列组成的,例如www.3onedata.com.在报文中的表示办法为3www53onedata3com0,数字表示计数,由于域名树每个节点的字符数最多为63,以是数字的范围为0~63,末了都以0结尾,表示root;
查询类型--表示要查询什么样的记录,相应报文就返回什么类型的记录;常见的记录类型有:
A-----IP地址NS----name server,域名的DNS做事器CNAME-别名PRT---指针类型,用于反向解析MX----域名的邮件做事器查询类----常日为1,表示查询的是互联网类型,即我们常常在查询结果中看到的IN
上图表示的回答、授权、额外信息三个可变字段的一样平常格式,用于相应报文
域名-----指定相应的域名,存储格式和上边的一样类型-----指定记录类型类-------一样平常为1,表示互联网类型,即IN生存韶光-表示该记录可以再客户真个缓存中存放多长的韶光
资源数据长度-表示返回的记录的数据长度,例如A记录,则数据长度为4字节的IP地址长度
资源数据-表示详细的记录结