DNS 学习小结

982 阅读3分钟

DNS

DNS全称Domain Name Systems, 用来把域名映射到实际的ip上。

dns里面有4种类型的服务器:

  1. Recursive dns server: 负责接收来自client(比如浏览器)的请求,然后自己发出一堆请求得到最后的ip地址返回给client。
  2. Root nameserver: 第一站。所有的域名后面都会带有.(平时都省略了),知道所有的TLD(比如.com, .net)的地址。
  3. TLD nameserver: 全名Top Level Domain,可以用来查询各种host的地址,比如example.com, google.com。
  4. Authoritative nameserver: 查询的最后一站,返回对应的ip结果。

查找步骤

  1. 浏览器缓存: 浏览器首先会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,就直接返回。浏览器的缓存也有一些限制,比如大小限制和时间限制。缓存时间一般在几分钟到几小时不等,太短了缓存命中率低,太长了容易更新不及时。

  2. 操作系统缓存:如果浏览器缓存没有命中,浏览器就会去操作系统中查找dns解析结果,这个解析文件mac里面放在/etc/host下面,平时改host来做测试就用了这个原理。

  3. LDNS(local dns): 如果都没命中,那就会找到本地的dns服务器(recursive dns server)。这个服务器一般不会太远,一般就由移动、电信这种运营商来提供。服务器会缓存上一次的结果来提升效率。如果缓存没有命中,那就会向Root nameserver发请求。

  4. Root nameserver: 返回给LDNS一个所查询的主域名服务器(gTLD Server)地址。gTLD是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右

  5. LDNS:拿到Root nameserver返回的结果,向下一级TLD查找。

  6. TLD nameserver:返回对应的Authoritative nameserver的地址,这个服务器通常就是用户注册的域名服务器,例如用户在某个域名服务提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成

  7. LDNS: 拿到TLD nameserver返回的结果,向下一级Authoritative nameserver查找。

  8. Authoritative nameserver:查询存储的域名和IP的映射关系表,在正常情况下都根据域名得到目标IP地址,连同一个TTL值一起返回

  9. LDNS:缓存这个域名和IP的对应关系,缓存时间由TTL值控制, 并把结果返回给client。

DNS服务器上记录的类型

dns服务器上可能存在有6种不同类型的记录:

  1. A(address): 返回域名指向的IP地址
  2. CNAME(Canonical Name Record): 返回另一个域名,有点像redirect,比如 在www.example.com的dns服务器里放一个 指向 example.com的cname。那每次查询www.example.com最终都会返回example.com的ip。
  3. NS(Name Server): 与该域名相关的name server。该记录只能设置为域名,不能设置为IP地址。
  4. MX(Mail eXchange): 返回接收电子邮件的服务器地址
  5. PTR(Pointer Record): 只用于从IP地址查询域名
  6. TXT(Text records): 拿来存放字符串
  7. SOA(singular Start of Authority): 放在域名最顶层,拿来存放域名的一些信息,比如其主要的name server是啥。(???)

参考文献

  1. Why a domain’s root can’t be a CNAME — and other tidbits about the DNS

  2. What is a DNS server

  3. What Is the Difference between Authoritative and Recursive DNS Nameservers?

  4. DNS及CDN解析

  5. DNS 原理入门