ROS软路由论坛 ROSABC.com 网络方案网络工程交流

 找回密码
 会员注册

QQ登录

只需一步,快速开始

查看: 987|回复: 1

[交流] 常见问题:四层代理和七层代理有什么区别?

[复制链接]
发表于 2022-10-14 15:49:29 | 显示全部楼层 |阅读模式

马上注册成为ROSABC会员,随时发帖回复。

您需要 登录 才可以下载或查看,没有账号?会员注册

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

**四层代理的四层就是OSI七层模型中的传输层;四层代理是基于IP+端口做的代理。**四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器。

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

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

04 七层代理
七层代理的七层就是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开发的系统

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

不良信息举报Q:2000617

软路由

不良信息举报Q:2000617|Archiver|ROS软路由论坛 ROSABC.com 网络方案网络工程交流

GMT+8, 2024-5-4 20:51 , Processed in 0.088675 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表