image.png

URL(Uniform Resource Locator)

一种树状设计

  • Scheme 代表协议,不只有 https,还有 ftp、ssh 等,不同协议代表着不同类型的应用在提供资源
  • Host 代表站点,我们今天介绍的 DNS 主要作用就是根据 Host 查找 IP 地址
  • Port 是端口,代表提供服务的应用
  • Path 是路径,代表资源在服务中的路径
  • Query 是查询条件,代表需要的是资源中的某一个部分
  • Fragment 是二级查询条件,通常不在服务端响应,而是用于前端展示定位内容

    域名系统

    DNS(Domain Name System,域名系统)是一个将域名和 IP 地址相互映射的分布式服务

image.png

  • 顶部第一级是根 DNS 存储,存储的是顶级域的目录,被称作根 DNS 服务器
  • 第二级是顶级域存储,存储的是二级域的目录,被称作顶级域 DNS 服务器(Top Level DNS,TLD)
  • 最后一级是叶子节点,存储的是具体的 DNS 记录,也被称作权威 DNS 服务器

因为流量、防止单点故障、平衡地理分布等问题,根域名服务器只是一个目录,并不提供具体的数据

域名解析

image.png
在上面的例子当中,每一步都有缓存的设计。浏览器会缓存 DNS,此外,操作系统、路由器、本地 DNS 服务器也会……因此,绝大多数情况,请求不会到达根 DNS 服务器

如果在某个时刻同一个区域内有一个用户触发过上述 1~8 的过程,另一个同区域的用户就可以在本地 DNS 服务器中获得 DNS 记录,而不需要再走到根 DNS 服务器。这种设计,我们称作分级缓存策略

DNS记录

  1. // CNAME 别名
  2. a.example.com. IN CNAME b.example.com.
  3. // MX 邮件
  4. IN MX mail.lagou.com
  5. // NS 权威服务器
  6. a.com. IN NS ns1.a.com.
  7. a.com. IN NS ns2.a.com.

image.png

设计一个智能 DNS 服务

  1. 为域名增加两条以上的 ns 记录(且这两个域名的 IP 需要配置 A 记录)
  2. ns1 和 ns2 最好在不同的物理机上
  3. 对应的每个物理机上的容器(虚拟机)安装 Named 服务,使之成为一个权威服务器节点
  4. 配置完 Named 后增加 DNS 域名配置信息的脚本( Named 有 GeoNDS 插件,基于地理位置提供智能 DNS 服务 https://bind9.readthedocs.io/en/latest/configuration.html