加入收藏 | 设为首页 | 会员中心 | 我要投稿 牡丹江站长网 (https://www.0453zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

cdn涉及的多种技术分析

发布时间:2023-12-29 09:25:41 所属栏目:安全 来源:DaWei
导读: 在实际应用中,我们有时候会遇到“cdn涉及的多种技术解析”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“cdn涉及的多种技术解析”文章能帮助
在实际应用中,我们有时候会遇到“cdn涉及的多种技术解析”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“cdn涉及的多种技术解析”文章能帮助大家解决问题。

Origin Server: 源站,也就是做 CDN 之前的客户真正的服务器;   User: 访问者,也就是要访问网站的网民;   Edge Server: CDN 的服务器,不单指“边缘服务器”,这个之后细说;   Last Mile: 最后一公里,也就是网民到他所访问到的 CDN 服务器之间的路径。  举例:

我们平时所使用的DNS服务器,一般称之为LDNS,在解析一个域名的时候,一般有两个情况,一种是域名在DNS上有记录,另一种情况是没有记录,两种情况的处理流程不一样。   当你访问163这个域名时,如果LDNS上有缓存记录,那它会直接将IP地址直接给你。如果没有缓存记录,它将会一步步向后面的服务器做请求,然后将所有数据进行汇总交给最终的客户。   当你访问163这个地址时,实际上如果本身没有内容的话,它要去后面拿数据,这个过程术语叫递归,它首先会向全球13个根域服务器请求,问com域名在哪,然后根域服务器作出回答,一步步往下。 

DNS调度   是如何进行调度和进行定位的?

  其实也是通过LDNS的具体地址来进行的,举个例子,比如说北京联通的用户,它使用DNS地址,一般自动给它分配的是北京联通的服务器,这个服务器去做递归的时候,调度服务器就会看到这个请求是来自北京联通的LDNS服务器,就会给它分配一个北京联通的服务器地址,然后让来自北京联通的用户直接访问北京联通的服务器地址,这样来实现精准的区域性调度。   总结:用户在设置本身DNS上需要警惕,不同的DNS指向的地区不同,会严重影响速度。 
  
Http的302调度:
 
在http协议中有一个叫302跳转的功能,它的实现并不是说你访问一个URL,然后马上吐给你想要的数据,而是吐给你一个302返回信令,这个信令头部会告诉你,有一个location目标,这个location就是告诉你下一步将要怎么做,而具体调度是通过location来实现的。   举例:即便我所使用的DNS和我不在一个区域,但当我访问http server的时,这个server是由CDN公司提供的。客户访问server的时,虽说通过DNS方式无法拿到客户的真正IP地址,但是如果你访问的是http server,他一定能直接看到客户的真实IP,利用这种方法可以进行调度的纠偏,可以直接返回给你一个302,然后location里面携带一个真正离你最近的CDN server。   这种调度方式,优势是准确,但是也存在弊端,它不像DNS那样直接请求一个数据包过去给一个反馈就OK了,它需要一次TCP的三次握手接连。  

存在的问题:

一般情况下都是通过DNS来进行第一次调度,然后用http来进行第二次纠偏。这种情况下大家可以想象,如果你下载一个大文件,比如说电影,但你访问的是一个页面小元素,比如说这个图片只有几k,那么,实际上你调度的时间就已经占用了很大的成分。实际上,这种302调度是一种磨刀不误砍柴工的方案,如果你后面有很多工作要做,比如要下载一个电影,时间会很长,那你调度准确,即使花一点时间调度也是值得的。但是如果你后续访问一下就完了,那么你这样调度就没有太大意义。 

Http DNS调度:  

原理是通过一个正常的http请求,发一个get的请求,然后再请求里面以参数的形式携带一个目标解析的域名,然后服务器那边去通过数据库查询,查询之后又通过http的正常响应,把目标请求的IP通过http协议给用户,这种协议有一个特点就是必须双端都支持,因为这种模式是非常标准的。   这有点类似于一种API的这种方式,那如果要实现的话就必须双端都支持。   一般,第三种调度的应用场景是在手机的APP端,在APP软件里面,你要访问某些东西很有可能被运营商劫持等问题。那为了避免这种劫持,可能会用到这种http DNS的调度方式。 

CDN的接入:

那在没有CDN之前,返回给用户的IP地址就是在原来没做CDN时的原始服务器地址。但如果你做过CDN的话,你会发现最终拿到的这个IP地址是CDN的节点,而并不是真正的原始服务器。   实际上第一跳是跳到网速地址,第二跳是分配了网速的一个平台,这个平台又分开其他的IP给最终的客户。 

Cache 系统
在CDN里还有一个非常大的重头戏就是Cache系统,也就是缓存系统。它用于把那些可以缓存住的东西,缓存到CDN的边缘节点,这样当第二个人去访问同一节点,同一具体电影或MP3时,就不用再经过CDN链路回到真正的源站去拿数据,而是由边缘节点直接给数据。 

对于Cache系统来说,有两种不同的工作状态。   第一种工作状态就是所谓的命中(hit),第二种就是没有命中(miss)。如果命中了,直接通过检索找到磁盘或内存上的数据,把这个数据直接吐给客户,而不是从后面去拿数据。这样的话就起到一个很完美的加速效果。   第二种是在miss时,其实,miss的时候跟hit唯一的区别就是,当我发现我的本机上没有这个资源,我会去我的upstream(上游)去拿数据。拿完这个数据,除了第一时间给客户,同时还会在硬盘上缓存一份。如果这个硬盘空间满了,会通过一系列置换方法,把最老的数据、最冷的数据替换出去。 

安全问题   攻击一般分成两种,第一种叫 蛮力型攻击,量大的让你的带宽无法抗住最后导致拒绝服务,另外一种是 技巧性攻击。  

蛮力型攻击,作为CDN来讲,就已经将你的原始服务器的IP进行了隐藏。这样,当一个攻击者去访问你的域名的时,实际上访问的并不是你真正的服务器。当他访问的是CDN的节点,就没有办法把CDN的节点打倒,换句话说,即使有能力把CDN的比如10g的节点或者是40g的大节点全部打倒,但由于CDN天然的分布式的部署方式,他也很难在同一时间之内迅速的把全国所有CDN的边缘节点全都打倒。   技巧型攻击,比如说,像注入、挂马甚至说更严重的会直接拖走你的数据库等等。防范:如WAF,就是应用层防火墙,他可以直接去解析你的请求内容,分析内容是否有恶意性,如有恶意性的话去进行过滤,报警等一系列措施来保证你的原始服务器的安全。 

CDN核心  

原始的CDN其实是Content Delivery Network这三个词的缩写,也就是内容分发网络。CDN的理念是加速,所以,我们就尽一切可能去做各种优化,从一层到七层的优化来实现最终的优化效果。  

具体优化:

一层优化硬件,服务器选型就是一种优化。是用ssd,还是用saker硬盘,CPU应该用至强还是应该用阿童木的等等。   至于二层,链路层的优化指的就是资源方面。比如机方如何去选择。   三层路由层是指你在middlemell这块真正选路的具体的细节,后面会有一个图来具体讲一下。   四层是指传输层的优化,我们一般的业务全都是TCP,所以说这里面就可以明确的说这里是指TCP的优化。   七层也是可以优化的。比如说你强行对内容进行压缩,甚至你改变压缩级别去   在现今的互联网里,TCP优化是可以带来最直接客户体验感的一种实现方式。 

一般你的操作系统选型完毕优化之后你一般不会再动它了,除非遇到了重大的安全隐患或者是有重大的升级。而对于Cache系统来说也是,一般都求稳,在没有重大的bug的时,不会去轻易地改变。但最复杂的就是网络,你必须要掌握对网络的控制度,这样的话你才能驾驭它。  

 

(编辑:牡丹江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章