DNS域名解析浅析
为什么需要DNS解析域名为IP地址?
网络中通讯大部分使用的都是TCP/IP的,也就是基于IP地址的,因此网络通讯中必须将域名转换成IP地址才能在网络中使用,但是IP地址记起来相对复杂,因此更易理解的域名来代替服务器,那么就需要一种机制来讲域名解析为IP地址、然后在访问服务器。
什么是DNS?
DNS是域名系统的英文缩写,是一种组织成域层次结构的计算机和网络服务器命名系统,它用于TCP/IP网络,提供的服务是将主机名和域名解析为IP地址。
DNS的过程?
- 用户主机运行着DNS的客户端。
- 浏览器将收到的URL中抽取出域名字段、例如:http://www.baidu.com,将这个主机名传送给DNS应用的客户端。
- DNS客户端向DNS服务器发送一份查询报文,报文中包含要访问的主机名字段(中间包括一系列的缓存查询以及分布式DNS集群的工作)。(DNS请求和回答使用的是UDP的数据报经过53端口发送的)
- 该DNS客户机最终会收到一份回答报文,其中包括该主机名对应的IP地址。
- 一旦该浏览器收到来自DNS的IP地址,就向该IP地址定位的HTTP服务器发其TCP连接。
DNS服务的体系架构是怎样的?
单点的集中式设计方式的缺陷
DNS的一种简单的设计模式就是在因特网上只使用一个DNS服务器,该服务器包含所有的映射,在这种集中式的设计中,客户机直接将所有的查询请求发往单一的DNS服务器,同时该服务器直接对所有查询客户机做出响应,这种设计看似诱人,但是不适合当前的互联网,因为当今的因特网有着数量巨大并持续增长的主机,这种集中式设计会出现单点故障,通信容量、维护开销大、远距离的时间延迟等问题
DNS采用分布式集群的方式工作,一般分为三种:根DNS服务器,顶级DNS服务器,权威的DNS服务器。
使用分布式的层次数据库模式以及缓冲方式来解决单点集中式的问题。
DNS域名称空间的组织形式
按照其功能命名空间中用来来描述DNS域名称的五个类别的介绍见下表,
名称类型 | 说明 | 实例 |
---|---|---|
根域 | DNS域名中使用时,规定由尾部句点(.)来指定名称位于根或更高级别的域层次结构 | 单个句点或句点用于末尾的名称 |
顶级域 | 用来指示某个国家或地区或组织使用的名称的类型名称 | .com |
第二层域 | 个人或者组织在Internet上使用的注册名称 | qq.com |
子域 | 已注册的二级域名派生的域名,通俗的讲就是网站名 | www.qq.com |
主机名 | 通常情况下,DNS域名最左侧的标签标识网络上特定的计算机,如h1 | h1.www.qq.com |
一些常见的DNS域名
DNS域名称 | 组织类型 |
---|---|
com | 商业公司 |
edu | 教育机构 |
net | 网络公司 |
xx | 国家/地区(cn表示中国) |
… | … |
DNS查询方式
- 【递归查询】:DNS服务器可使用其自身的资源记录信息缓存来应答查询,也可以代表请求的客户机来查询或联系其他的DNS服务器,以完全解析该名称,并随后将应答返回至客户机。
- 【迭代查询】:客户机也可以尝试自己去联系其他的DNS服务器来解析名称,如果客户机这么做,他会使用基于服务器应答的独立和附加的查询、该过程称为迭代,即DNS服务器之间的交互查询就是迭代查询。
DNS查询的过程
- 在浏览器中输入www.baidu.com域名,操作系统会先检查自己本地的hosts文件中是否有这个域名映射的IP地址,如果有,就先调用这个IP地址,完成域名解析。
- 如果hosts里没有这个域名映射,则查询本地的DNS解析器缓存,如果有,解析完成。
- 如果本地的DNS解析器也没有,首先找TCP/IP参数中设置的首选DNS服务器,也就是我们说的本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域的资源中,则返回解析结果给客户端,完成域名解析,此解析具有权威性。
- 如果要查询的域名,不由本地DNS服务器区域解析,但是该服务器已经缓存了此网址映射关系,则调用这个IP地址,完成域名解析,但是此解析不具有权威性。
- 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的配置(是否设置转发器)进行查询,如果未设置转发器,本地的DNS将请求发送给13台根DNS,根DNS服务器收到请求后判断这个域名(.com)是谁来授权管理的,并返回一个负责该顶级域名都武器的一个IP,本地DNS服务器收到这个IP后,连续这台负责.com域的服务器,.com域服务器收到本地DNS服务器请求后,如果自己无法解析,就会找一个管理.com域的下一级DNS服务器地址(baidu.com)给本地DNS服务器,当本地DNS服务器收到这个地址就回去找,一直重复这个动作知道找到www.baidu.com主机(服务器之间迭代查询)。
- 如果本地DNS服务器设置了转发模式,DNS服务器就会把请求转发至上一级DNS服务器,然后上一级负责解析,直到找到对应的IP地址返回给本地DNS服务器。
- 不管是那种,最后都是有本地DNS服务器将结果返回给DNS客户端。(客户端到本地DNS服务器属于递归查询)
解析顺序:浏览器缓存 --》 系统缓存 – 》 本地DNS服务器 – 》 根域名服务器 – 》顶级域名服务器 --》 主域名服务器 – 》 返回对应IP做本地缓存然后访问。
参考:https://www.cnblogs.com/gopark/p/8430916.html