DNS 是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。
80年底初发明DNS的主要原因是随着互联网上主机数量的不断上升,通过本地的hosts.txt文件找到对方越来越困难,也越来越不可靠 。DNS成功解决了这一问题,总体看很健壮,规模应用的扩展性也很好,也很容易延伸到一些新的领域(如IPv6, E.164)。
作为互联网关键基础设施的DNS,目前仍然存在4个方面的主要问题:
技术方面:RFC1035规定DNS协议基于UDP,最长只能是512字节,全球最多只能有13台根服务器,IP分片难以处理,DNSSEC和IPv6也难以支持等。解决的方案提出了两个,一是虽然做了ENDS0的扩展但实际应用的很少,二是鼓励基于TCP的DNS但可能会带来更大的问题。其他的问题还有缓冲区投毒,无法知道非法的gTLD和ccTLD而导致的根服务器污染,UDP的欺骗攻击,DNSSEC中的根密钥管理和更新问题等,与IPv6共存时DNS串行解析增加的新延迟,利用相似字符进行网络钓鱼等。
实现方面:常用的名字服务器软件(BIND和Windows)历史上有一些可以被利用的安全漏洞,可用来做投毒、中间人攻击和DOS攻击等,尤其是在递归解析时。另外,由于无效TLD、重复解析和源地址错误(如RFC1918)等,根服务器上75%-98%的流量实际上是没必要的,缺少缓存、UDP缺乏循环监测机制和anycast以及超额部署DNS,都污染了DNS。另外,WEB浏览器也喜欢为应用增加一些没法解析的名字上去。
运营方面:如不合格的代理机构,网络的差异性,开放的解析软件,没有SOA,名字服务器复杂的相互依赖,TTL的设置,名字空间的随意扩展,把DNS当作负载均衡技术用等。
注册方面:市场的混乱,无需多言。
下面就DNS的重定向的缺陷,作出如下分析:
这一种路由解决方案,由于充分利用了现有的网络结构,结构简单,因而被人们认为是一种有效的技术,是现阶段CDN 应用中主要采用的路由技术。但是,它的性能瓶颈非常突出。
(1)DNS 重定向的RTT 远大于内容服务器提供内容的RTT。需要花较长的往返时间去定位离用户非常近的内容服务器。重定向的过程包括了访问远端根DNS、重定向DNS 服务器的过程(图6) 。相反,最后访问的内容服务器离用户却很近。显而易见,DNS 重定向耗费的RTT远大于用户访问内容服务器的RTT(图6) 。RTT 成了CDN 性能提高的瓶颈之一。
(2) 当我们提高网络带宽,则缩短了用户请求,到达根DNS ,重定向服务器的时间。DNS 海量数据的查询、重定向DNS 复杂的定位选择过程的延迟,无形中造成了网络性能提高的又一瓶颈。
(3) CDN 是分布式的,而重定向DNS 技术却是中心服务器式的。由于对根DNS 和重定向DNS 的集中访问形成了网络拥塞点,而CDN 的设计目标之一就是避免网络拥塞点,这就形成了矛盾。对服务器的集中访问无疑加重了服务器的负载,进一步导致了数据查询和处理延迟。另外,由于采用中心服务器方式,重定向DNS 技术存在不可靠性。如果通往中心DNS 的链路严重拥塞甚至断开,用户就不能访问与它近邻的内容服务器。
通过以上分析,相信大家已经对DNS有了一个更加深刻认识,这就要读者在学习网络协议时多加注意才是。
【编辑推荐】