四层代理遇到七层代理,哪个更无敌?

2022-12-31 0 505

译者| 慕课网菁英客座教授吱吱呛

责任编辑首秀自「慕课网」,想介绍更多IT蔬果文本,开发人员圈高热闻,热烈欢迎高度关注!

前段时间在专业课程概要区给老师做分散释疑的这时候,有许多老师有同一疑点:在前台服务项目布署、网络管理的情景中,时常会加进全权,常用的有三层全权和五层全权,那三层全权和五层全权有甚么差别呢?

01

OSI五层数学模型

四层代理遇到七层代理,哪个更无敌?

02

TCP/IP三层数学模型

四层代理遇到七层代理,哪个更无敌?

03

全权是甚么

全权(英语:Proxy)也称网络全权,是一种特殊的网络服务项目,允许一个网络终端(一般为客户端)通过这个服务项目与另一个网络终端(一般为服务项目器)进行非直接的连接。一些网关、路由器等网络设备具备网络全权功能。一般认为全权服务项目有利于保障网络终端的隐私或安全,防止攻击。

04

三层全权

如果说网络层通信的粒度是物理终端设备的话,IP就是标记不同物理设备的符号,那么传输层通信的粒度是进程,端口就是标记不同进程的符号。

三层全权的三层就是OSI五层数学模型中的传输层;三层全权是基于IP+端口做的代理。三层通过虚拟IP+端口接收请求,然后再分配到真实的服务项目器。

以常用的TCP为例,从三次握手的第一次握手开始,全权设备在接收到第一个来自客户端的SYN 请求时,即按照一定的策略选择一个被全权的后端服务项目器,并对报文中目标IP地址进行修改(改为后端服务项目器IP),直接转发给该服务项目器。

TCP连接建立,即三次握手,实际上是客户端和后端服务项目器建立的,全权设备只是起到一个类似路由器的转发动作。在某些布署情况下,为保证服务项目器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。

05

五层全权

五层全权的五层就是OSI五层数学模型中的应用层;五层全权是基于文本数据做的全权(理解应用层中的应用数据),最终的转发规则取决于文本的差异。鉴于五层应用协议非常广泛,现在的五层全权主要是指HTTP全权。

和三层全权不同的是,五层全权必须要先和全权设备三次握手后,才能得到五层(HTTP层)的具体文本,然后再转发。意思就是全权机必须要与客户端和后端服务项目器的机器都要建立连接。显然,五层全权对全权设备的性能要求要高于三层全权。

我们常使用的Nginx,用作全权服务项目器的这时候,一般都是工作在第五层的。使用Nginx,我们可以全权静态文件、ajax前台接口、CDN重定向等等,都是在传输层之上理解文本后做的工作。

五层应用负载的好处,是使得整个网络更智能化。例如访问一个网站的用户流量,可以通过五层的方式,将对图片类的请求转发到特定的图片服务项目器并可以使用缓存技术;将对文字类的请求可以转发到特定的文字服务项目器并可以使用压缩技术。当然这只是五层应用的一个小案例,从技术原理上,这种方式可以对客户端的请求和服务项目器的响应进行任意意义上的修改,极大的提升了应用系统在网络层的灵活性。很多在前台,例如Nginx或者Apache上布署的功能可以前移到负载均衡设备上,例如客户请求中的Header重写,服务项目器响应中的关键字过滤或者文本插入等功能。

另外一个常常被提到功能就是安全性。网络中最常用的SYN Flood攻击,即黑客控制众多源客户端,使用虚假IP地址对同一目标发送SYN攻击,通常这种攻击会大量发送SYN报文,耗尽服务项目器上的相关资源,以达到Denial of Service(DoS)的目的。从技术原理上也可以看出,三层模式下这些SYN攻击都会被转发到后端的服务项目器上;而五层模式下这些SYN攻击自然在负载均衡设备上就截止,不会影响前台服务项目器的正常运营。另外负载均衡设备可以在五层层面设定多种策略,过滤特定报文,例如SQL Injection等应用层面的特定攻击手段,从应用层面进一步提高系统整体安全。

现在的五层全权,主要还是着重于应用HTTP协议,所以其应用范围主要是众多的网站或者内部信息平台等基于B/S开发的系统。三层全权则对应其他TCP应用,例如基于C/S开发的系统。

06

常用的全权组件

Nginx

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

这里可以简单对比下Nginx和Apache的差别,在资源上,Nginx占用的内存更少;在性能上,Nginx的并发能力更强;在社区方面,Nginx和Apache都拥有广泛的使用者,Apache的插件会比Nginx丰富一些。另外Nginx的功能比Apache要丰富一些,Nginx除了作为Web服务项目器以外,也时常作为反向全权服务项目器等使用,而Apache则主要作为Web服务项目器去使用。

LVS

LVS这个用的比较少,LVS全称是Linux Virtual Server,也就是Linux虚拟服务项目器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是

www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。

LVS主要用于服务项目器集群的负载均衡。它工作在OSI数学模型第三层传输层,可以实现高性能,高可用的服务项目器集群技术。它廉价,可把许多低性能的服务项目器组合在一起形成一个超级服务项目器。它易用,配置非常简单,且有多种负载均衡的方法。它稳定可靠,即使在集群的服务项目器中某台服务项目器无法正常工作,也不影响整体效果。另外可扩展性也非常好。

HAProxy

HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上,既可以做三层全权,也可以做五层全权。

HAProxy也是支持虚拟主机的。HA

HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。

HAProxy支持TCP协议的负载均衡转发,比如:可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,大家可以用LVS+Keepalived对MySQL主从做负载均衡。

以上,希望对老师们有所帮助。

热烈欢迎高度关注「慕课网」,发现更多IT圈优质文本,分享蔬果知识,帮助你成为更好的程序员!

举报/反馈

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务