DNS
什么是DNS? 在网络访问中有什么作用?
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。
DNS的实现机制
提供DNS服务的是安装了DNS服务器端软件的计算机。服务器端软件既可以是基于类linux操作系统,也可以是基于Windows操作系统的。装好DNS服务器软件后,您就可以在您指定的位置创建区域文件了,所谓区域文件就是包含了此域中名字到IP地址解析记录的一个文件。
网路访问中主机到IP的映射匹配流程
主机名到IP地址的映射有两种方式:
- 静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
- 动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址.
- URL 解析流程
DNS解析的过程中有哪些问题?
- DNS 污染(DNS cache pollution)
DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组(LocalDNS),把域名指往不正确的IP地址。
- LocalDNS缓存时间不可控
PublishDns 中的变更未能及时同步到LocalDNS,其间的同步时间不可控.
例如变更域名的映射IP,同步到LocalDNS还需一定的时间方可生效(主干DNS默认为24h内生效),但二级或自建DNS可动态设置)
- DNS 解析失败
设备使用网络环境中默认的DNS解析失败,或当前DNS出现宕机.
- DNS 查询时间过长
如DNS Cache、Hosts、ISP DNS 都无法提供IP映射,则DNS继续递归进行向上查询,导致查询时间过长。
处理对策及技术方案
告别DNS,直接使用IP地址(携程)
如果是首次发送基于HTTP协议的网路服务,第一件事就是进行DNS域名解析,我们统计过DNS解析成功率只有98%,剩下2%是解析失败或者运营商DNS劫持(Local DNS返回了非源站IP地址),同时DNS解析在3G下耗时200毫秒左右,4G也有100毫秒左右,延迟明显。跳过了DNS解析阶段,使用内置IP列表的方式进行网络连接。内置Server IP列表也会被更新,每次App启动后会有个Mobile Config服务(支持TCP和HTTP两种网络类型服务)更新Server IP列表,同时支持不同产品线的Server IP列表更新。因此,传统DNS解析能够解决多IDC导流的功能也可以通过此方法解决。
使用该方式虽然可以避免DNS解析失败、延迟过长的问题,但同时暴露出无法使用
CNAME
解析动态分配针对区域的访问节点进行解析的最优IP的策略,必须使用本地IP最优选择,导致客户端操作过重.如Server IP提供的服务不稳定、宕机或无法连接的情况下,也会导致无法访问网络的情况。(BGP级机房提供服务则预算过大)
直连Publish DNS 提供解析(万网/阿里巴巴、DNSPOD/腾讯)
使用Publish DNS 提供的SDK进行查询流程.
- DNSPod PublishDNS D+ 解析架构图
Public DNS+在国内三地部署了一级缓存DNS集群节点,每个几点都由多台万兆服务器组成四层负载均衡,统一使用同一个服务IP 119.29.29.29,通过BGP Anycast与全国TOP16的运营商进行对等互联,保证用户接入最近的节点。一级缓存负责接收和应答用户的DNS查询请求,并对未命中缓存的域名转发到二级缓存进行查询。
二级缓存的主要作用是接收一级缓存转发过来的DNS查询请求,并根据用户IP将该请求转发至对应的后端递归节点,接受递归节点的DNS应答返回到一级缓存;二是为多台一级缓存服务器提供缓存服务,减轻后端递归节点的压力,并提升应答速度。
后端递归节点部署在各个省份运营商线路内,当域名的授权DNS支持ECS协议时,可以提供更准确的解析,未部署递归节点的省份运营商会将域名解析请求优先调度到相邻省份相同运营商进行解析。
一级缓存、二级缓存和递归DNS都为自研高性能解析程序,并支持ECS协议,保证用户可以获得快速、准确、稳定的DNS解析服务。
HTTPDns 和 LocalDNS 混合方式
HttpDNS只是对域名解析提供了优化的方案,但考虑PublishDNS无法访问或查询无结果的情况下进行容错策略, DNSPod提供了如下解决方案:
保证 HttpDNS 和 LocalDNS的配合使用,降低解析错误率.
HTTPDNS + LocalDNS + ServerList 混合模式
本地定义ServerList列表,该列表的IP地址上通过DNS解析后进行添加.如遇DNS无法解析或直接通过域名无法连接到服务端的情况,进行ServerList中IP的轮询连接,进一步降低解析错误.
内容分发网络 CDN
什么是CDN? 在网络访问中有什么作用?
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
- CDN 响应流程
当用户访问已经加入CDN服务的网站时,首先通过DNS重定向技术确定最接近用户的最佳CDN节点,同时将用户的请求指向该节点。当用户的请求到达指定节点时,CDN的服务器(节点上的高速缓存)负责将用户请求的内容提供给用户。具体流程为: 用户在自己的浏览器中输入要访问的网站的域名,浏览器向本地DNS请求对该域名的解析,本地DNS将请求发给网站的主DNS,主DNS根据一系列的策略确定当时最适当的CDN节点,将解析的结果(IP地址)发给用户,用户向给定的CDN节点请求相应网站的内容。
CDN的使用有哪些优缺点?
优点:
- 服务器分发的文件更少.从而节约带宽.
- 响应更快
缺点:
缓存更新不及时针对缓存更新不及时的情况,可以通过用户操作较低的时段进行发布并向CDN推送同步Action,避免中高峰时段进行同步更新时数据不同步的情况.
回源时间过长同上,进行强制同步操作.
现有的CDN解决方案及价格
七牛云- 融合CDN
网页静态资源优化加速分发
- 全站 HTTPS 保证网站访问安全
- TCP 压缩优化使网页大图、样式等完成秒级加载
- 配合七牛云-图片处理服务一起使用,还可以针对图片进行缩略、打水印,转格式等数据处理服务。
大文件下载优化加速分发
- 分段缓存技术提高了大文件下载传输的稳定性
- 配合七牛云-存储服务一起使用,可有效降低回源和存储成本
音视频点播优化加速服务
- 牛融合 CDN 利用 BGP 网络中间源技术降低回源带宽压力节省了用户回源成本、分段预取技术使用户在浏览音视频时更加的流畅,高级防盗链技术有效防止用户文件被盗用
- 配合七牛云-数据处理服务,还可以进行音视频转码、转格式、压缩等数据处理服务。
百度 – 内容分发网络CDN
- 支持缓存策略、缓存key计算、回源、视频、防盗链、HTTPS等相关的配置
- 配置实时下发至全网,相关修改与操作分钟级别即可生效
- 丰富的数据分析,提供带宽流量、请求次数、访客分析、运营商分布分析等等业务全景数据报表