1.什么是DNS?
DNS(Name)是“ Name ”的英文缩写。 它是组织成域层次结构的计算机和网络服务命名系统。 它用于 TCP/IP 网络。 它提供的服务是主机名和域名的转换。 适用于 IP 地址。 你可以把它想象成一本巨大的电话簿。
例如,如果要访问一个域名,首先要通过DNS查出它的IP地址是151.101.129.69。
如果你不知道为什么必须找出IP地址才能在网络上通信,我建议你先阅读我的《互联网协议简介》。
DNS就是这样一个“翻译器”。 其基本工作原理可用下图表示:
2. DNS域名空间结构
域名系统充当分层分布式数据库,其中包含各种类型的数据,包括主机名和域名。 DNS 数据库中的名称形成了称为域名称空间的分层树结构。
根域名:DNS域名的使用规定尾随句点“.” 指定名称位于根或更高级别的域层次结构。
顶级域名:用于表示国家、地区或组织。 使用三个字符,例如 com -> 商业公司、edu -> 教育机构、net -> 互联网公司、gov -> 非军事政府机构等。
二级域名:个人或组织使用的注册名称。 使用两个字符,例如:cn -> 代表中国,jp -> 日本,uk -> 英国,hk -> 香港等。
主机:主机名位于域名空间结构的底部。 主机名和域名组合起来形成 FQDN。 主机名是 FQDN 的最左边部分。
3. DNS获取流程
DNS 是一个应用层协议。 事实上,它适用于其他应用层协议,包括但不限于 HTTP、SMTP 和 FTP。 它用于将用户提供的主机名解析为IP地址。
具体流程如下:
① DNS客户端运行在用户的主机上,也就是说我们的PC或者手机客户端运行着DNS客户端。
②浏览器从接收到的URL中提取域名字段,例如访问的主机名,并将该主机名传输到DNS应用程序的客户端。
③DNS客户端向DNS服务器发送查询消息,其中包含要访问的主机名字段(包括一系列缓存查询和分布式DNS集群工作)。
④DNS客户端最终会收到回复消息,其中包含主机名对应的IP地址。
⑤ 浏览器从 DNS 收到 IP 地址后,就可以向该 IP 地址所在的 HTTP 服务器发起 TCP 连接。
4、DNS服务架构
DNS服务的作用:将域名解析为IP地址,并将IP地址解析为域名。
假设用户主机上运行的某个应用程序(例如 Webl 浏览器或邮件阅读器)需要将主机名转换为 IP 地址。 这些应用程序将调用 DNS 客户端并指定需要转换的主机名。 (在许多基于 UNIX 的机器上,应用程序需要调用 () 才能执行此转换。)收到用户主机的 DNS 客户端后,它会向网络发送 DNS 查询消息。 所有DNS请求和回复报文中使用的UDP数据报都是经过几毫秒到几秒的延迟后通过53端口发送的(至于为什么使用UDP,请看为什么只有13个域名根服务器? - 郭无心的回答)最后,用户主机上的 DNS 客户端收到一条提供所需映射的 DNS 回复消息。 该查询的结果将传递给调用 DNS 的应用程序。 因此,从调用用户主机上的应用程序的角度来看,DNS是一个黑盒子,提供简单直接的翻译服务。 但事实上,实现这项服务的黑匣子非常复杂。 它由分布在世界各地的大量 DNS 服务器和定义 DNS 服务器如何与查询主机通信的应用层协议组成。
5. DNS为什么不采用单点集中式设计方式,而是采用分布式集群工作方式?
DNS 的一种简单设计模式是仅使用 上的一台 DNS 服务器,其中包含所有映射。 在这种集中式设计中,客户端直接将所有查询请求发送到单个 DNS 服务器。 DNS 服务器直接响应所有查询客户端。 虽然这种设计方式很诱人,但并不适合现在的互联网。 因为当今的互联网拥有庞大且数量不断增长的主机,这种集中式设计将会存在单点故障、通信能力(查询数亿台主机发送的DNS消息请求,包括但不限于所有HTTP请求、电子邮件消息)服务器、TCP长连接服务)、长距离延时(例如,澳大利亚到纽约)、高维护开销(因为所有主机名-IP映射必须在服务站点更新)等问题。
DNS服务器一般分为三类:根DNS服务器、顶级DNS服务器和权威DNS服务器。
6. DNS服务的工作流程
当 DNS 客户端需要在查询程序中使用名称时,它会查询本地 DNS 服务器来解析该名称。 客户端发送的每条查询消息包含3条信息,用于指定服务器应该回答的问题。
● 指定的DNS 域名,表示为完全限定域名(FQDN)。
● 指定查询类型,按类型指定资源记录或作为查询操作的专门类型。
● 指定DNS 域名类别。
对于 DNS 服务器,应始终将其指定为类别。 例如,指定的名称可以是计算机的完全限定域名,并且指定的查询类型用于按该名称搜索地址资源记录。
DNS 查询可以通过多种不同的方式解决。 客户端有时还可以使用从先前查询获得的缓存信息就地回答查询。 DNS 服务器可以使用自己的资源记录信息缓存来回答查询,也可以代表请求客户端查询或联系其他 DNS 服务器以完全解析名称,然后将答案返回给客户端。 这个过程称为递归。
或者,客户端本身可以尝试联系其他 DNS 服务器来解析名称。 如果客户端这样做,它将根据服务器的响应使用独立的附加查询。 这个过程称为迭代,即DNS服务器之间的交互查询是迭代查询。
DNS查询流程如下:
1、在浏览器中输入www..com域名。 操作系统首先会检查其本地的hosts文件是否有这个URL映射关系。 如果有,就会先调用IP地址映射来完成域名解析。
2. 如果hosts中没有该域名的映射,则搜索本地DNS解析器缓存,看是否有该URL的映射关系。 如果有则直接返回完成域名解析。
3. 如果主机与本地DNS解析器缓存之间没有对应的URL映射关系,则首先查找TCP/ip参数中设置的首选DNS服务器。 这里我们称之为本地DNS服务器。 当本服务器收到查询时,如果本地配置区资源中包含查询到的域名,则将解析结果返回给客户端,完成域名解析。 这个决议具有权威性。
4、如果要查询的域名没有被本地DNS服务器区域解析,但服务器缓存了URL映射关系,则会调用这个IP地址映射来完成域名解析。 这个决议并不具有权威性。
5、如果本地DNS服务器的本地区域文件和缓存解析无效,则根据本地DNS服务器的设置(是否设置转发器)进行查询。 如果不使用转发模式,本地DNS会将请求发送到13个根DNS服务器。 DNS服务器收到请求后,会判断谁授权管理这个域名(.com),并返回一个负责顶级域名服务器的IP。 本地DNS服务器收到IP信息后,会联系负责.com域的服务器。 负责.com域的服务器收到请求后,如果无法解析,就会找到管理.com域的下级DNS服务器地址(),交给本地DNS服务器。 当本地DNS服务器收到这个地址后,就会寻找域服务器,重复上述动作,进行查询,直到找到www..com主机。
6、如果采用转发方式,DNS服务器会将请求转发给上级DNS服务器,由上级服务器进行解析。 如果上层服务器无法解析,则要么查找根DNS,要么将请求转发给上层。 ,如此循环。 无论本地DNS服务器是使用转发还是root提示,最终结果都会返回到本地DNS服务器,然后DNS服务器返回给客户端。
客户端向本地DNS服务器的查询是递归查询,而DNS服务器之间的交互查询是迭代查询。
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。