域名解析

150 阅读2分钟

域名解析的作用就是把大家平常用的网站(例如:www.baidu.com ) 转变成计算机能够识别的ip地址。虽然互联网项目都会用到,但是在日常的开发过程中很少接触,不过基于DNS本身的工作过程和对于流量的影响就是透明多级的,值得学习借鉴。

组成

域名缓存

DNS因为本身的作用会有大量频繁的请求,如果没有合适的分流,就会限制网络请求速度。因此就需要在客户端本地进行DNS缓存。

权威域名服务器

负责翻译指定的域名的服务器,对范围内的域名有最终解释权,意味着翻译的结果由该服务器控制。翻译也不是简单的像字典一样对照翻译,会根据来访机器,网络链路,服务内容等信息,进行灵活应用。最常见的是根据来访者不同的所在区域分配合适的数据中心(华北一区,华南二区等等)。

根域名服务器

指固定的,无需查询的顶级域名服务器,默认都内置在操作系统中。目前全球有个13组根域名服务器,包含1台主根服务器和12台辅根服务器,这13台都是IPV4的根服务器。因为IPV4的资源逐渐耗尽,又相继搭建了25台IPV6的根服务器。

工作流程

  • 先查询本地的DNS缓存,查看存在且未失效的域名的地址记录。
  • 将地址发送给本机操作系统配置的本地DNS,本地DNS可以手动配置,也可以在DHCP分配或拨号时从PPP服务器获取。
  • 根据查询请求结果,按照从下到上的顺序,先找底层的权威域名服务器,如果没有一层层往上直到根域名服务器为止。例如:查询 www.baidu.com 的权威域名服务器,获取域名地址 ——》baidu.com的权威域名服务器,获取域名地址——》com的根域名服务器,获取域名地址。
  • 每种域名地址不止一个,权威服务器可以根据访问者不同地区、不同服务商来进行智能选择。

不足

  • 响应速度会随着递归的层数越多越慢,在极端情况下(无缓存)可能会导致多次递归才能返回结果。
    • 解决方式:通过预加载的方式进行缓存。例如:
  • 底层权威域名服务器或者本地的DNS容易被劫持,比方说:加广告
    • 解决方式:DNS over HTTPS,DoH将原本DNS解析的操作变为HTTPS协议的服务,通过程序代替操作系统直接从可靠的域名服务器获取数据。有兴趣的可以自己了解下,在这里就不赘述了。