1. CDN的概念
CDN(Content Delivery NetWork,内容分发网络),是指利用最靠近每位用户的服务区,更快的将资源发送给用户。
- 提高用户的访问速度
- 减轻服务器压力
- 提高网站的稳定性和安全性
2. CDN的作用
CDN一般用来托管Web资源(文本、图片和视频等),可供下载的资源,应用程序。使用CDN来加速这些资源的访问。
- 性能方面:
- 用户可以更快的请求资源
- 资源请求的任务分配给了CDN,减轻了服务器的负载
- 安全方面:
- 防御
DDOS
:通过监控分析异常流量,限制其请求频率 - MITM: 从源服务器到CDN节点到ISP,全链路HTTPS通信
- 防御
中间人攻击(Man-in-the-middle attack,MitM)会在消息发出方和接收方之间拦截双方通讯。举例来说,Wi-Fi 路由器就可以被破解用来进行中间人攻击。
3. CDN的原理
3.1 用户未使用CDN缓存资源的过程
- 浏览器通过DNS对域名进行解析,得到此域名的IP地址
- 浏览器根据IP地址,向域名的主机发送请求数据
- 服务器向浏览器返回响应数据
3.2 用户使用CDN缓存的过程
- 本地DNS系统解析请求的URL,发现URL对应的是一个CDN专用的DNS服务器,DNS系统会将域名解析权交给CNAME指向的CDN专用的DNS服务器
- CDN专用DNS服务器将CDN的全局负载均衡设备IP地址返回给用户
- 用户向CDN的全局负载均衡设备发起数据请求
- CDN全局负载均衡设备根据用户的IP地址,以及用户请求的URL,选择距离用户最近的设备,告诉用户向这台设备发送请求
- 区域负载均衡设备选择一台合适的缓存服务器来提供服务,将该缓存服务器的IP地址返回给全局负载均衡设备
- 全局负载均衡设备吧服务器的IP返回给用户
- 用户向缓存服务器发起请求,缓存服务器返回响应请求。
4. CDN为什么快?
用户访问 CDN 资源时,比如一个图片资源的URL,会先对URL进行域名解析,解析的过程中发现URL是CDN专用DNS服务器,会将DNS解释权交给CNAME指向的CDN专用的DNS服务器。然后找到CDN全局负载均衡系统,然后全局负载均衡系统选择距离我们最近的设备,告诉我们向这台服务器发送请求,区域负载均衡器选择一台合适的缓存服务器来缓存请求,
参考文献
https://cloud.tencent.com/developer/article/1644270
https://www.yuque.com/cuggz/interview/lph6i8#40cbae254f99a3f15afff95e3993b6eb