DNS全称Domain Name Systems, 用来把域名映射到实际的ip上。html
dns里面有4种类型的服务器:浏览器
浏览器缓存: 浏览器首先会检查缓存中有没有这个域名对应的解析过的IP地址,若是缓存中有,就直接返回。浏览器的缓存也有一些限制,好比大小限制和时间限制。缓存时间通常在几分钟到几小时不等,过短了缓存命中率低,太长了容易更新不及时。缓存
操做系统缓存:若是浏览器缓存没有命中,浏览器就会去操做系统中查找dns解析结果,这个解析文件mac里面放在/etc/host下面,平时改host来作测试就用了这个原理。服务器
LDNS(local dns): 若是都没命中,那就会找到本地的dns服务器(recursive dns server)。这个服务器通常不会太远,通常就由移动、电信这种运营商来提供。服务器会缓存上一次的结果来提高效率。若是缓存没有命中,那就会向Root nameserver发请求。dom
Root nameserver: 返回给LDNS一个所查询的主域名服务器(gTLD Server)地址。gTLD是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右测试
LDNS:拿到Root nameserver返回的结果,向下一级TLD查找。google
TLD nameserver:返回对应的Authoritative nameserver的地址,这个服务器一般就是用户注册的域名服务器,例如用户在某个域名服务提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成操作系统
LDNS: 拿到TLD nameserver返回的结果,向下一级Authoritative nameserver查找。.net
Authoritative nameserver:查询存储的域名和IP的映射关系表,在正常状况下都根据域名获得目标IP地址,连同一个TTL值一块儿返回code
LDNS:缓存这个域名和IP的对应关系,缓存时间由TTL值控制, 并把结果返回给client。
dns服务器上可能存在有6种不一样类型的记录: