浅谈下cdn以及防盗链问题

news2024/11/27 10:20:53

目录

一、什么是cdn

二、使用cdn带来的好处

三、CDN工作原理

四、cdn使用场景

五、流媒体CDN之防盗链问题


一、什么是cdn

CDN(Content Delivery Network)是一种分布式网络架构,用于提供高效的内容分发服务。CDN通过将内容缓存在离用户最近的节点上,以降低用户访问内容时的延迟和提高性能。CDN通过在全球范围内部署服务器节点,使用户能够从就近的节点获取内容,从而减少了传输距离和网络拥塞,提供更快的访问速度和更稳定的用户体验。

二、使用cdn带来的好处

这里举个例子吧,比如你某东上下了个订单,你所购买的东西一定要从电商总部的中心仓库送过来吗?可能原来基本是这样的,每一单都是单独配送,所以你可能要很久才能收到你的宝贝。但是后来电商网站的物流体系完善后,他们在全国各地建立了很多仓库,而不是只有总部的中心仓库才可以发货。这些物品用不着从中心仓库发出,所以平时就可以将它们分布在各地仓库里,客户一下单,就近的仓库发出,有时候快的话可能当天就可以收到了。

网站使用CDN网站加速有什么好处总结如下

1、缩短主机之间访问时信息传递的距离,达到加速效果;

2、分发至不同线路的节点后可以让不同线路的访问者在访问时提升实际的响应速度;

3、分发后的不同节点IP地址不同,而且会自然地隐藏掉源寄存源主机的真实IP,这样可以防止一些恶意攻击,达到安全保护效果。

当用户访问支持CDN的网站时,他们可以在加载速度方面得到显着改善,同样提高了用户使用体验。

三、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使用场景

CDN应用广泛,支持多种行业、多种场景内容加速,例如:图片小文件、大文件下载、视音频点播、直播流媒体、全站加速、安全加速。

五、流媒体CDN之防盗链问题

产生原因:视频是要花大价钱买版权的,为了挣点钱,收点广告费,如果流媒体被其他的网站盗走,在人家的网站播放,那损失可就大了。

如何解决呢?

最常用也最简单的方法就是 HTTP 头的 referer 字段, 当浏览器发送请求的时候,一般会带上 referer,告诉服务器是从哪个页面链接过来的,服务器基于此可以获得一些信息用于处理。如果 refer 信息不是来自本站,就阻止访问或者跳到其它链接。

referer 的机制相对比较容易破解,那还有什么更好的机制来保障吗?

答案是有的,一种常用的机制是时间戳防盗链。

如何实现时间戳防盗链?

1、使用 CDN 的管理员可以在配置界面上,和 CDN 厂商约定一个加密字符串。

2、客户端取出当前的时间戳,要访问的资源及其路径,连同加密字符串进行签名算法得到一个字符串,然后生成一个下载链接,带上这个签名字符串和截止时间戳去访问 CDN。

3、在 CDN 服务端,根据取出过期时间,和当前 CDN 节点时间进行比较,确认请求是否过期。然后 CDN 服务端有了资源及路径,时间戳,以及约定的加密字符串,根据相同的签名算法计算签名,如果匹配则一致,访问合法,才会将资源返回给客户。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/968932.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VLDB 2023 | CDSBen: 字节跳动 veDB 数据库存储系统性能测试模型

背景 随着业务爆炸式增长与云原生技术的日渐成熟,大量云原生分布式数据库产品如雨后春笋般涌现,其中一部分主打 OLTP 场景的分布式数据库强调的是从计算-存储分离架构获得弹性收益;对于业界各种计算-存储分离架构的数据库而言,怎么…

3环断链以及断链后的检测方法

3环断链以及断链后的方法 我们在3环注入代码很多时候会选择注入dll,因为纯粹的硬编码不方便写出大量功能,而且不容易维护所以很多时候我们会通过各种方式让我们的dll注入到目标地址空间中,其中有一些方式可以不需要我们自己对dll处理重定位而…

C语言每日一练--Day(15)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:珠玑妙算 两数之和 💓博主csdn个人主页:小小uni…

Docker安装MySQL教程

虽然 docker 安装 mysql 不是一个很好的方案,但是为了个人使用方便,使用 docker 安装 mysql 还是没什么问题的。 本文为了方便,我们直接通过yum方式安装。所以,我们在安装之前需要电脑可以联网,不然我们这种方式是安装…

ASP.NET Core 中的 MVC架构

MVC 架构 MVC架构把 App 按照逻辑分成三层: Controllers,接收 http request,配合 model,通过http response 返回 view,尽量不做别的事Models, 负责业务逻辑,App 的状态,以及数据处理Views&…

数学建模--Seaborn库绘图基础的Python实现

目录 1.绘图数据导入 2. sns.scatterplot绘制散点图 3.sns.barplot绘制条形图 4.sns.lineplot绘制线性图 5.sns.heatmap绘制热力图 6.sns.distplot绘制直方图 7.sns.pairplot绘制散图 8.sns.catplot绘制直方图 9.sns.countplot绘制直方图 10.sns.lmplot绘回归图 1.绘图数…

【C++】原子类型非线程安全

原子类型非线程安全 #include <iostream> #include <thread>int main() {int num 0;int count 100000;std::thread thread1([&](){for(int i 0; i < count; i){num;}});std::thread thread2([&](){for(int i 0; i < count; i){num;}});std::thr…

数学建模--多项式拟合方法Python实现

目录 1.算法设计思路 2.算法核心代码 3.算法效果展示 1.算法设计思路 算法关键步骤:(主要是利用到多项式拟合的库包) 1.将数据进行导入 2.进行曲线拟合返回值为各项系数 3.获得多项式拟合之后的函数表达式 4.将x代入表达式求出对应的y值(这样就能够表示出拟合的差别如何) 5.进…

数学建模--三维图像绘制的Python实现

目录 1.绘制三维坐标轴的方法 2.绘制三维函数的样例1 3.绘制三维函数的样例2 4.绘制三维函数的样例3 5.绘制三维函数的样例4 6.绘制三维函数的样例5 1.绘制三维坐标轴的方法 #%% #1.绘制三维坐标轴的方法 from matplotlib import pyplot as plt from mpl_toolkits.mplot3…

构建知识库:一文解决跨平台科研文献及笔记同步问题

文章目录 需求及目标现有方案调研文献管理方案云存储方案Markdown编辑器Windows端Ipad端 图床管理方案 最终方案操作流程最后 作为一个十级懒人&#xff0c;要么躺着要么在探寻提效工具的路上。 开始打工生涯之后&#xff0c;除了正常工作时间&#xff0c;总想利用业余时间提升…

postgres数据库设置id自增

postgres数据库设置id自增 1. 使用SQL语句建立自增序列 CREATE SEQUENCE id_seq START 1;执行结果 ng) 2. 在设计表中使用该序列 nextval(id_seq::regclass)

面试题 ⑤

1、TCP与UDP的区别 UDPTCP是否连接无连接&#xff0c;即刻传输面向连接&#xff0c;三次握手是否可靠不可靠传输&#xff0c;网络波动拥堵也不会减缓传输可靠传输&#xff0c;使用流量控制和拥塞控制连接对象个数支持一对一&#xff0c;一对多&#xff0c;多对一和多对多交互通…

Kubernetes之舞:微服务的交响乐团

Kubernetes与微服务&#xff1a;缘起 微服务的崛起 微服务架构已经成为现代软件开发的标准。与传统的单体应用相比&#xff0c;微服务提供了更高的模块化&#xff0c;使得团队可以独立地开发、部署和扩展各个服务。这种架构模式的主要优势在于其灵活性和可扩展性&#xff0c;允…

数学建模:拟合算法

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 数学建模&#xff1a;拟合算法 文章目录 数学建模&#xff1a;拟合算法拟合算法多项式拟合非线性拟合cftool工具箱的使用 拟合算法 根据1到12点间的温度数据求出温度与时间之间的近似函数关系 F ( t ) F(…

windows主机和Ubuntu虚拟机共享设置

参考文章 Ubuntu Linux 与主机共享文件夹 vim 修改文件出现错误 “ E45: ‘readonly’ option is set (add to override)“ vim退出时报错“E212: Cant open file for writing”的解决办法 VMware 安装后&#xff0c;安装Ubuntu 20.04一路顺利。 1&#xff0c;在VMware设置…

数学建模--G(1,1)型的灰色预测模型的Python实现

目录 1.算法适用情况 2.算法推演步骤 3.算法核心代码 4.算法效果展示 1.算法适用情况 #1.灰色预测模型简介 """ 1.灰色预测是对既含有已知信息又含有不确定信息的系统进行预测&#xff0c;就是对在一定范围内变化的、与时间有关的灰色过程进行预测。 2.灰色预测…

智能合约安全分析,针对 ERC777 任意调用合约 Hook 攻击

智能合约安全分析&#xff0c;针对 ERC777 任意调用合约 Hook 攻击 Safful发现了一个有趣的错误&#xff0c;有可能成为一些 DeFi 项目的攻击媒介。这个错误尤其与著名的 ERC777 代币标准有关。此外&#xff0c;它不仅仅是众所周知的黑客中常见的简单的重入问题。 这篇文章对 …

数学建模--粒子群算法(PSO)的Python实现

目录 1.开篇提示 2.算法流程简介 3.算法核心代码 4.算法效果展示 1.开篇提示 """ 开篇提示: 这篇文章是一篇学习文章,思路和参考来自:https://blog.csdn.net/weixin_42051846/article/details/128673427?utm_mediumdistribute.pc_relevant.none-task-blog-…

Android 12 源码分析 —— 应用层 四(SystemUI的基本布局设计及其基本概念)

Android 12 源码分析 —— 应用层 四&#xff08;SystemUI的基本布局设计及其基本概念&#xff09; 在上两篇文章中&#xff0c;我们介绍SystemUI的启动过程&#xff0c;以及基本的组件依赖关系。基本的依赖关系请读者一定要掌握&#xff0c;因为后面的文章&#xff0c;将会时…