什么是DNS?
域名系统DNS(Domain Name System),他由三部分组成(名称解析器,域名空间,名称服务器),他是一个分布式数据库,功能是联系域名和ip地址,域名和ip对应,被称为记录,可分为以下几种类型:
(1)A: Address,域名指向的IP地址,一个域名可以有多个A记录
(2)NS:Name Server,保存下一级域名信息的服务器地址
(3)CNAME:Canonical Name,返回另一个域名,令当前查询域名挑去该域名,多个域名->服务器的映射
(4)PTR: Pointer Record,只用于ip地址查询域名
DNS的查询过程:
假设我们输入www.baidu.com 这个域名怎么查出ip来的呢?
1.检查浏览器缓存
2.检查操作系统缓存,一般常见的是hosts文件,我们配置自定义域名也是在这里面配置
3.检查路由缓存
4.以上没找到会去ISP(网络服务提供商)的LDNS服务器上查找
5.如果LDNS上也没找到,会向根域名服务器请求解析(Root server)
根域名服务器解析过程:
第一步:根服务器返回顶级域名(TLD)类似于百度的.com 其他如.cn .org
第二步:向顶级域名(TLD)发送请求,返回次级域名(SLD),如baidu
第三步:接着像次级域名(SLD)域名服务器通过域名查询目标IP ,例子返回:www.baidu.com
第四步:local DNS server 本地DNS服务器会缓存结果,缓存在系统中,并返回给用户
从上面看出DNS的解析过程是非常繁琐的前端的优化也是必要的主要方式:
1.DNS Prefetching(DNS的预处理)
用户在请求某个链接之前,浏览器先尝试解析该链接的域名再将其进行缓存。这样真正请求的时候就不需要进行DNS解析。
(一)在服务器中响应设置X-DNS-Prefetch-Control
的值为on
启动预解析
(二)前端页面头部设置HTML中,
(三)对特定域名预解析
2.域名收敛
搭建前端项目时候建议把所有的资源都放到一个域名下面
3.httpdns
基于Http协议向HTTPDNS服务器发送域名解析请求,替代了基于DNS协议向运营商Local DNS发起解析请求的传统方式,可以避免运营商的域名劫持和进行精准调度。
这过程分为两步:
客户端直接访问HttpDNS接口,获取业务在域名配置管理系统上配置的访问延迟最优的IP。(基于容灾考虑,还是保留次选使用运营商LocalDNS解析域名的方式)
客户端向获取到的IP后就向直接往此IP发送业务协议请求。以Http请求为例,通过在header中指定host字段,向HttpDNS返回的IP发送标准的Http请求即可。
DNS安全问题
DNS反射/放大攻击 向大量开放DNS服务器发送大范围域名查询的DNS请求,并将该DNS请求的源IP地址伪造成想要攻击的目标IP地址。由于请求数据比相应数据小得多,攻击者可以利用该技术放大掌握的带宽资源和攻击流量。
DDOS攻击可能造成域名解析瘫痪
DNS/域名劫持 在劫持的网络范围内拦截域名解析的请求,分析请求的域名,返回假的IP地址或者使请求失去响应。DNS劫持通过篡改DNS服务器上的数据返回给用户一个错误的查询结果来实现的。
DNS污染 DNS污染是一种让一般用户由于得到虚假目标主机IP而不能与其通信的方法,指的是用户访问一个地址,国内的服务器(非DNS)监控到用户访问的已经被标记地址时,服务器伪装成DNS服务器向用户发回错误的地址的行为。
dns污染与dns劫持的区别在于,dns劫持修改了dns的解析结果,dns污染是不经过dns服务器,返回错误信息
DNS信息黑客被修改
什么事CDN
CDN的全称是Content Delivery Network,即内容分发网络,它能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
(1)分发服务系统
最基本的工作单元就是Cache设备,cache(边缘cache)负责直接响应最终用户的访问请求,把缓存在本地的内容快速地提供给用 户。同时cache还负责与源站点进行内容同步,把更新的内容以及本地没有的内容从源站点获取并保存在本地。Cache设备的数量、规模、总服务能力是衡 量一个CDN系统服务能力的最基本的指标
(2)负载均衡系统
主要功能是负责对所有发起服务请求的用户进行访问调度,确定提供给用户的最终实际访问地址。两级调度体系分为全局负载均衡(GSLB)和本 地负载均衡(SLB)。GSLB主要根据用户就近性原则,通过对每个服务节点进行“最优”判断,确定向用户提供服务的cache的物理位置。SLB主要负 责节点内部的设备负载均衡
(3)运营管理系统
分为运营管理和网络管理子系统,负责处理业务层面的与外界系统交互所必须的收集、整理、交付工作,包含客户管理、产品管理、计费管理、统计分析等功能。
CDN的使用:
只需要修改自己的DNS解析,设置一个CNAME指向CDN服务商即可
用户访问未使用CDN缓存资源的过程为:
使用CDN后
区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。
全局负载均衡设备把服务器的IP地址返回给用户
用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
CDN的优点 这样做有什么好处呢? 本地Cache加速,加快访问速度 镜像服务,消除运营商之间互联的瓶颈影响,保证不同网络的用户都能得到良好的访问质量 远程加速,自动选择cache服务器 带宽优化,分担网络流量,减轻压力, 集群抗攻击 节约成本