Magic UI
Back to all articles
Network

面试必备-计算机网络-DNS

Explore essential React Native libraries that will streamline your mobile app development and enhance functionality.

面试必备-计算机网络-DNS

💡 DNS: Domain Name System
作用:根据域名查询对应主机 IP

解析与查询过程

解析过程:

  • 查找浏览器缓存,Chrome 大概 1 分钟
  • 寻找系统缓存(因系统而异)
  • 递归 ISP DNS 缓存(比如腾讯/电信),多数查询是在这一步找到的
  • 迭代 搜索根域名服务器
DNS解析过程

相关术语:

  • TTL:表示缓存时间,即 600 秒之内不用重新查询
  • A记录:地址记录 (Address),返回域名指向的 IP 地址
  • CNAME:规范名称记录 (Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转

DNS有关的网络性能优化

  1. 减少 DNS 查找,避免重定向

    • 浏览器 DNS 缓存
    • 计算机 DNS 缓存
    • 服务器 DNS 缓存
    • 使用 Keep-Alive 特性 来减少 DNS 查找

    考虑影响 DNS 缓存的因素:

    • 服务器可以设置 TTL 值表示 DNS 记录的存活时间。本机 DNS 缓存将根据这个 TTL 值判断 DNS 记录什么时候被抛弃,这个 TTL 值一般都不会设置很大,主要是考虑到快速故障转移的问题。
    • 浏览器 DNS 缓存也有自己的过期时间,这个时间是独立于本机 DNS 缓存的,相对也比较短,例如 Chrome 只有 1 分钟左右。
    • 浏览器 DNS 记录的数量也有限制,如果短时间内访问了大量不同域名的网站,则较早的 DNS 记录将被抛弃,必须重新查找。不过即使浏览器丢弃了 DNS 记录,操作系统的 DNS 缓存也有很大机率保留着该记录,这样可以避免通过网络查询而带来的延迟。
  2. DNS 的预解析

    可以通过 meta 信息来告知浏览器,这个页面要做 DNS 预解析:

    <meta http-equiv="x-dns-prefetch-control" content="on" />

    可以使用 link 标签来强制对 DNS 做预解析:

    <link rel="dns-prefetch" href="http://ke.qq.com/" />

    当客户端的 DNS 缓存为空时,DNS 查找的数量与 Web 页面中唯一主机名的数量相等。减少唯一主机名的数量就可以减少 DNS 查找的数量。
    建议使用较少的域名来减少 DNS 查找(2-4 个主机)。


本文是前端与计算机网络培训的一点总结,关于 DNS 解析过程做了简短的介绍,相关的安全防范和网络性能优化,还需要更多的学习。

参考: