DNS原理和智能DNS及CDN
CDN是什么
CDN(Content Delivery Network)是内容分发网络。
作用:
使用户可以就近取的所需要的内容,加速用户访问网站资源的速度。物理距离更近,响应速度更快。拦截部分网络请求,对主站分流作用,减轻了主站的负载。
CDN= 更智能的镜像 + 缓存 + 流量导向
原理:
利用部署大量网络节点,通过服务器缓存加速,让用户可以就近同运营商网络,更快的访问网络资源。
常用使用场景:
1.视频网站视频加速。
2.图片网站,图床。缓存静态资源如各类型图片、html、css、js文件。
3.大文件下载,获得更快的下载速度。
CDN关键技术:
1. 缓存算法
缓存算法决定命中率、源服务器压力、POP节点存储能力。
2. 分发能力。
分发能力取决于互联网数据中心(IDC)能力和IDC策略性分布。
3. 负载均衡。
负载均衡(智能调度)决定最佳路由、响应时间、可用性、服务质量。
4. 基于DNS[BIND])。
5. 支持协议。
支持协议如静动态加速(图片加速、https带证书加速)、下载加速、流媒体加速、企业应用加速、手机应用加速等。
DNS是什么
DNS(Domain Name System)域名系统,域和名是分开的是指两个东西,是可以根据域名查出其对应的IP地址的一种服务。域名是由点,字母和数字组成,点分割不同的域。
域名是分层的,可分为不同级别,包括顶级域名、二级域名、三级域名、注册域名等。
域名是不区分大小写的,如下图。
我们可以在linux系统中用dig命令来查看。如果是centos系统没有该命令可以使用 yum install bind-utils 来安装。
当然也可以通过一些其他工具查看,比如站长工具DNS域名查询 http://tool.chinaz.com/dns
DNS缓存
现代有些浏览器也会自带DNS服务,比如谷歌浏览器,在谷歌浏览器输入命令chrome://net-internals/#dns
Chrome 为了加快网页的加载速度,会对 DNS 进行缓存以节省 DNS 解析的时间,上图就缓存了很多DNS信息。
还有的时候为了了解全国各个地区对域名的解析速度,有个网站可以提供监测服务:https://www.boce.com
上图就是监测对域名各个区域的速度,这样当你发布的网站系统对全国各个区域来说用户所访问的速度有一定的参照,为后期网站系统的优化也有一定的帮助。
智能DNS:
智能DNS比传统DNS更好的地方就是能够基于IP信息给不同的用户最合适的服务器IP,可以给用户提供更好的网络服务。
作用:
1.通过减少地理上的链路距离来减少访问服务的延时。
2.静态资源CDN加速。
3.负载均衡,比如北京的用户访问服务会自动跳转到北京的服务器,减少服务器压力。
4.防止DDOS攻击。
缺陷:
1.成本增加,比如硬件成本,维护成本。
2.不支持配套failed over应用检测机制,比如有一台服务器宕机了,但是智能DNS还会把请求发送给这台已经宕机的服务器。不能实时切换服务。
3.准确性欠缺。
智能DNS实现原理
如下图所示
图中
CNT: 电信运营商缩写 CNU :联通缩写 CNM :移动缩写
Local DNS:用户所在区域的DNS,也是用户首先访问的,负责缓存DNS相关信息。
DNS扩展协议EDNS
EDNS就是在遵循已有的DNS消息格式的基础上增加一些字段,来支持更多的DNS请求业务。
DDNS
动态域名解析(Dynamic DNS,简称DDNS)是把互联网服务原理名指向可变IP地址的系统。
DNS优化(DNS 缓存)
DNS查询的过程经历了很多的查询步骤,如果每次DNS解析的话都要重新查询就会耗费太多的时间和资源。所以我们应该尽早的返回真实的 IP 地址,减少查询过程,也就是 DNS 缓存。
DNS劫持
域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。那么如何预防DNS劫持呢?下面看看HTTPDNS。
HTTPDNS
HTTPDNS 就是利用 HTTP 协议与 DNS 服务器交互,代替了传统的基于 UDP 协议的 DNS 交互,绕开了运营商的 Local DNS,可以防止了域名劫持。
CNAME
CNAME(Canonical Name) 别名记录。允许您将多个名字映射到另外一个域名。