从浏览器输入域名开始分析DNS解析过程( 二 )


从浏览器输入域名开始分析DNS解析过程


假设我们要访问 abc13.ban2.lcy0000.top(假设存在该网站),当浏览器输入这个网址后,查询流程如下
本地 hosts 文件
本地计算机会首先检查本地 hosts 文件是否包含 abc13.ban2.lcy0000.top 的 IP 地址映射 。如果存在,则直接返回该 IP 地址,否则继续进行 DNS 查询 。
本地 DNS 缓存
本地计算机会检查本地 DNS 缓存是否包含 abc13.ban2.lcy0000.top 的 IP 地址 。如果存在,则直接返回该 IP 地址,否则继续进行 DNS 查询 。
ISP的递归 DNS 服务器(图中的DNS Resolver)
本地计算机会向 ISP 的DNS 服务器发起 DNS 查询请求,询问 abc13.ban2.lcy0000.top 的 IP 地址 。(图中的连线1)
【从浏览器输入域名开始分析DNS解析过程】ISP是互联网服务提供商,简单理解为就是移动、联通、电信 。
根DNS服务器(图中的Root Server)
ISP 的 DN S 服务器会向根 DNS 服务器查询 .top 顶级域名的 DNS 服务器的 IP 地址,根 DNS 服务器会返回 .top 顶级域名的 DNS 服务器的 IP 地址 。(图中的2、3连线代表查询和返回)
顶级域名服务器(图中的TLD Server)
ISP的 DNS 服务器会向该 DNS 服务器查询 lcy0000.top 二级域名的 DNS 服务器的 IP 地址 。(图中的4、5连线代表查询和返回)
权威DNS服务器
ISP的 DNS 服务器会向lcy0000.top 二级域名的 DNS 服务器查询 ban2.lcy0000.top的DNS服务器的 IP 地址 。(图中的连线6)
权威DNS服务器
ban2.lcy0000.top 的 DNS 服务器查询 abc13.ban2.lcy0000.top 的 IP 地址,abc13.ban2.lcy0000.top 的 IP 地址被返回 。权威服务器之间的查询过程不需要ISP的递归服务器参与,ISP的DNS只需要查询一次权威服务器即可(图中的连线7)
ISP的递归DNS服务器(图中的DNS Resolver)
ISP的 DNS 服务器会将查询结果返回给本地计算机 。操作系统将使用该IP地址来访问对应的网站,并将该IP地址添加到本地DNS缓存中,以便下次访问同一网站时更快地获取IP地址 。(图中的连线8)
本地计算机
本地计算机将使用该 IP 地址与 abc13.ban2.lcy0000.top 进行通信,浏览器使用该IP地址向 abc13.ban2.lcy0000.top 的服务器发起HTTP请求,获取相应的网页内容 。(图中的9、10连线代表查询和返回)
从图上可以看到,从浏览器到ISP的递归DNS服务器的这个步骤是递归查询(Recursive Query),从递归DNS服务器到根、顶级、权威域名服务器这个过程是迭代查询(Iteractive Query) 。
3. hosts文件是什么?为什么访问网站会先查找hosts文件?hosts文件中存放着IP地址和对域名,可以手动配置,作用是为了将特定的域名映射到特定的IP地址上,从而在访问这些域名时不需要进行DNS解析,直接使用hosts文件中的IP地址进行访问 。如果访问的域名不在hosts文件中,则会查找DNS缓存或者从DNS服务器获取对应的IP地址并进行访问 。如果你在hosts文件配置错了IP,那这个网站将无法访问 。因为后面不会再去查找本地DNS缓存和DNS服务器解析,就根据hosts文件中的IP去访问 。
相对于本地DNS缓存,hosts文件的优势在于它可以直接控制特定域名的解析结果 。当你在hosts文件中手动添加了一个IP地址和域名的对应关系后,这个映射关系将会一直生效,不受DNS缓存的影响 。而本地DNS缓存是由操作系统自动维护的,它会根据DNS服务器返回的TTL值来判断缓存是否过期,当缓存过期后需要重新进行DNS解析,如果DNS服务器返回了不同的IP地址,则会更新缓存中的记录 。
从浏览器输入域名开始分析DNS解析过程

推荐阅读