1.应用发起基于域名的请求后,linux先查询本地dns cache。
2.本地dns cache命中(cache中有该域名的纪录项),则返回目标ip地址,否则将域名解析请求发送给本地域名解析服务器(DNS server)。
3.域名服务器(DNS server)收到请求后,先查询本地缓存。如果命中,则直接返回目标ip地;否则,则直接发送请求给根域名服务器(Root Name Server) 。
4.根域名服务器 (Root Name Server) 返回给本地域名服务器 (DNS Server) 一个所查询域的主域名服务器 (gTLD Server) 地址。
5.本地域名服务器 (DNS Server) 再向上一步返回的 TLD 服务器发送请求。
6.接受请求的 GTLD 服务器查找并返回此域名对应的域名服务器 (Name Server,即域名申请时注册的域名服务器)的地址。
7.域名服务器(Name server)查询结果,正常情况下都根据域名得到目标ip记录,连同一个TTL值,返回给域名服务器 (DNS Server)。
8.本地 DNS Server 根据域名的TTL值,把返回的结果保存到缓存,同时将解析结果返回给客户机。
9.本地linux服务器对此ip和域名做映射缓存。
DNS server,负责与root server、gtld server、name server交互查询dns结果并进行缓存。 Root server,全球一共13台,命名从a.root-servers.net到m.root-servers.net。负责把dns请求按照域名的顶级域分发到对应的gtld server。 gTLD server,负责根据域名查找改域名对应的name server。(gtld server上域名与name server的对应关系由name server负责通知)(不缓存dns最终结果) Name server,维护域名到ip的映射关系。