CDN原理


面试的时候搞混了CDN和DNS(好吧,我是个小菜鸡)。以此篇文章重新构建一下我的知识体系。

CDN原理

CDN是将源站内容分发至全国所有节点,从而缩短用户查看对象的延迟,提高用户访问网站的响应速度与网站的可用性的技术。它可以有效解决网络带宽小,用户访问量大,网点分布不均等问题。

CDN称为“内容分发网络”,源站内容(image、html、js、css等)这个属于内容分发。

为什么有CDN?

互联网应用包含大量的静态内容,这些内容又是最容易耗费带宽的,特别是针对全国甚至全世界的大型站点,如果这些请求都指向主站的服务器的话,不仅是主站服务器受不了,单端口500M左右的带宽也扛不住,所以大多数网站都需要CDN服务。
其实主要原因是:访问速度对互联网应用的用户体验、口碑、甚至说直接的营收都有很大的影响,任何企业都渴望自己的站点有更快的访问速度。而HTTP传输时延对WEB的访问速度的影响很大,这是由于TCP/IP协议的一些特点决定的。物理层面光速有限、信道有限,协议上的原因有丢包、慢启动、拥塞控制等。

其他作用

  • 为了实现跨运营商、跨地域的全网覆盖;
  • 为了保障你的网站安全:CDN采用负载均衡和分布式存储技术,加强网站的可靠性,相当于无形中给你的网站添加了一把保护伞,可应对绝大部分的互联网攻击事件;
  • 为了异地备援:当某个服务器故障时,系统会调用临近的服务器节点进行服务;

原理

通俗原理
通过域名解析IP地址:

通过域名解析IP地址

  • 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS 系统会最终将域名的解析权交给 CNAME 指向的 CDN 专用 DNS服务器。
  • CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户。
  • 用户向 CDN 的全局负载均衡设备发起内容URL 访问请求。
  • CDN 全局负载均衡设备根据用户 IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
  • 基于以下这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址:
  • 根据用户 IP地址,判断哪一台服务器距用户最近;
  • 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;
  • 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。
  • 全局负载均衡设备把服务器的 IP 地址返回给用户。
  • 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
    DNS 服务器根据用户 IP 地址,将域名解析成相应节点的缓存服务器IP地址,实现用户就近访问。使用 CDN 服务的网站,只需将其域名解析权交给 CDN 的全局负载均衡(GSLB)设备,将需要分发的内容注入 CDN,就可以实现内容加速了。

适用场景

  • 网站站点/应用加速:static内容加速,静态内容加速:html、image、js、css等;
  • 视音频点播/大文件下载分发加速:视频点播;
  • 视频直播加速;
  • 移动应用加速:移动APP更新文件分发,移动APP内图片、页面、短视频等内容的优化加速分发;

流量劫持

其实CDN本身就是一种DNS劫持,只不过是良性的。不同于黑客强制DNS把域名解析到自己的钓鱼IP上,CDN则是让DNS主动配合,把域名解析到临近的服务器上。

写在最后:文章内容来源于奇哥的:《CDN原理简单介绍》一文

### CDN 工作原理 CDN(Content Delivery Network,内容分发网络)的核心目标是通过分布式节点存储和传递静态资源,从而减少延迟并提高用户体验。其主要功能可以通过以下几个方面理解: #### 1. **静态资源缓存机制** 静态资源被缓存到CDN节点的过程依赖于HTTP协议中的缓存控制头字段。当用户首次请求某个未缓存的资源时,CDN节点会向源站发起请求获取该资源,并将其保存在本地缓存中[^1]。随后,在有效期内,其他用户的相同请求可以直接由最近的CDN节点返回而无需再次回源。 #### 2. **最优节点选择** 为了确保用户获得最快的内容交付速度,全局负载均衡DNS起到了关键作用。它基于地理位置、网络状况等因素动态计算离用户物理距离较近或者链路质量较好的CDN节点作为响应方[^5]。这种技术不仅提升了访问效率,也减轻了单点服务器的压力。 #### 3. **防盗链保护措施** 为了避免未经授权使用带宽造成经济损失,大多数商业化的CDN解决方案提供了丰富的防盗链手段,比如设置Referer验证规则、时间戳签名认证等方法来识别合法请求者身份。 ### 如何配置与使用CDN 实施CDN服务一般涉及几个重要环节: - #### 域名接入 用户需将自己的网站域名绑定至所选服务商提供的CNAME记录上完成初始连接操作。 - #### 缓存策略定制化调整 根据业务特点制定合理的缓存有效期参数;针对不同类型的文件设定差异化的刷新频率以优化整体表现效果[^4]。 - #### 安全防护选项启用 开启必要的HTTPS加密通道保障数据传输过程的安全性的同时也可以考虑集成WAF(Web Application Firewall)进一步增强抵御恶意攻击的能力[^3]。 ```python import requests def fetch_resource(url, headers=None): """ A simple function to demonstrate fetching a resource via Python with optional custom headers. This could be used when configuring or testing your CDN setup. Args: url (str): The URL of the resource you want to access through the CDN. headers (dict, optional): Custom HTTP request headers such as 'Host', 'Referer'. Defaults to None. Returns: str: Content fetched from the given URL after being processed by the CDN. """ response = requests.get(url, headers=headers) if response.status_code == 200: return response.text else: raise Exception(f"Failed to retrieve content: {response.status_code}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值