所谓的四层代理和七层代理分别指的是什么?又在什么场景下用到呢?
日常与大佬沟通或看文章,时不时总会遇到两个概念“四层代理负载均衡”和“七层代理负载均衡”,那么,所谓的四层代理和七层代理分别指的是什么?又在什么场景下用到呢?这篇文章就带大家聊聊这方面的知识点。
OSI七层模型
要聊几层代理,需要先看一下网络分层,在之前的文章中也提到,标准的七层网络分层,也就是OSI七层模型。TCP/IP五层模型和TCP/IP四层模型是从OSI七层优化而来。
这里所谈的四层代理和七层代理,便是基于OSI七层模型来划分的。
OSI七层模型
从下往上看,第四层为传输层、第七层为应用层。再来看看每层对应的常见协议:
OSI及协议
四层对应的是TCP/UDP协议,也就常说的IP+端口。七层已经是非常具体的应用层协议了。因此,所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;
同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。二层负载均衡通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址。
四层代理
四层代理主要工作于OSI模型中的传输层,传输层主要处理消息的传递,而不管消息的内容。TCP就是常见的四层协议。
**四层负载均衡只针对由上游服务发送和接收的网络包,而并不检查包内的具体内容是什么。**四层负载均衡可以通过检查TCP流中的前几个包,从而决定是否限制路由。
因此,四层负载均衡的核心就是IP+端口层面的负载均衡,不涉及具体的报文内容。
七层代理
七层代理主要工作于OSI模型的应用层,应用层主要用来处理消息内容的。比如,HTTP便是常见的七层协议。
七层负载均衡服务器起到了反向代理的作用,Client端要先与七层负载均衡设备三次握手建立TCP连接,把要访问的报文信息发送给七层负载均衡。
七层负载均衡器基于消息中内容( 比如URL或者cookie中的信息 )来做出负载均衡的决定。之后,七层负载均衡器建立一个新的TCP连接来选择上游服务并向这个服务发出请求。
使用七层负载均衡的设备经常被用于反向代理。
两者区别
先通过一张图来看看四层代理和七层代理的区别:
四层代理与七层代理
上图中最直观的区别是四层代理只进行了一次TCP请求,而七层代理进行了两次TCP请求。
四层代理:四层代理拆解报文至传输层,根据请求的服务器IP+端口号进行转发;四层代理是由后端服务器进行处理,包括报文的封装都是后端服务器进行封装;四层代理相当于是一个路由器。
七层代理:七层代理拆解报文至应用层,分析用户请求的资源,然后负载均衡器会代替用户请求后端服务器的资源;后端服务器把资源返回给负载均衡器,负载均衡器对资源再次进行封装,然后返还给客户端;在此过程中,需要建立两次TCP连接,一次是客户端,一次是后端的服务器。
七层负载均衡的CPU密集程度比基于包的四层负载均衡更高。七层负载均衡能够让均衡器做更小粒度的负载均衡决定,并且会根据消息的内容( 比如压缩和加密 )利用最优化方式做出改变。它运用缓存的方式来卸载上游服务器较慢的连接,并显著地提高了性能。
负载均衡器
负载均衡器通常称为四层交换机或七层交换机。四层交换机主要分析IP层及TCP/UDP层,实现四层流量负载均衡。七层交换机除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息。
负载均衡分为L4 switch(四层交换),即在OSI第4层工作,也就是TCP层。四层负载均衡器(如:LVS,F5)不关心应用协议(如HTTP/FTP/MySQL等)。
L7 switch(七层交换),OSI的最高层,应用层。七层负载均衡器(如:HAProxy,MySQL Proxy)能理解应用协议。
Nginx、LVS、HAProxy是目前使用最广泛的三种负载均衡软件。
应用场景
七层负载均衡器可以是使整个网络更智能化,比如可以通过七层代理将图片类、静态文件类(JS、CSS)请求转发到特定的服务器,利用缓存技术达到更好的性能。
从技术原理上,可以对客户端的请求和服务器的响应进行任意意义上的修改,极大地提升了应用系统在网络层的灵活性。例如Nginx或者Apache上部署的功能可以前移到负载均衡设备上,例如客户请求中的Header重写,服务器响应中的关键字过滤或者内容插入等功能。
针对SYN Flood攻击,四层模型下攻击请求会被转发到后端服务器上,而七层模式下则可在负载均衡器上进行拦截,不影响后台服务器正常运营。针对SQL注入等情况,也可以通过在七层代理设置策略进行特定报文的过滤,从应用层面进一步提高系统整体安全。
总之,七层负载均衡,主要着重于应用HTTP协议,所以其应用范围主要是众多的网站或者内部信息平台等基于B/S开发的系统。四层负载均衡则对应其他TCP应用,例如基于C/S开发的ERP等系统。
虽然四层代理性能比七层高很多,但目前像Nginx这类负载均衡器已经可以满足大多数场景的需求,应用最多的也是像Nginx这类七层负载均衡器。
小结
看似简单的四层代理和七层代理,其实涉及到很多基础的知识点,比如网络分层、网络通信协议、负载均衡器等,更进一步像微服务架构,Service Mesh架构以及前端系统性能优化等方面都涉及该知识点。
作者:程序员新视界
原文链接:
https://mp.weixin.qq.com/s/VO1tSXssBpNc24moGGM2hw
如果觉得本文对你有帮助,可以转发关注支持一下
所谓的四层代理和七层代理分别指的是什么?又在什么场景下用到呢?相关推荐
- 架构师聊的四层代理和七层代理,都在聊什么?
日常与大佬沟通或看文章,时不时总会遇到两个概念"四层代理负载均衡"和"七层代理负载均衡",那么,所谓的四层代理和七层代理分别指的是什么?又在什么场景下用到呢?这 ...
- 与大佬沟通,聊到四层代理和七层代理分别指的是什么这个问题时?会擦出什么火花呢
日常与大佬沟通或看文章,时不时总会遇到两个概念"四层代理负载均衡"和"七层代理负载均衡",那么,所谓的四层代理和七层代理分别指的是什么?又在什么场景下用到呢?这 ...
- 负载均衡集群 [ 1 ] ---集群的认识,四层负载,七层负载 ,LVS 实现四层负载均衡
文章目录 负载均衡集群 1.集群是什么? 2.负载均衡集群技术 3.负载均衡集群技术的实现 4.负载均衡分类 5.四层负载均衡(基于IP+端口的负载均衡) 6.七层的负载均衡(基于虚拟的URL或主机I ...
- 05-网络的四层协议和七层协议
TCP/IP网络分层模型 TCP/IP的设计创造性的提出了分层的概念,把复杂的网络通信划分出多个层次,再为每一个层次分配不同的职责,层次内只专心做好自己的事情,用分而治之的思想把一个大麻烦拆分成了数个 ...
- 四层LVS与七层Nginx负载均衡的区别
一.四层负载均衡与七层负载均衡: (1)四层负载均衡: 四层负载均衡工作在 OSI 七层模型的第四层(传输层),指的是负载均衡设备通过报文中的目标IP地址.端口和负载均衡算法,选择到达的目标内部服务器 ...
- 四层负载均衡 七层负载均衡
负载均衡,一般是指将客户端流量分配到不同服务器上的一个服务.他的功能一般有三个: 将客户端请求分配到多个服务器 保证分配请求时本身高可用,且被分配的服务都是可用的 根据需求,弹性增加或者减小服务器的数 ...
- mac mysql 的lb_四层LB和七层LB
总结: 基于MAC地址玩的是二层(虚拟MAC地址接收请求,然后再分配到真实的MAC地址), 基于IP地址玩的是三层(虚拟IP地址接收请求,然后再分配到真实的IP地址), 基于IP地址加端口玩的是四层( ...
- Nginx+Tomcat负载均衡、动静分离,4层代理,7层代理
一:7层反向代理 Nginx 服务器:192.168.52.200:80 Tomcat服务器1:192.168.52.201:80 Tomcat服务器2:192.168.52.108:8080 192 ...
- tcp/ip四层和osi七层
转载于:https://www.cnblogs.com/mountian-lion/p/6353819.html
最新文章
- 基于MQ的分布式事务解决方案
- Java基础:详解HashMap在多线程下不安全
- 手写自己的MyBatis框架-语句执行处理
- Android开发之RecyclerView动态添加item长按删除item源码
- 信息学奥赛一本通C++语言——1125:矩阵乘法
- 数学建模之微分方程(符实现例题和MATLAB源码)
- 第八章:在Spark集群上掌握比较重要的图操作之Property Operators(1)
- Realme首款5G手机真我X50官宣:支持SA/NSA双模5G
- kafka(五)服务器配置优化
- 取消ajax请求时页面闪烁,基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法...
- c++ 中类重复定义的分析与解决办法
- Python基础语法知识点汇集
- 谷歌浏览器好用的插件推荐
- 戴尔服务器预装系统如何降级,在戴尔计算机上降级系统BIOS | Dell 中国
- Python学习历程-1-20180630
- 实现病案首页数据上报自动化-小帮全面解决-数据上报自动化
- 解决ios固定定位失效问题
- EvolveGCN:动态图的参数演化图卷积网络 AAAI2020
- JAVA简单实现坦克对战(只有坦克和子弹)
- sergsawegfresrgerg