DNS解析过程原理!

本文涉及的产品
.cn 域名,1个 12个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: DNS解析过程原理!


Part1什么是DNS

我们知道,每个网站都有一个域名和一个以上的IP地址,当我们想浏览某个网站的时候,只需要在浏览器输入该网址的域名就可以访问了。要是没有域名能不能实现访问网站呢?答案当然是可以啦,不过你每次都需要记住访问的网址的IP地址,比如,你想用百度,每次都需要在浏览器打入112.80.248.74,是不是很令人崩溃啊哈哈哈哈。那么,网址域名和IP地址之间是如何实现一一映射的呢?这时候DNS就该闪亮登场的了。

DNS的全称是domain name system,即域名系统。DNS是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的去访问互联网而不用去记住能够被机器直接读取的IP地址。通过域名,最终得到该域名对应的IP地址的过程则是域名解析的过程。DNS如何解析

Part2递归查询

某天,客户端想要访问XXX网站,但是,客户端并不知道XXX网站的IP地址。于是,展开了如下对话

客户端:“本地DNS服务器大佬,求问XXX的IP地址是多少?”

本地DNS服务器:“不好意思,我不知道,但是根域名服务器可能会知道,我替去问他吧”

本地DNS服务器:“根域名服务器大佬,求问XXX的IP地址是多少?”

根域名服务器:“不好意思,我不也知道,但是A顶级域名服务器可能会知道,我替你去问他吧”

根域名服务器:“A顶级域名服务器,求问XXX的IP地址是多少?”

A顶级域名服务器:“不好意思,我不也知道,但是B域名服务器可能会知道,我替你去问他吧”

A顶级域名服务器:“B域名服务器,求问XXX的IP地址是多少?”

B域名服务器:“A顶级域名服务器,查到XXX的IP地址是192.168.168.6

A顶级域名服务器:“根域名服务器,查到XXX的IP地址是192.168.168.6

根域名服务器:“本地DNS服务器,查到XXX的IP地址是192.168.168.6

本地DNS服务器:“客户端,查到XXX的IP地址是192.168.168.6”

客户端:“谢谢各位大佬,XXX的IP地址是192.168.168.6,我可以和他愉快的通讯了”


通过上面的对话,我们可以发现,递归查询时如果客户端所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他顶级域名服务器继续发出查询,直到查询到结果后,再层层传递回来。

Part3迭代查询

客户端:“本地DNS服务器大佬,求问XXX的IP地址是多少?”

本地DNS服务器:“不好意思,我不知道,但是根域名服务器可能会知道,你去问他吧”,本地DNS服务器说完,并把根域名服务器地址发给客户端。

客户端:“根域名服务器大佬,求问XXX的IP地址是多少?”

根域名服务器:“不好意思,我不也知道,但是A顶级域名服务器可能会知道,你去问他吧”,根域名服务器说完,并把A顶级域名服务器地址发给客户端。

客户端只能又跑去问A顶级域名服务器了。

客户端:“A顶级域名服务器大佬,求问XXX的IP地址是多少?”

A顶级域名服务器:“不好意思,我不也知道,但是B域名服务器可能会知道,你去问他吧”,A顶级域名服务器说完,并把B域名服务器地址发给客户端。

客户端非常无奈,只能又跑去问B域名服务器了。

客户端:“B域名服务器大佬,求问XXX的IP地址是多少?”

B域名服务器:“客户端同学,查到XXX的IP地址是192.168.168.6”

客户端:“谢谢B域名服务器大佬,XXX的IP地址是192.168.168.6,我可以和他愉快的通讯了”

就这样,客户端在询问了一大圈之后,终于知道了XXX的IP地址了。


Part4总结

在上一节中,我们知道了DNS的两种查询方法,但实际上,在DNS查询过程中,客户端和服务器也都会加入缓存的机制,这样可以减少查询的次数,加快域名解析过程。当我们在浏览器中输入一个网站时,会发生如下过程

1、浏览器中输入想要访问的网站的域名,操作系统会先检查本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

2、如果hosts里没有这个域名的映射,客户端会向本地DNS服务器发起查询。本地DNS服务器收到查询时,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析。

3、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置,采用递归或者迭代查询,直至解析完成。


相关文章
|
30天前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
41 3
|
1月前
|
C++
【C++】深入解析C/C++内存管理:new与delete的使用及原理(二)
【C++】深入解析C/C++内存管理:new与delete的使用及原理
|
1月前
|
编译器 C++ 开发者
【C++】深入解析C/C++内存管理:new与delete的使用及原理(三)
【C++】深入解析C/C++内存管理:new与delete的使用及原理
|
1月前
|
存储 C语言 C++
【C++】深入解析C/C++内存管理:new与delete的使用及原理(一)
【C++】深入解析C/C++内存管理:new与delete的使用及原理
|
18天前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
31 1
|
23天前
|
数据采集 存储 编解码
一份简明的 Base64 原理解析
Base64 编码器的原理,其实很简单,花一点点时间学会它,你就又消除了一个知识盲点。
62 3
|
5天前
|
存储 供应链 物联网
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景
|
5天前
|
存储 供应链 安全
深度解析区块链技术的核心原理与应用前景
深度解析区块链技术的核心原理与应用前景
12 0
|
1月前
|
前端开发 Java 应用服务中间件
21张图解析Tomcat运行原理与架构全貌
【10月更文挑战第2天】本文通过21张图详细解析了Tomcat的运行原理与架构。Tomcat作为Java Web开发中最流行的Web服务器之一,其架构设计精妙。文章首先介绍了Tomcat的基本组件:Connector(连接器)负责网络通信,Container(容器)处理业务逻辑。连接器内部包括EndPoint、Processor和Adapter等组件,分别处理通信、协议解析和请求封装。容器采用多级结构(Engine、Host、Context、Wrapper),并通过Mapper组件进行请求路由。文章还探讨了Tomcat的生命周期管理、启动与停止机制,并通过源码分析展示了请求处理流程。
|
1月前
|
搜索推荐 Shell
解析排序算法:十大排序方法的工作原理与性能比较
解析排序算法:十大排序方法的工作原理与性能比较
51 9

推荐镜像

更多