DNS解析

519 阅读3分钟

1. DNS解析过程

1.1 DNS解析过程示意图

1.2 过程描述

  • 检查本地浏览器是否有该域名与IP的映射关系,如果有,直接返回IP地址,如果没有则继续;
  • 检查本地系统是否有该映射关系,如果有直接返回,如果没有则继续;
  • 到本地域名服务器去查询,如果有直接返回,如果没有则继续;
  • 本地域名服务器发送请求到根服务器,根服务器不会返回映射关系,只会告诉本地域名服务器顶级域名服务器的地址(.com服务器);
  • 接着本地域名服务器到顶级域名服务器去查询,顶级域名服务器返回二级服务器(.google.com)的地址;
  • 然后本地服务器继续向三级服务器发起请求,三级服务器如果返回映射关系,则本地服务器缓存该映射关系,同时返回发给该计算机,该计算机及客户端缓存映射关系;如果没有则报错。

2. 加入CDN之后的过程

2.1 CDN概述

CDN解决的问题是在网络中增加一层CACHE(缓存)层,将源站的资源分发到距离用户最近的网络"边缘"节点上,使用户就近访问内容,提高网站响应速度。当前cdn技术应用比较普遍。一些有实力的大公司,有自己的cdn研发团队,提供cdn技术支持。但是大多数公司都使用一些专门的CDN厂商提供的服务,如腾讯云、阿里云、蓝汛等。

2.2 过程描述

  • DNS解析过程如果本地没有缓存,会根据1.2的过程访问到顶级服务器,顶级服务器查询到有做过CDN加速配置,cname到example.cdn.com,并返回负载均衡(GSLB)地址;
  • 本地域名服务器向第一层GLSB发起请求,第一层GLSB会根据用户所在运营商,比如移动运营商,cname到yd.example.cdn.com域名地址;
  • 本地域名服务器继续向第二层GLSB发起请求,第二层GLSB根据用户所在地理位置分析,返回CDN地址节点ip;
  • 本地DNS服务器根据轮询方式从多个ip重选择一个ip进行访问;

3. 本地DNS缓存时间

3.1 系统缓存

3.1.1 windows系统

windows DNS缓存的默认值是 MaxCacheTTL,见这里,它的默认值是86400s,也就是一天。它是TTLu 这篇文章列出了一些浏览器的DNS缓存时间。

3.1.2 macOS系统

macOS 严格遵循DNS协议中的TTL

3.2 浏览器的DNS缓存

3.2.1 Google浏览器

为了加快访问速度,Google Chrome浏览器采用了预提DNS记录,在本地建立DNS缓存的方法,加快网站的连接速度。

chrome://net-internals/#dns 这里可以看各域名的DNS 缓存时间。chrome对每个域名会默认缓存60s。

3.2.2  IE浏览器

IE将DNS缓存30min。见这里

3.2.3 firefox

Firefox有dns缓存功能,但是默认缓存时间只有1分钟,可以通过修改该默认值加快DNS解析速度,方法如下:

打开一个新的窗口,地址栏输 入 about:config,回车,进入设置界面。然后搜索 network.dnsCacheExpiration ,把原来的60改成 6000(表示缓存6000秒),再搜索network.dnsCacheEntries 把默认的20改成1000(表示缓存1000条)。如果没 有上面两个项目,新建它们即可,

新建条目类型为整数型。 当然也可以按照需要设置成其它的值。

3.2.4 safari

约为10s

转自:blog.csdn.net/charleslei/…