1.简介
(1).为什么需要DNS解析域名为IP地址?
网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能识别域名。
我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,
这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。
(2).什么是DNS?
DNS(Domain Name System:域名系统)是一种组织成域层次结构的计算机和网络服务命名系统。
它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。你可以把它想象成一本巨大的电话本。
DNS使用TCP和UDP端口53,当前对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
2.DNS域名空间结构
域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名。
DNS数据库中的名称形成一个分层树状结构称为域命名空间。
根域:DNS域名使用中规定由尾部句点'.'来指定名称位于根或者更高层次的域层次结构。
顶级域:用来指示某个国家、地区或者组织。采用三个字符,如com -> 商业公司,edu -> 教育机构,net -> 网络公司,gov -> 非军事政府机构等等。
二级域:个人或者组织在Internet使用的注册名称。采用两个字符,如:cn -> 代表中国,jp -> 日本,uk -> 英国,hk -> 香港等等。
三级域/主机:主机名处于域名空间结构中的最底层,主机名和域名结合构成FQDN,主机名是FQDN最左端的部分。
3.DNS工作原理
在linux下,你可以通过命令dig来显示DNS的查询过程。大致流程如下:
本地的hosts文件 --> 本地DNS解析器缓 --> 本地DNS服务器 --> 本地DNS服务器缓存 --> 根转发/DNS转发
1.在浏览器中输入www.baidu.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个ip地址映射,完成域名解析。
2.如果hosts里没有这个域名的映射,则会查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3.如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析记过给客户端,完成域名解析,此解析具有权威性。
4.如果要查询域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5.如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询.
5.1 如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。
本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(baidu.com)给本地DNS服务器。
当本地DNS服务器收到这个地址后,就会找baidu.com域服务器,重复上面的动作,进行查询,直至找到www.baidu.com主机。
5.2 如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把请求转至上上级,以此循环。
6.不管是本地DNS服务器用是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
递归查询与迭代查询:
客户端到本地DNS服务器是属于递归查询,而DNS服务器之间的交互查询就是迭代查询
递归:只发送一次请求,得到准确结果(消耗资源);
在该模式下DNS服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机,如果DNS服务器本地没有存储的DNS信息,
那么该服务器就会询问其他服务器,并将返回的查询结果交给客户机。
迭代:发送多次请求,得到参考结果;
当客户机发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉客户机另一台DNS服务器地址,
客户机再向这台DNS服务器提供请求,依次循环直到查询到结果为止,
当我们输入一个URL之后,究竟发生了些什么?
1.浏览器向DNS服务器查找输入URL对应的IP地址。
2.DNS服务器返回网站的IP地址。
3.浏览器根据IP地址与目标web服务器在80端口上建立TCP连接。
4.浏览器获取请求页面的HTML页码。
5.浏览器在显示窗口渲染HTML。
6.窗口关闭时,浏览器终止与服务器的连接。
4.DNS资源记录
资源记录(resoursr record,简写RR)
域名和IP之间的对应关系,称为“记录”。根据使用的目的不同,又分为不同的类型,常见的DNS记录类型如下:
A: 地址记录;后面记录得对应ipv4地址,基本作用就是说明一个域名对应的IP,FQDN-->IP
AAAA: 地址记录;后面记录对应ipv6地址,FQDN-->IPV6
PTR: 指针记录(pointTER);是A记录的逆向记录,作用是把IP地址解析为域名,IP-->FQDN
SOA: 起始授权记录(start of authority);说明了在众多NS记录里哪一台才是主服务器,而且必须为解析库的第一条记录;
NS: 域名服务器记录(Name Server),用于说明这个区域有哪些DNS服务器负责解析,该记录只能设置为域名,不能设置为IP地址。
CNAME: 规范名称记录(Canonical Name),又叫别名记录,返回另一个域名,即当前查询的域名是另一个域名的跳转;
MX: 邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。