现在互联网用户很多不能理解CDN和DNS之间的关系,他们之间到底有什么区别。对于这两者永远处于模糊的概念。其实二者是相辅相成的,二者搭配起来能使网站更加安全,快速。

用户访问未使用CDN缓存网站的过程为:

1、用户向浏览器提供要访问的域名;

2、浏览器向本地DNS查询该域名的IP地址;

3、本地DNS向13根发起请求;

4、根服务器再向本地服务器返回一级服务器;

5、一级服务器把所授权的权威DNS返回给本地DNS,权威DNS服务器将IP地址作为解析结果送给本地DNS解析服务器;

6、本地DNS解析服务器把IP地址返回给用户,从而完成一个解析过程

使用了CDN缓存后的网站的访问过程变为:

1、用户向浏览器提供要访问的域名;

2、浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。

3、此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;

4、缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;

5、缓存服务器从实际IP地址得得到内容以后,一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程;

6、客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。

实现CDN的主要技术手段是高速缓存、镜像服务器。可工作于DNS解析或HTTP重定向两种方式,通过Cache服务器,或异地的镜像站点完成内容的传送与同步更新

CDN网络架构主要由两大部分,分为中心和边缘两部分,中心指CDN网管中心和DNS重定向解析中心,负责全局负载均衡,设备系统安装在管理中心机房,边缘主要指异地节点,CDN分发的载体,主要由Cache和负载均衡器等组成。当用户访问加入剑盾高防CDN服务的网站时,域名解析请求将最终交给全局负载均衡DNS进行处理。全局负载均衡DNS通过一组预先定义好的策略,将当时最接近用户的节点地址提供给用户,使用户能够得到快速的服务。同时,它还与分布在世界各地的所有CDNC节点保持通信,搜集各节点的通信状态,确保不将用户的请求分配到不可用的CDN节点上,实际上是通过DNS做全局负载均衡。大家对自己的网络安全防护都有不同的需求,有的需要网站加速,有的需要防护DDOS或CC攻击等,因为CDN服务本身并不具备DNS解析功能,而是依托于DNS智能解析功能,可能大家有时候会想,我接入剑盾高防CDN只是为了网站加速,用不到防护啊,但当你的网站突然间遭受到来历不明的攻击时,CDN不仅可以帮我们率先挡住攻击保障我们的用户体验,同时可以通过数据报告让我们了解攻击方的来历,让我们有效的防患于未然!

每个CDN节点由两部分组成:负载均衡设备和高速缓存服务器

负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时,负载均衡设备还负责收集节点与周围环境的信息,保持与全局负载DNS的通信,实现整个系统的负载均衡。

很多用户都想要自己的IP不暴露出来,由于单纯只使用DNS解析,直接PING就会显示出自己的真实IP,如果又使用CDN,PING出来的IP就不是用户的真实IP而是CDN服务器的IP节点,导致用户有了一种想法,就是觉得DNS完全没有用处,只要使用CDN就可以,因为遭受攻击也不是攻击自己的真实IP.这个想法其实完全错误的。

由DNS根据用户所在地、所用线路进行智能分配最合适的CDN服务节点,然后把缓存在该服务节点的静态缓存内容返回给用户.所以在启用CDN后进行ping查询时IP发生了变化,是因为此时返回的是DNS根据用户所在网络和服务器情况等智能适配后得出的最佳CDN服务节点IP而并真实服务器。

如有任何问题或需要,欢迎大家在评论区留言或私信,我会尽快回复大家!

作者:|WilliamCZH827|,原文链接: https://segmentfault.com/a/1190000043585603

文章推荐

Kafka关键原理

8张图带你全面了解kafka的核心机制

聊一聊模板方法模式

ubuntu20安装docker、redis、mysql及部署net6应用

对dubbo的DubboReference.check的参数进行剖析

从一道面试题来学习前台进程和后台进程、孤儿进程和僵尸进程

Java 框架面试题-Spring Boot自定义配置与自动配置共存

【JAVA】JDK11新特性个人分析

在Java中,使用HttpUtils实现发送HTTP请求

【JS 逆向百例】某音 X-Bogus 逆向分析,JSVMP 纯算法还

ConfigurationManager姿势快闪

在项目中如何直接使用hystrix?