在浏览器输入网址 DNS 查询的顺序是如何的?-灵析社区

素素数数

假如我的电脑是一台全新的电脑,我使用 chrome 查询 `www.baidu.com` 以后,DNS 的查询是什么规则呢? 我目前的理解如下: **(以下步骤皆按照查询失败来进行下一步)** 1. chrome 先查询浏览器缓存 2. 查询本地 `/etc/hosts` 文件 3. 查询本地 DNS服务器 4. 查询 “.” 根服务器,获取 `.com` 服务器的地址 5. 查询 “.com” 顶级域名服务器,获取 `baidu.com` 一级域名服务器的地址 6. 查询到 `www.baidu.com` 的 DNS 服务器 7. 拿到真正的 `ip` 不确定是否其中哪一步骤有错误,希望指正。

阅读量:198

点赞量:0

问AI
如果单纯从'电脑'的视角来看DNS查询,是没有456这三点的。 1. 浏览器即将要发起一个http请求时,会委托操作系统查询DNS(创建sockt连接的时候,这里应该算是一个隐式的委托)。 2. 操作系统执行查询请求时,会读取本地的缓存,还有hosts文件里面的记录。 3. 当操作系统本地没有记录时,这个时候才会根据网络接口里面的DNS服务器配置来查询。 4. 从操作系统的角度看,只有查询成功查询失败两个结果。成功则直接使用查询到的结果创建连接,如果是连接dns服务器失败就会使用其他的DNS(这也是配置DNS地址时可以配置两个的原因) 5. 流程结束。 *** 如果扩展一下,站在DNS服务器的角度看,就是这样的:(这里说的DNS服务器是8.8.8.8这样的公共DNS,或者路由器上运行的本地DNS) 1. 收到一个来自客户端的DNS查询请求 2. 检查服务器的缓存里面有没有记录,如果有记录,直接返回记录的结果。 3. 缓存中没有记录,或者dns记录的ttl已经过期了,dns可能就会它的上游DNS查询一次。 4. 这里在向上游的DNS查询时,有可能上游也是一台公共的DNS服务器,也有可能没有特定的上游服务器,是进行逐级递归查询。 5. 再说逐级递归查询,先查询根服务器,得到com顶级服务器的dns地址。 6. 理想情况下拿到顶级地址之后会,查询baidu,得到baidu的NS地址,再向baidu.com的ns查询得到www对应的ip。(这里就对应你说的456三点) 7. dns服务器查询的www.baidu.com的ip之后,可能会根据记录的ttl进行缓存,同时把结果响应给客户端。 8. 结束 上面的这几步对电脑来说是不透明的,电脑只知道发送了dns请求,然后收到响应。