设为首页 | 收藏本站欢迎来到卓越网络免费免备案CDN加速,DDoS和CC攻击防御,高防CDN管理平台!

已阅读

国内CDN加速网络技术的基础知识

作者:cdnfine      来源:cdnfine      发布时间:2019-04-14

CDN

CDN(Content?Delivery?Network,内容分发网络):Delivery,分发,把所有内容快速分发给用户,提升用户访问内容的体验,是CDN的主要任务。

 

肯德基的总部在美国,但作者楼下就有一家肯德基分店,并且出售的汉堡包与总部的也一模一样,这些分店就构成了肯德基汉堡包的CDN,肯德基部署了很多个CDN(肯德基分店)节点在世界各地,用户购买肯德基汉堡包只需要到距离自己最近的节点,这个就叫做就近接入原则。

假设有一天,临近的节点客流量过大,这时,店长通过CDN中控查询到距本地1000米的另一个分店顾客不太多,就可以引导排队在最后的顾客到另一家分店消费,两家店的服务压力得到均衡。

当肯德基总部研发出来了新菜,要把菜谱向全世界分发,短时间内每一个分店都可以卖了,这个类似于内容分发网络的分发功能。

断点传续

 

推送服务已经是各大APP的标配功能,长连接是推送服务的技术核心,推送服务的所有功能都是基于长连接实现的。

一般情况下,我们讨论的长连接都是基于TCP/IP:客户端用TCP/IP从服务器上获取数据时,需要一个联通客户端和服务器端的连接,连接通过”三次握手“建立,通过”四次握手“释放。

如果每次获取数据都创建一个独占的连接,并在数据传输完毕后释放,这种连接就叫做”短连接“,而一个能够供多个请求多次传输数据,并在数据传输后不会立刻释放的连接称为”长连接“。

长连接使用的场景:

如小红去餐馆点菜,如果服务员不耐烦,小红点完一道菜,服务员就走了,小红再点一道菜还需要把服务员叫回来,如此点菜延长了点餐时间,体验非常差。这个场景就如果一个浏览器加载网页,一个网页有很多个元素组成,每个元素都需要一个HTTP连接去拉取,如果每个元素下载完后,都把HTTP对应的TCP连接关闭,那么下载完一个元素又需要建立连接和断开TCP,而连接和关闭TCP都需要大量的资源,有时建立连接比传输数据更消耗资源。

2、实现PUSH功能

 

HTTPS(Hyper?Text?Transfer?Protocol?Secure,超文本传输安全协议)比HTTP多了一个secure。

HTTP将应用程序提供的数据封装后,明文交给运输层TCP,而后发送到网络里,由于是明文传输,发送的信息在传输过程中,可以被任意篡改,甚至被完全替换,安全性低则是HTTP的主要缺点。

为了解决这个问题,HTTPS在HTTP和TCP之间添加了一层SSL协议,SSL是用来保障网络上数据传输安全的一套协议,他在传输层对HTTP进行封装加密,私钥加密的数据需要用公钥解密。

SSL(Secure Sockets Layer?安全套接层),SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。——度娘

SSL协议可分为两层:?SSL握手协议(SSL?Handshake?Protocol):

1、客户端发起HTTPS请求;

3、客户端生成一个加密密钥,公钥加密后,将密钥传输给服务器,服务器用私钥解密报文,获得客户端密钥。

DNS

如果你在访问某一个网站时,打开网址特别慢,有可能就是触发了跨运营商访问。

DNS(Domain?Name?System,DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

 

举例说明,小红想访问www.a.com网站,则浏览器首先发起DNS请求,把www.a.com(域名)转换成一个TCP/IP认识的IP地址,每个IP地址具备地理位置属性,DNS则把离这个IP地址最近的,同一个运营公司的IP地址返回给用户,小红则顺利的访问www.a.com的主页。

就近接入就是利用DNS服务找到离用户最近的机器,从而达到经由最短路径提供服务的目的,DNS服务还能找到公司的所有机房和IP,从而进行流量调度。

 

Socket

Socket是什么?反正我也不懂,只能听作者的,作者说Socket是一套API,封装了TCP/IP,而TCP/IP是一套协议,规定了互联网上的两台计算机通信的标准。但是TCP/IP规定了互联网的通信手段,却没有告诉用户到底怎么去做,于是Socket出现了,封装了TCP/IP并提供了一套标准的API供调用。

 

那么实现的过程呢,是酱紫的:

1、有一个服务端和一个客户端;

2、服务端设置好自己的IP地址和端口号,然后进入阻塞状态;

3、客户端输入服务器端的IP地址和端口号,把服务端从阻塞状态唤醒;

4、配对成功,实现通信。

其中,服务端用的是服务端的Socket,客户端用的是客户端的Socket,两端都是Socket,都具备连接千里之外的计算机的能力。

 

HTTP也是用Socket传输数据的,但有一点需要注意,基于HTTP的连接是短连接,客户端请求一次数据,就主动和服务端断开了,Socket则不是,默认情况下,双方一直保持联系,所以Socket是长连接

 

另外,Socket可以传输任何内容,不仅限于HTML文本,而且不光在两台计算机之间进行通信,还可以在两个进程间进行通信,比如说你的支付宝和你的微信,都在你的手机上,但是可以用过Socket进行通信。

 

HTTP?302跳转

网络传输中有很多不确定性,会导致传输失败或者其他非常规的情况,网络协议为了识别这些不确定性,定义了一系列状态码,302就是HTTP协议里的一个状态码。

 

302状态码对应的情况可以类比手机的呼叫转移功能,假设电话打进了A手机,均被转移到B手机上接听。

 

302状态码应用的场景就是服务器页面路径的重新规划,假设一个portal页面换了新的域名,但仍有很多用户在使用旧的域名地址,就可以对他进行配置302状态码,用户输出旧的域名,会自动跳转到新域名地址,保证服务的延续。

 

整个流程可以这样说明,用户点击一个页面链接,随即会看到一个新的网页展示在浏览器内,在这个过程中,浏览器其实是在不断接收服务器端的应答(应答是服务器端的状态,所以返回码叫状态码),以此来决定下一步做什么,这个状态码(status?code),在HTTP协议里以三位数标识,共分为5类,分别是1XX、2XX、3XX、4XX,5XX。

 

Hosts文件

如果要访问一个URL,首先要将域名解析对应的IP地址,再通过IP地址访问服务器,域名解析服务器(前文说到的DNS)一般是由用户使用的运营商提供,那么解析了一个连接比较快的IP给用户则罢,如果解析的是比较慢的IP,则用户也只能认了。而hosts给了一个用户指定IP的机会,用户可以在hosts文件中指定某个域名对应的IP地址,系统在发起网络请求时则优先使用hosts文件中的IP地址,这样就自主决定使用哪台服务器的目的。

 

下载速度

想快速下载,选择合适的下载协议很重要,现在常用的有P2P和HTTP。P2P(Peer?to?Peer),常说的BT就是P2P协议中的一种,最大的特点是没有中心服务器,任何人下载的同时也要上传数据供其他人下载,下载的人越多,上传的人也就越多,下载的速度也就越快。所以,如果是BT下载的话,资源的热门程度决定了下载的关键因素之一。

 

HTTP是最早的下载方式,他直接复用了HTTP传输数据,浏览器下载和APP?store中的软件下载都是采用HTTP协议下载。HTTP要求有一个服务器来响应所有请求,因此服务器的响应速度直接影响了用户的下载速度。

 

现在互联网的规模大了,很多公司会在各地部署CDN来减轻下载压力。从客户端角度来说,多线程下载是可以加快下载速度的,但不代表线程越多越好。

 

下载劫持

我想读者都有体会,本来就想下载一个游戏软件,可是手机偏偏让你先下载个手机助手,类似的情况就是下载劫持。

那么一个正常下载微信的流程应该是下图:

 

但是,如果DNS被挟持了,则流程应该是酱紫的:

还有一种是,运营商的主机出了问题,则流程是酱紫的:

总之,总机和骗子服务器就这样一起骗取客户端的下载量。

讲真,三爷为了记笔记,原样抄图也是很累人的。

Keywords: 免费CDN加速 免备案CDN加速 高防CDN加速