1. 首页 > 服务器安全

什么是CDN?CDN防御有什么用?高防CDN的防御手段有哪些?

前言

前言

对于 CDN 这个东西,相信大家都有耳闻,感觉既陌生但又熟悉。最近深入了解了一下 CDN,这才发现原来 CDN 如此重要!今天就跟大家科普一下 CDN 是什么,以及为啥要有 CDN,最后再讲一下 CDN 的工作过程!

浏览器的网络请求

要理解 CDN 这件事情,我们就得先理解浏览器发出一个请求的过程是怎样的,其整体过程如下图所示。

浏览器的网络请求

用户在浏览器中输入要访问的网址域名。 浏览器向本地 DNS 服务器请求对域名的解析。 如果本地 DNS 服务器有域名的解析结果,那么直接响应用户请求,返回该域名对应的 IP 地址。 如果本地 DNS 服务器没有域名的解析结果,那么则会递归地向 DNS 系统请求解析,随后将该结果返回给用户。 浏览器得到域名解析结果后,其实也就是域名对应的 IP 地址。 随后浏览器向服务器请求内容。 服务器将用户请求内容返回给浏览器。
通过这么复杂的步骤,用户就可以看到页面内容了。但实际上,在第 6、7 这两步的时候,其中间也经过了非常复杂的过程。为了更清晰地表述,我们可以将这个过程分为 3 个主要节点,如下图所示。

将这个过程分为 3 个主要节点

网站服务器通过公网出口,再通过长途骨干网,最后通过用户的宽带广猫到达用户所在的局域网,最终才到达用户电脑的浏览器。其中长途骨干网的传输是最为耗时的,它需要经过网站服务器所在的机房、骨干网、用户所在城域网、用户所在接入网等,其物理传输距离非常遥远。 在这种情况下,如果传输的数据非常多,访问的用户特别大,那么就会出现很长的延时,影响用户体验。同时,每请求一次数据都需要经过漫长的数据传输,对于长途骨干网来说,都是一次负担。
刚刚说的这个场景,很形象的一个例子是春节抢票的场景。当我们春节抢票时,我们都会登陆 12306 网站,网站上肯定有不少图片资源。这时候可能同时会有 1 个亿的人,同时去请求一张一模一样的图片。这时候如果我们都按照上面的过程去请求一次图片数据,那么将会产生 1 亿次的网络数据传输,这对于我们整个国家的互联网基础设施是个灾难啊!

但事实情况是:12306 貌似也没有挂掉呀!
那么他们是如何解决这个问题呢?答案就是:CDN!

什么是CDN?

其实 CDN 就是内容分发网络的意思,其英文全称为 Content Delivery Network。简单地说,CDN 可以提前把数据存在离用户最近的数据节点,从而避免长途跋涉经过长途骨干网,最终达到减少骨干网负担、提高访问速度的目的。 按照我们上面的场景,如果没有 CDN 的话,每次请求都需要从网站服务器经过公网出口、长途骨干网、用户接入局域网,最终到达浏览器。但是当有了 CDN 之后,可能就变成了下面这样:

什么是CDN?

浏览器请求图片数据时,会先去 CDN 缓存服务器获取。如果获取到数据,那么就直接返回。否则才会经过长途骨干网,最终到达网站服务器获取图片数据。那么只要我们提前在 CDN 缓存服务器上传图片,那么我们就可以极大地减少网络流量,同时减少网络延迟。

从上图我们可能会觉得:这不就是在长途骨干网和用户局域网中间,加了一个服务器嘛。但事实上可并不是这样,CDN 其实还缩短了请求数据的距离。我们知道用户所处的位置可能是全国各地,为了尽可能地减少网络传输的延时,一般都会在离用户较近的地方设置 CDN 缓存服务器,例如:在华南、华北、华东、西南设置一个主 CDN 服务器,这样各个地区的用户就可以直接请求对应的 CDN 服务器,而不需要来回跑大半个中国,极大地提高了效率!因此,当我们说内容分发网络的时候,脑海里应该有如下这样一张图片:遍布全国各地的 CDN 缓存服务器,组成了我们的内容分发网络。每次用户请求都会到离他最近的 CDN 服务器请求数据,从而极大地提高访问速度。

CDN工作原理

到了这里,相信大家都知道 CDN 是什么了。但实际上 CDN 是如何与 DNS 结合起来的,这里面还是有点复杂的。加入了 CDN 之后,浏览器的网络请求就变成如下图所示的情况。

CDN工作原理

浏览器发起图片 URL 请求,经过本地 DNS 解析,会将域名解析权交给域名 CNAME 指向的 CDN 专用 DNS 服务器。 CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回给浏览器。 浏览器向 CDN 全局负载均衡设备发起 URL 请求。 CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的 URL,选择一台用户所属区域的区域负载均衡设备,向其发起请求。 区域负载均衡设备会为用户选择最合适的 CDN 缓存服务器(考虑的依据包括:服务器负载情况,距离用户的距离等),并返回给全局负载均衡设备。 全局负载均衡设备将选中的 CDN 缓存服务器 IP 地址返回给用户。 用户向 CDN 缓存服务器发起请求,缓存服务器响应用户请求,最终将用户所需要偶的内容返回给浏览器。

使用 CDN 服务的网站,只需要将域名解析权交给 CDN 服务商,接着将需要分发的内容上传到 CDN,就可以实现内容加速了!

CDN对网络的优化

解决服务器端的“第一公里”问题 缓解甚至消除了不同运营商之间互联的瓶颈造成的影响 减轻了各省的出口带宽压力 缓解了骨干网的压力 优化了网上热点内容的分布

第一公里 是指万维网流量向用户传送的第一个出口,是网站服务器接入互联网的链路所能提供的带宽。 这个带宽决定了一个 网站能为用户提供的访问速度和并发访问量。如果业务繁忙,用户的访问数越多,拥塞越严重,网站会在最需要向用户提供服务时失去用户。

中间一公里 代表互联网中节点与节点之间的传输网络。

最后一公里 万维网流量向用户传送的最后一段接入链路。

如何在前端项目中使用CDN

引入CDN资源

使用CDN的最简单方法是通过在HTML中引入CDN链接。以下是如何在项目中引入常见的CDN资源的示例。

引入CSS和JavaScript库(例如,Bootstrap和jQuery)1

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>使用CDN的示例</title>
  <!-- 引入Bootstrap CSS -->
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
  <div class="container">
    <h1 class="text-center">使用CDN的示例</h1>
    <button id="myButton" class="btn btn-primary">点击我</button>
  </div>
  <!-- 引入jQuery和Bootstrap JS -->
</body>
</html>

自定义CDN配置

有时候可能需要将自己的网站静态资源上传到CDN服务中。下面是使用常见CDN服务(如阿里云、AWS CloudFront)的基本步骤:

  1. 上传静态资源:将静态文件(如图片、CSS、JavaScript)上传到CDN提供商的存储服务中。
  2. 配置CDN:在CDN控制台中配置资源的缓存策略和访问权限。
  3. 获取CDN链接:获取CDN提供的资源链接,并在前端代码中使用这些链接。

示例

假设我们上传了一张图片到CDN,并获得了如下链接:

https://cdn.example.com/images/sample.jpg

在HTML中引用这张图片:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>使用CDN的示例</title>
</head>
<body>
  <img src="https://cdn.example.com/images/sample.jpg" alt="Sample Image" style="width:100%; max-width:600px;">
</body>
</html>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

高防CDN的主要防御手段

 一、 DDoS攻击防御

DDoS攻击是最常见的网络攻击方式之一,旨在通过大量请求使目标网站瘫痪。高防CDN通过以下方式进行防御:

流量清洗:高防CDN会在接入用户流量之前,对流量进行实时监测与分析,识别异常流量并进行清洗。通过清洗,合法流量能够顺利经过,攻击流量则被阻止。

黑洞策略:此策略允许CDN在攻击流量到达时,将其引导至“黑洞”,即丧失连接的状态,保护目标网站不受影响。

智能防护策略:很多高防CDN具备智能防护系统,通过机器学习识别攻击模式,实时自动调整防御策略。

 二、Web应用防火墙(WAF)

Web应用防火墙能够帮助监控和过滤HTTP流量,是确保网站应用安全的重要手段。高防CDN的WAF能够提供如下功能:

SQL注入防护:对输入数据进行分析,预防黑客通过SQL注入攻击获取数据库敏感信息。

XSS(跨站脚本)防御:通过实时检测和拦截可疑脚本,防止攻击者利用漏洞植入恶意代码。

DDoS防护:结合流量分析技术,识别并过滤掉恶意请求,大幅提高网站的抗击能力。

 三、防盗链技术

盗链是指他人未经允许直接使用你的网站内容,这不仅影响网站的流量,还可能导致安全隐患。高防CDN提供的防盗链技术包括:

Referer检查:通过检查请求的来源信息,仅允许指定域名的访问请求,使得其他域名无法直接盗用资源。

Token认证:对请求的URL生成验证码(Token),只有拥有正确Token的请求才能获取资源,有效阻止恶意请求。

 四、 SSL/TLS加密

SSL/TLS加密是保护网络数据传输安全的第一道防线。高防CDN通过:

HTTPS协议:通过为网站配置SSL证书,实现HTTPS通信,对数据进行端到端加密,防止信息在传输过程被窃取。

加密传播:即使是在CDN网络中的内容传输,也进行加密,避免数据被内部威胁或外部攻击者劫持。

 五、 访问限制策略

高防CDN还可以根据需求设置不同的访问限制策略,如:

基于IP的访问控制:允许或禁止特定IP地址的访问,限制可疑用户或恶意IP的请求。

地区限制:针对来自高风险地区的流量进行屏蔽,减少潜在攻击的风险。

 六、实时监控与预警

高防CDN会提供实时监控和报警系统,以确保对网站的全面了解。监控系统可以:

流量监测:实时监控流量变化情况,发现不正常的流量及时进行处理。

报警机制:当系统检测到异常行为或攻击行为时,系统自动触发报警,提示网站管理员进行处理。

十大CDN服务器及管理软件推荐

Nginx

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

众视媒体小编ZL介绍说,Nginx可以在大多数UnixLinux OS上编译运行,并有Windows移植版。Nginx的1.4.0稳定版已经于2013年4月24日发布,一般情况下,对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高。

在连接高并发的情况下,Nginx是Apache服务器不错的替代品,Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一,能够支持高达50,000个并发连接数的响应。

Nginx作为负载均衡服务器既可以在内部直接支持Rails和PHP程序对外进行服务,也可以支持作为HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好很多。

Squid

Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。

众视媒体小编ZL说,Squid是一种用来缓冲Internet数据的软件。它的功能主要是接受来自人们需要下载的目标的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。

当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议,但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。Squid可运行在大多数Unix和OS/2版本的系统之上,已知的可工作的有:Windows,AIX,Digital Unix,FreeBSD,HP-UX,Irix,Linux,NetBSD,Nextstep,SCO,Solaris。

ATS

Apache Traffic Server(ATS)是一个高性能的、模块化的HTTP代理和缓存服务器,与Nginx和Squid类似。Traffic Server最初是Inktomi公司的商业产品,该公司在2003年被Yahoo收购,2009年8月Yahoo向Apache软件基金会(ASF)贡献了源代码,并于 2010年4月成为了ASF的顶级项目(Top-LevelProject),Apache TrafficServer现在是一个开源项目,开发语言为C++。

众视媒体小编ZL介绍到,ache Traffic Server是个快速、可伸缩、可扩展、兼容于HTTP/1.1缓存代理的服务器,它具有如下特色:

缓存:改进响应时间的同时降低了服务器负载与对带宽的需求,这是通过缓存并且重用经常请求的网页、图片和Web Service调用实现的。

代理:很容易添加持续连接、过滤器或异步内容请求,还可以通过添加代理层实现负载平衡。

速度:在现代的SMP硬件上具有很好的可伸缩性,每秒钟可以处理数以万计的请求。

可扩展性:API考虑到了自定义插件,可以修改头与内容,还可以实现新的协议处理器。

可靠性:能够完美处理TB级别的数据,包括正向与反向代理。

Apache软件基金会发布的最新版本是Apache Traffic Server v3.0.0,它的基准测试结果是每秒钟可以处理200,000多个请求,相对于v2.0来说提升了277%。

Varnish

Varnish是一款高性能的开源HTTP加速器,varnish项目是2006年发布的第一个版本0.9.距今已经有十多年了,经过varnish开发团队和网友们的辛苦耕耘,现在的varnish效率更高,资源占用更少,很多门户网站已经部署了varnish。

众视媒体小编ZL介绍到,Varnish与一般服务器软件类似,分为master(management)进程和child(worker,主要做cache的工作)进程。master进程读入命令,进行一些初始化,然后fork并监控child进程。child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程。

针对文件缓存部分,master读入存储配置(-s file[,path[,size[,granularity]]] ),调用合适的存储类型,然后创建/读入相应大小的缓存大文件。接着,真正的工作开始,Varnish的某个负责接受新HTTP连接的线程开始等待用户,如果有新的HTTP连接过来,它总负责接收,然后叫醒某个等待中的线程,并把具体的处理过程交给它。

Tengine

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

众视媒体小编ZL介绍到,Tengine继承Nginx-1.8.1的所有特性,兼容Nginx的配置;拥有更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名。

而且Tengine支持HTTP/2协议,HTTP/2模块替代SPDY模块;支持异步OpenSSL,可使用硬件如:QAT进行HTTPS的加速与卸载;支持proxy、memcached、fastcgi、scgi和uwsgi模块;支持按指定关键字(域名,url等);并且能自动根据CPU数目设置进程个数和绑定CPU亲缘性;监控系统的负载和资源占用从而对系统进行保护。

HAProxy

HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

众视媒体小编ZL介绍到,HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。而配置HAProxy Session亲缘性的三种方式:用户IP识别、cookie识别和session识别。需要提醒的是因为HAProxy是单进程、事件驱动模型的软件,单进程下工作效率已经非常好,不建议开启的多进程/多实例。

Fikker

Fikker是广州市非客网络科技有限公司的一款服务器类系统软件。是一款面向CDN/站长的专业级网站缓存(Webcache)和反向代理服务器软件(Reversed Proxy Server)。从头自主开发的CDN系统, C语言开发的缓存节点服务端, Fikker提供完整的二次开发接口, 提供有一套免费开源的PHP主控端系统。目前Fikker一般为面向中小规模用户的自建CDN系统,而且Fikker收费低, 并提供完整的帮助说明, 但是无一对一人工技术支持服务。

Fikker的自建方式为:自建CDN = 多个Fikker缓存节点 + 一个CDN主控(免费/PHP/开源/可选安装) + 第三方智能解析(CloudXns/DNSpod/阿里云解析/腾讯云解析等等),据众视媒体小编ZL了解,Fikker还具有以下几个特点:

1、 三级缓存设计: 内存为一级缓存,用于缓存小页面(小于1MB),减少硬盘IO瓶颈,高速响应用户请求。SSD固态硬盘(可选)为二级缓存,用于缓存小文件(小于5M)。HDD普通硬盘(可选)为三级缓存,用于缓存全部页面。支持内容去重+自动清理。

2、非阻塞化设计: 全程采用线程非阻塞化设计,网络异步响应+硬盘异步读写,从容应对高并发和高带宽环境。

3、无碎片化设计: 贯穿整个系统的无碎片化内存管理,内存被重新分段/分页/分配/回收,系统永远不会变慢/无需重启。

同时Fikker也具有跨平台(Windows/Linux)、绿色安装和部署, 解压即可执行、面向中小规模用户群体的运营特点。

WDCDN

WDCDN是一套基于squid架构开发的CDN缓存加速系统及管理系统,高效,稳定,安全。可帮助大中小站长或大中小企业低成本,快速简单,构建自己的CDN网络或服务器群,提供专业的CDN加速服务或增值服务,更好的在线服务,更快速的网络和网站。

众视媒体小编ZL介绍到,WDCDN安全,稳定,高效,可对节点进行分线路,分组管理,更易于对节点服务器的管理,WDCDN可针对站点设置或指定父节点/中转节点,也可根据应用需求更灵活设置。

WDCDN完整支持伪静态,完善解决ID错乱,网购类网站登录,购物车登录等问题,支持防盗链设置,支持设置域名解析回源,安装简单,一键安装,执行一个脚本,即可完成。

不仅如此,WDCDN的集中管理可使主控管理所有节点系统,包括站点管理更新操作,系统资源监控等,也可在线设置缓存加速的文件类型,大小,及硬盘,内存的大小等,更能每天定期备份数据库并上传到指定的远程FTP服务器,以保证数据库的安全。

CDNBEST

CDNBEST是南昌邦腾科技有限公司研发的一款系统,而CDNBEST具有:高速缓存、智能分流、故障自动监测、集中管控的功能。

众视媒体小编ZL补充到,通过kangle web的缓存机制和强大的访问控制功能对网站性能优化,能同时和DNS的无缝隙衔接综合采用多线路智能调度、故障监测、页面优化、页面缓存等技术,能够进一步提升网站访问速度,降低故障率,从而整体提升网站的用户体验。

而且CDNBEST和DNS的无缝隙衔接,通过CDNBEST即可操作您在DNSdun的域名解析记录,并根据线路策略分配自建的CDN节点,将访客的流量按照其线路特性访问到最近的节点,CDNBEST的高效缓存机制,CDN节点将承载大部分的访客流量。

不仅如此,CDNBEST和DNS的无缝隙衔接,CDNBEST部署好之后,当某个节点出现故障时,DNSdun的宕机检测功能会迅速将访问的流量切换至当前可用节点,完全不影响访客的请求。即使源网站因故障导致中断,由于CDN节点对页面及静态资源均作了缓存,搜索引擎依旧能对静态页面进行爬行,同时也不影响用户的正常访问。

LuManager

LuManager(LUM)是基于Linux系统开发的,支持FreeBSD、Debian、Centos、Ubuntu、HttpOS等Linux/Unix系统的网站服务器管理软件,是目前国内市场上为数不多的同时支持Linux和Unix的网站服务管理软件。

据众视媒体小编ZL了解,目前LuManager支持两种安装方式:1、源码编译:此安装比较麻烦和耗时,一般是20分钟至一个小时不等,具体视机器配置情况而定。2、RPM包安装 简单快速,下载快的话,几分钟就可以完成(小编推荐此种方法)。

LuManager还集成了常用程序的快速安装方法,安装好LuManager后,5秒内即可创建一个网站!使创建网站的门槛大大降低。而且LuManager的创建也很简单:

首先登录LuManager后台控制面板,点击“添加网站”输入你想要绑定的域名。然后点击“选填”选项,在创建特殊网站中选择“CDN网站加速”,填入你的源网站域名和源网站的IP地址。在下方选择“开启CDN普通缓存”,CDN缓存文件类型默认值:html|htm|shtml|shtm|gif|jpg|jpeg|png|bmp|swf|js|css|mp3|mav|doc|dot|xls|pdf|txt|zip|rar|gz|tgz|bz2|tgz|rm|rmvb|ico,文件类型可以用正则进行匹配,设置好可以到网站管理中看到网站CDN加速已经创建成功了。

以上就是什么是CDN?CDN的原理是什么的详细内容,更多相关资料请阅读主机测评网其它文章!

本文由主机测评网发布,不代表主机测评网立场,转载联系作者并注明出处:https://zhujiwo.jb51.net/anquan/9074.html

联系我们

在线咨询:点击这里给我发消息

Q Q:2220678578