DNS及其查询过程
什么是DNS?
一般我们的主机,服务器都有一个ip地址,例如10.10.10.1
。在计算机层面,如果我们要发送请求的话,首先就要知道我们的目标,也就是对方的ip地址。而IP地址很难记,比如百度的ip地址就是36.152.44.95
,这是不是很难记。
此时DNS(Domain Name System)域名系统出现了。它是因特网中的一项核心服务,实现了域名和IP地址相互映射的分布式数据库。也就是用www.baidu.com
映射36.152.44.95
,此后我们就只用记www.baidu.com
了。
域名的形式
域名可以被划分为各个子域,子域可以被划分为子域的子域。
域名的层级
根域名,顶级域名,次生域名,主机域名
每一级都会有很多服务器。
而DNS解析的时候就得要得到这些服务器的帮助。
查询过程:
- 首先用户在浏览器输入URL地址后,会先查询浏览器缓存中是否有该域名对应的IP地址。
- 如果浏览器缓存中没有,就会去计算机本地的Host文件中查询是否有对应的缓存。
- 如果Host文件中也没有,则会向本地的DNS解析器发送一个DNS请求。
- 如果本地的DNS解析器没有缓存该域名的解析记录,它就会向根DNS服务器发出查询请求。根DNS服务器不负责解析域名,但是它能告诉本地DNS解析器应该向哪个顶级域(.com/.net/.org)的DNS服务器继续查询。
- 本地DNS解析器接着向指定的顶级DNS服务器发送查询请求。顶级域DNS服务器也不负责具体的域名解析,但它能告诉本地DNS解析器应该前往哪个权威DNS服务器查询下一步信息。
- 本地DNS服务器最后向权威DNS服务器发送查询请求。权威DNS服务器是负责存储特定域名和IP地址映射的服务器。当权威服务器收到查询请求时,它会查找你请求的域名(如“example.com")对应的IP地址,并将结果返回给本地DNS解析器。
- 本地DNS解析器将收到的IP地址返回给浏览器,并且还会将域名解析结果缓存到本地,以便下次访问时更快地响应。