欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
网络模型
 
开局一张图,接着全靠扯 。
 
OSI 的全称是 Open Systems Interconnect, 是 ISO (国际标准化组织)针对当年每家网络公司都是私有网络协议,群雄争霸、互不兼容的情况,推出的一个通用通信协议。
 
然而现实对于 OSI 而言是残酷的,最终在市场竞争中被 TCP/IP 四层协议给打败了。到了现在,整个因特网都是建立在 TCP/IP 协议栈的基础上的。
 
而五层模型则是综合了 OSI 与 TCP/IP, 为了方便介绍计算机网络原理而设计,实际工业使用的还是 TCP/IP 四层协议。
 
两种代理
 
正向代理(Forward Proxy)
 
一般来说都是直接叫做『代理』,代理是什么呢?
 
正向代理是指用户利用代理服务器访问目标服务器。
 
正向代理的用处主要有以下几种:
 
访问『404』网站
 
这种情况下,就类似饿了么『跑腿代购』,我们并不能直接在网上购买香烟这类禁止网上销售或者没有在外卖平台上架的商品(404),但是我们可以通过骑手(代理服务器),去指定的店铺(目标服务器)购买我们需要的东西(目标资源),送到我们面前。
 
加速访问
 
比较常见的便是『网游加速器』,比如《吃鸡》这种国外游戏产商的游戏服务器一般部署在国外,我们家里的网络环境如果直接进行游戏,『延迟』『卡顿』会伴随着我们整个游戏过程。
 
通过连接游戏加速器提供的代理服务器,利用代理服务器和目标游戏服务器之间优化过、甚至是专线的网络,我们便能愉快『吃鸡』了。
 
反向代理
 
正向代理代理的是用户,而反向代理则相反,代理对象是目标服务器,是指服务端利用代理服务器给用户提供服务。
 
和正向代理相比,二者都是利用代理服务器实现的,不过反向代理的主语是服务端,所以说反向代理对于用户来说是透明的,在用户的视野里,代理服务器便是目标服务器。
 
类似饿了么『专星送』服务,我们(用户)在想喝咖啡的时候,并不需要知道我们附近哪个广场哪个角落有家星巴克(目标服务器),我们只需要打开专星送(代理服务器),直接下单就是,其会自动分配合适的门店为我们提供咖啡。
 
从上面的例子可以想到,反向代理在实际应用可以起到保护和隐藏真正提供服务的那个星巴克门店,也可以在区域分店爆单或者停业时,对用户的需要提供负载均衡,自动派单给相近的门店。
 
代理的实现
 
看到现在,可以发现,开局一张图,反正没啥用。
 
接下来我们通过分析这个网络体系结构,来简单了解下代理的技术原理
 
四层代理(L4 Switch 四层交换)
 
这个四层指的便是『运输层』,我们的四层代理服务器在接收到数据报文后会进行拆包工作,且只做到第4层运输层。
 
在运输层拆包拿到的数据报文,除了包括应用层需要的数据报文,在标头信息中包括了端口信息,再结合网络层拆包所得的 IP,通常是根据这个 IP+PORT 得到实际的目标服务器信息,再修改报文的 IP 地址为目标服务器的 IP 地址信息。
 
所以说,如果数据报文是个 TCP 连接,客户端最终将与真实的目标服务器建立连接。
 
七层代理(L7 Switch 七层交换)
 
七层代理便是指拆包到应用层后,再根据应用层数据特征来判断目标服务器。举个栗子,Nginx 便是我们经常用来搭建七层代理的服务器软件,我们在访问一个 URL 里,Nginx 会根据 URL 进行判断,分配请求到目标服务器
 
因为七层代理依赖应用层信息,所以用户在访问网站的时候,会先与七层代理服务器三次握手建立连接,再发送具体的请求报文给代理服务器,代理服务器再跟目标服务器三次握手建立连接,然后由代理服务器来访问目标服务器。
 
其他层代理
 
既然有四层、七层代理,那么当然是有二层和三层代理
 
二层代理是根据数据链路层报文的 MAC 地址完成代理(一般称为二层转发)
 
三层代理则根据网络层报文的 IP 地址完成数据交换
 
其他
 
上面也只是我通过计算机网络架构及分层数据报文简单介绍了下常见代理的原理,有兴趣的还可以继续了解下其他的问题:
 
常见的四层、七层代理的搭建方式(软件?硬件?)
 
交换机、路由机分别是在哪一层进行数据转发
 
在不同层的不同负载均衡算法

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h63534.shtml