目录
一、什么是cdn
二、使用cdn带来的好处
三、CDN工作原理
四、cdn使用场景
五、流媒体CDN之防盗链问题
CDN(Content Delivery Network)是一种分布式网络架构,用于提供高效的内容分发服务。CDN通过将内容缓存在离用户最近的节点上,以降低用户访问内容时的延迟和提高性能。CDN通过在全球范围内部署服务器节点,使用户能够从就近的节点获取内容,从而减少了传输距离和网络拥塞,提供更快的访问速度和更稳定的用户体验。
这里举个例子吧,比如你某东上下了个订单,你所购买的东西一定要从电商总部的中心仓库送过来吗?可能原来基本是这样的,每一单都是单独配送,所以你可能要很久才能收到你的宝贝。但是后来电商网站的物流体系完善后,他们在全国各地建立了很多仓库,而不是只有总部的中心仓库才可以发货。这些物品用不着从中心仓库发出,所以平时就可以将它们分布在各地仓库里,客户一下单,就近的仓库发出,有时候快的话可能当天就可以收到了。
网站使用CDN网站加速有什么好处总结如下
1、缩短主机之间访问时信息传递的距离,达到加速效果;
2、分发至不同线路的节点后可以让不同线路的访问者在访问时提升实际的响应速度;
3、分发后的不同节点IP地址不同,而且会自然地隐藏掉源寄存源主机的真实IP,这样可以防止一些恶意攻击,达到安全保护效果。
当用户访问支持CDN的网站时,他们可以在加载速度方面得到显着改善,同样提高了用户使用体验。
客户端请求如何找到相应的边缘节点进行访问呢?
用户向浏览器输入 www.web.com 这个域名,客户端访问本地 DNS 服务器的时候,如果本地 DNS 服务器有缓存,则返回网站的地址;如果没有,递归查询到网站的权威 DNS 服务器,在 web.com 这个权威 DNS 服务器上,会设置一个 CNAME 别名,指向另外一个域名 www.web.cdn.com,返回给本地 DNS 服务器
当本地 DNS 服务器拿到这个新的域名时,需要继续解析这个新的域名。访问 web.cdn.com 的权威 DNS 服务器,这是 CDN 自己的权威 DNS 服务器。在这个服务器上,还是会设置一个 CNAME,指向另外一个域名,也即 CDN 网络的全局负载均衡器。接下来,本地 DNS 服务器去请求 CDN 的全局负载均衡器解析域名,全局负载均衡器会为用户选择一台合适的缓存服务器提供服务
选择的依据包括:
1、根据用户 IP 地址,判断哪一台服务器距用户最近;
2、用户所处的运营商;
3、根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需的内容;
4、查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。
基于以上这些条件,进行综合分析之后,全局负载均衡器会返回一台缓存服务器的 IP 地址。
本地 DNS 服务器缓存这个 IP 地址,然后将 IP 返回给客户端,客户端去访问这个边缘节点,下载资源。缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
CDN应用广泛,支持多种行业、多种场景内容加速,例如:图片小文件、大文件下载、视音频点播、直播流媒体、全站加速、安全加速。
产生原因:视频是要花大价钱买版权的,为了挣点钱,收点广告费,如果流媒体被其他的网站盗走,在人家的网站播放,那损失可就大了。
如何解决呢?
最常用也最简单的方法就是 HTTP 头的 referer 字段, 当浏览器发送请求的时候,一般会带上 referer,告诉服务器是从哪个页面链接过来的,服务器基于此可以获得一些信息用于处理。如果 refer 信息不是来自本站,就阻止访问或者跳到其它链接。
referer 的机制相对比较容易破解,那还有什么更好的机制来保障吗?
答案是有的,一种常用的机制是时间戳防盗链。
如何实现时间戳防盗链?
1、使用 CDN 的管理员可以在配置界面上,和 CDN 厂商约定一个加密字符串。
2、客户端取出当前的时间戳,要访问的资源及其路径,连同加密字符串进行签名算法得到一个字符串,然后生成一个下载链接,带上这个签名字符串和截止时间戳去访问 CDN。
3、在 CDN 服务端,根据取出过期时间,和当前 CDN 节点时间进行比较,确认请求是否过期。然后 CDN 服务端有了资源及路径,时间戳,以及约定的加密字符串,根据相同的签名算法计算签名,如果匹配则一致,访问合法,才会将资源返回给客户。