最近在读许令波老师的深入分析 Java web 技术内幕, 算是对 DNS 服务器域名解析有个大体的理解, 以下的内容来自个人对书中内容的整理
1. 什么是域名解析
当我们在浏览器的地址栏输入一个地址时, 如 www.xxxx.com, 之后就可以跳转到对应的页面, 但是为什么呢? 要知道机器是只认识 IP 地址的,
他并不理解我们输入的 www 这种格式是什么意思, 这个时候时候就要用到域名解析了
2. 域名解析的步骤
首先粗略的说, 域名解析就是通过 DNS 把 www.xxxx.com 这种格式的域名解析成一个 IP 地址, 之后通过 IP 地址找到对应的服务器, 当然后面就是浏览器请求数据了,
这不是咱们的关注点. 接下来详细的讲解具体的解析过程
用户输入一个域名, 浏览器去自己的缓存中寻找是否有对应的解析过的 IP 地址 (这个缓存有大小和时间限制,), 没有转入下一步
浏览器检查操作系统的缓存 (有大小和时间限制) 中是否有这个域名解析过的结果, 在我们常说的 host 文件 (c:/windows/system32/etc) 中可以看到
localhost 被解析成 127.0.0.1, 这也是为什么你用 tomcat 部署 web 项目后, 用浏览器访问总是要输入 localhost, 当然我更习惯直接输入
127.0.0.1: 端口 / 项目名 / xxx 这种, 因为你的 host 文件有时会被恶意更改 (拓展点说叫做域名劫持), 这样你输入 localhost 就无法被解析了
如果这一步还没有找到域名对应的 IP, 转入下一步
浏览器向 LDNS 发送请求, L 代表 local, 所以 LDNS 也就是本地的域名解析器, 同样的在自己的缓存里找, 没找到向根域名服务器 (Root Server) 发送请求
根域名服务器返回给 LDNS 一个主域名服务器地址 (gTLD Server), 比如我们输入的含有. com 的域名, 那么返回的这个就是 com 的主域名服务器地址
接下来 LDNS 向 gTLD Server 发送请求, 后者返回给前者此域名对应的 Name Server 域名服务器的地址
然后 LDNS 向 Name Server 发送请求, Name Server 对此域名进行解析 (查询域名与 IP 地址的映射表. 一个 IP 地址可能对应多个域名)
NameServer 返回解析结果给 LDNS,LDNS 将结果反馈给浏览器
浏览器通过此 IP 地址与默认的 80 端口与服务器建立连接, 进行数据交互
总结: 可以看到在域名解析的过程中, LDNS 处于一个中心节点的位置, 对根服务器发送请求后获得数据再向主域名服务器发送数据.......
贴下书中的图吧
来源: https://www.cnblogs.com/tele-share/p/8411041.html