在此处插入图像描述
目录 5. 缓存 6. DNS相关面试题 1. DNS
DNS( Name)是域名系统的缩写,是一种按域层次组织起来的计算机和网络服务命名系统,用于TCP/IP网络。
2. 域名系统 DNS 的作用
识别主机通常有两种方式:通过主机名或 IP 地址。人们喜欢容易记住的主机名表示,而路由器则更喜欢固定长度、分层的 IP 地址。为了满足这些不同的偏好,我们需要一个可以将主机名转换为 IP 地址的目录服务。域名系统是一个分布式数据库,将域名和 IP 地址相互映射,使人们能够更方便地访问互联网。
因此,即使不使用域名,也可以通过IP地址来寻址目标主机,但是域名比IP地址更容易让人记忆,所以对于大多数网络应用来说,我们一般都是使用域名来访问目标主机,而不是直接使用IP地址来访问。
对于这个例子来说,简单地说,当我们在浏览器地址栏中输入某个Web服务器的域名时,用户主机首先会去自己的DNS缓存中查找该域名对应的IP地址。
域名系统DNS用于解析_网页域名解析出错怎么办
若没有找到,就会向网络中的某台DNS服务器进行查询,该DNS服务器中有一个域名与IP地址映射的数据库,当DNS服务器收到DNS查询报文后,就会查询自己的数据库,然后将查询结果发送给用户主机。
域名系统DNS用于解析_网页域名解析出错怎么办
现在,用户主机上的浏览器就可以通过其 IP 地址访问 Web 服务器了。
图像-.png
3.域名的层级关系
层级关系特征
域名体系没有规定一个域名必须包含多少个子域名,也没有规定每级域名代表什么。每级域名由下一级的域名管理机构管理,而最高级域名则由互联网名称与数字地址分配机构(ICANN)管理。
互联网域名空间
在此处插入图像描述
上图是部分DNS服务器层级结构,从上到下依次为根域名服务器、顶级域名服务器和权威域名服务器。域名和IP地址的映射关系必须保存在域名服务器中,以供其他所有应用程序查询。显然,所有信息不可能都保存在一台域名服务器中。DNS利用分布在各地的域名服务器来实现域名到IP地址的转换。
域名服务器可以分为四种不同的类型:
4.DNS域名解析流程
域名解析包括两种查询方式:递归查询和迭代查询。
递归查询
如果主机查询的本地域名服务器不知道所查询域名的IP地址,那么本地域名服务器会以DNS客户端的身份,继续向其他根域名服务器发送查询请求报文,即代替主机继续进行查询,而不是让主机自己进行下一步的查询。
我们举个例子来理解DNS递归查询的工作原理。假设图中的主机(IP地址)想知道域名的IP地址。
流程如图所示:
域名系统DNS用于解析_网页域名解析出错怎么办
当查询域名对应的IP地址时,查询结果会在事先委托的域名服务器之间进行传输,最终返回给用户主机。
流程如图所示:
域名系统DNS用于解析_网页域名解析出错怎么办
迭代查询
当根域名服务器收到本地域名服务器的迭代查询请求报文时,它要么给出需要查询的IP地址,要么告诉本地服务器下一步应该向哪个域名服务器进行查询,然后让本地服务器进行后续的查询。
迭代查询过程如下:
流程如图所示:
域名系统DNS用于解析_网页域名解析出错怎么办
由于递归查询对于被查询的域名服务器来说负担过重,因此通常采用以下模式:从请求主机到本地域名服务器的查询为递归查询,其余查询均为迭代查询。
5.缓存
为了提高DNS的查询效率,减轻根域名服务器的负荷,减少互联网上的DNS查询报文数量,在域名服务器中广泛使用缓存,用于保存最近查询的域名的记录以及从哪里获取域名映射信息。
由于域名和IP地址之间的映射关系并不是永久的,为了保持缓存中的内容正确,域名服务器应该对每条内容设置一个定时器,删除超过合理时间的内容(比如每条内容只存储两天)。
高速缓存不仅在本地域名服务器中需要,在用户主机中也同样需要。许多用户主机在启动时会从本地域名服务器下载整个域名和 IP 地址的数据库,并维护一个最近使用过的域名的高速缓存,只有当在缓存中找不到该域名时才向域名服务器查询。同样,主机也需要保持缓存内容的正确性。
如图所示:
域名系统DNS用于解析_网页域名解析出错怎么办
如果用户不久前在本地域名服务器中查询过该域名的IP地址,那么本地域名服务器的缓存中应该有该域名对应的IP地址,因此直接告知用户缓存中保存的上次查询结果(即IP地址)。
6. DNS相关面试题
1.为什么DNS使用UDP?
更正确的答案是,DNS 同时使用了 TCP 和 UDP。在进行区域传输(主域名服务器将变更的数据传送给辅助域名服务器)时使用 TCP,因为同步传输的数据量大于一次请求和响应的数据量,并且 TCP 允许的消息长度更长。因此,为了保证数据的正确性,使用基于可靠连接的 TCP。
当客户端向DNS服务器查询域名(域名解析)时,返回的内容一般不会超过UDP报文的最大长度,也就是512字节。使用UDP进行传输时,不需要经过TCP三次握手的过程,大大提高了响应速度,但这要求域名解析器和域名服务器都必须自行处理超时和重传,以保证可靠性。
2.递归查询和递归查询有什么区别?
递归查询:如果主机查询的本地域名服务器不知道所查询域名的IP地址,那么本地域名服务器会以DNS客户端的身份,继续向其他根域名服务器发送查询请求报文,即代替主机继续进行查询,而不是让主机自己进行下一次查询。
迭代查询:当根域名服务器收到本地域名服务器的迭代查询请求报文时,它要么给出需要查询的IP地址,要么告诉本地服务器下一步应该向哪个域名服务器进行查询,然后让本地服务器进行后续的查询。
3. 使用域名访问Web服务器进程
详细内容可以看本专栏的这篇文章:面试官问我:从地址栏输入URL到显示页面,经历了哪些过程?
4. 请介绍一下DNS解析过程?
详细解析流程可以参考上面的DNS域名解析流程,这里我们做个总结:
浏览器缓存 -> 系统hosts文件 -> 本地DNS解析器缓存 -> 本地域名服务器(本地配置区资源,本地域名服务器缓存) -> 根域名服务器 -> 主域名服务器 -> 下一级域名服务器客户端 -> 本地域名服务器(递归查询) 本地域名服务器 -> DNS服务器 交互式查询就是迭代查询
如果我的文章对你有帮助的话请点赞三次!!!
在此处插入图像描述
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。