DNS 中的域名都是用句点来分隔的,比如 www.server.com,这里的句点代表了不同层次之间的界限。在域名中,越靠右的位置表示其层级越高。域名最后还有一个点,比如 www.server.com.,这个最后的一个点代表根域名。
- 根DNS服务器 .
- 顶级域名服务器 .com
- 权威DNS服务器 server.com
根域名DNS服务器信息保存在互联网所有的DNS服务器中,这样的话任何DNS服务器就都可以找到并访问DNS服务器,因此客户端只要能够找到任意一台DNS服务器就都可以找到并访问根域DNS服务器了。
域名解析工作流程:
客户端首先会发出一个 DNS 请求,问 www.server.com 的 IP 是啥,并发给本地 DNS 服务器(也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址)。
本地域名服务器收到客户端的请求后,如果缓存里的表格能找到 www.server.com,则它直接返回 IP 地址。如果没有,本地 DNS 会去问它的根域名服务器:“老大, 能告诉我 www.server.com 的 IP 地址吗?” 根域名服务器是最高层次的,它不直接用于域名解析,但能指明一条道路。
根 DNS 收到来自本地 DNS 的请求后,发现后置是 .com,说:“www.server.com 这个域名归 .com 区域管理”,我给你 .com 顶级域名服务器地址给你,你去问问它吧。
本地 DNS 收到顶级域名服务器的地址后,发起请求问“老二, 你能告诉我 www.server.com 的 IP 地址吗?”
顶级域名服务器说:“我给你负责 www.server.com 区域的权威 DNS 服务器的地址,你去问它应该能问到”。
本地 DNS 于是转向问权威 DNS 服务器:“老三,www.server.com对应的IP是啥呀?” server.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主。
权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。
本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。
不是每次域名解析都是这个步骤,浏览器会先看看自身有没有对这个域名的缓存,如果有就返回,如果没有问操作系统,操作系统会去看自己的缓存,如果有就直接返回,如果没有再去hosts文件看,也没有才回去问本地DNS服务器。