之前我们粗略讲过DNS解析的过程,当用户访问某个域名后,会请求递归解析服务器,如果递归服务器有结果直接返回给客户;如果没有结果,递归解析服务器会代替客户端发起全球查询,直到获取到权威解析记录返回给客户。 但在实际的解析过程中,并不是客户端的每一次访问都需要委托递归服务器进行迭代查询,而是先搜索浏览器自身的DNS缓存,如果有,解析到此为止;如果DNS缓存中没有结果就会读取操作系统中的HOSTS文件查找对应的映射关系,如果有到此完成;如果没有,再请求递归服务器,进行全球递归查询。从中我们可以看出DNS缓存是获取域名解析记录的第一步骤。 DNS缓存有哪些作用?DNS域名系统给应用访问带来了额外的时延,另外由于DNS域名解析采用不可靠的UDP协议通讯,受内外部网络环境的影响较大,特别是在有丢包的情况下,导致的时延可能达到数秒。为缓解此问题,DNS解析采用了缓存机制。 在客户第一次访问之后,递归服务器和客户端都会缓存到该域名的解析记录,并设置相应的缓存生存时间(TTL),在TTL有效期内,客户再次对同域名发起访问时,直接通过客户端本地和本地DNS服务器高速缓存解析,不再需要经过迭代查询过程。DNS缓存可极大提升DNS域名解析的效率,一定程度上减少了客户端到用户之间环境对DNS域名解析的影响。 DNS缓存的缺点在于它需要消耗一定的系统资源,增加了域名系统的复杂性。尤其是TTL值的设置对于平衡DNS解析准确性和稳定性产生了较大影响。如果TTL值过短,则会导致频发发起解析请求,对解析服务器造成较大压力;而如果TTL过长,则可能导致域名变更时客户访问恢复时间过长。 DNS缓存使用中的问题DNS缓存省去了冗长的全球递归查询阶段,极大提升了解析和访问速度,可以让用户获得更快更好的访问体验。但如果DNS缓存设置使用不当,也会给用哪个户访问体验带来负面影响,甚至影响到用户的正常业务访问。(1)缓存刷新不受控 当企业的域名发生变更时,并没有办法刷新全球各地的递归服务器缓存以及客户端上的DNS缓存,因此在每个缓存TTL值超时之前,客户发起请求仍然会按照缓存记录的原有映射关系发起请求,这就可能会出现站点不可达或者访问到错误的网站。只有等递归服务器和客户端上的DNS缓存失效后,才能重新发起请求,得到最新的映射关系。 (2)解析权和缓存值被修改 一些小运营商出于规模、节约成本的考虑,将域名转发到其他运营商进行解析,并把收到的域名缓存值更改为较长的值,这会带来两个方面的问题: 一是,权威DNS接收到的请求IP地址不是客户所在运营商IP地址,客户的请求可能会被引导至错误的线路,导致客户访问慢; 二是,企业域名发生改变后将等待更长的超时时间才能正常访问业务,同样会给客户带来较差的体验。 转载请注明原文网址:http://www.13801256026.com/pgsp/pgsp/6813.html |