CS168:DNS 如何查找域名
DNS(Domain Name System)把域名映射到 IP 地址,也保存邮件服务器等其他记录。它不是一台存放全世界域名的中央服务器,而是一套分层、分布式的名称系统。
一次递归查询
浏览器需要解析 www.berkeley.edu 时,设备上的存根解析器(stub resolver)通常把问题交给递归解析器。若答案不在缓存里,递归解析器会逐级查询:
- 根服务器指出
.edu顶级域的名称服务器。 .edu服务器指出berkeley.edu的权威名称服务器。- 权威服务器返回该域名对应的记录。
这像寄信时逐级查找地址:根目录只告诉你下一层由谁管理,不必知道每个具体住址。递归解析器拿到结果后返回给客户端,并可按记录的 TTL 缓存一段时间,减少后续查询。
记录与传输
DNS 记录包含名称、类型、值和缓存时长等信息。常见的 A 记录指向 IPv4 地址,AAAA 记录指向 IPv6 地址,MX 记录描述邮件服务器。
常规 DNS 查询通常使用 UDP 53 端口;响应过大、区域传送或其他需要可靠字节流的情形会使用 TCP。UDP 查询丢失时,解析器可以重试;并非所有 DNS 通信都只使用 UDP。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GHL's Blog!
