日常与大佬沟通或看文章,时不时总会遇到两个概念“四层代理负载均衡”和“七层代理负载均衡”,那么,所谓的四层代理和七层代理分别指的是什么?又在什么场景下用到呢?这篇文章就带大家聊聊这方面的知识点。

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. 架构师聊的四层代理和七层代理,都在聊什么?

    日常与大佬沟通或看文章,时不时总会遇到两个概念"四层代理负载均衡"和"七层代理负载均衡",那么,所谓的四层代理和七层代理分别指的是什么?又在什么场景下用到呢?这 ...

  2. 与大佬沟通,聊到四层代理和七层代理分别指的是什么这个问题时?会擦出什么火花呢

    日常与大佬沟通或看文章,时不时总会遇到两个概念"四层代理负载均衡"和"七层代理负载均衡",那么,所谓的四层代理和七层代理分别指的是什么?又在什么场景下用到呢?这 ...

  3. 负载均衡集群 [ 1 ] ---集群的认识,四层负载,七层负载 ,LVS 实现四层负载均衡

    文章目录 负载均衡集群 1.集群是什么? 2.负载均衡集群技术 3.负载均衡集群技术的实现 4.负载均衡分类 5.四层负载均衡(基于IP+端口的负载均衡) 6.七层的负载均衡(基于虚拟的URL或主机I ...

  4. 05-网络的四层协议和七层协议

    TCP/IP网络分层模型 TCP/IP的设计创造性的提出了分层的概念,把复杂的网络通信划分出多个层次,再为每一个层次分配不同的职责,层次内只专心做好自己的事情,用分而治之的思想把一个大麻烦拆分成了数个 ...

  5. 四层LVS与七层Nginx负载均衡的区别

    一.四层负载均衡与七层负载均衡: (1)四层负载均衡: 四层负载均衡工作在 OSI 七层模型的第四层(传输层),指的是负载均衡设备通过报文中的目标IP地址.端口和负载均衡算法,选择到达的目标内部服务器 ...

  6. 四层负载均衡 七层负载均衡

    负载均衡,一般是指将客户端流量分配到不同服务器上的一个服务.他的功能一般有三个: 将客户端请求分配到多个服务器 保证分配请求时本身高可用,且被分配的服务都是可用的 根据需求,弹性增加或者减小服务器的数 ...

  7. mac mysql 的lb_四层LB和七层LB

    总结: 基于MAC地址玩的是二层(虚拟MAC地址接收请求,然后再分配到真实的MAC地址), 基于IP地址玩的是三层(虚拟IP地址接收请求,然后再分配到真实的IP地址), 基于IP地址加端口玩的是四层( ...

  8. 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 ...

  9. tcp/ip四层和osi七层

    转载于:https://www.cnblogs.com/mountian-lion/p/6353819.html

最新文章

  1. 基于MQ的分布式事务解决方案
  2. Java基础:详解HashMap在多线程下不安全
  3. 手写自己的MyBatis框架-语句执行处理
  4. Android开发之RecyclerView动态添加item长按删除item源码
  5. 信息学奥赛一本通C++语言——1125:矩阵乘法
  6. 数学建模之微分方程(符实现例题和MATLAB源码)
  7. 第八章:在Spark集群上掌握比较重要的图操作之Property Operators(1)
  8. Realme首款5G手机真我X50官宣:支持SA/NSA双模5G
  9. kafka(五)服务器配置优化
  10. 取消ajax请求时页面闪烁,基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法...
  11. c++ 中类重复定义的分析与解决办法
  12. Python基础语法知识点汇集
  13. 谷歌浏览器好用的插件推荐
  14. 戴尔服务器预装系统如何降级,在戴尔计算机上降级系统BIOS | Dell 中国
  15. Python学习历程-1-20180630
  16. 实现病案首页数据上报自动化-小帮全面解决-数据上报自动化
  17. 解决ios固定定位失效问题
  18. EvolveGCN:动态图的参数演化图卷积网络 AAAI2020
  19. JAVA简单实现坦克对战(只有坦克和子弹)
  20. sergsawegfresrgerg

热门文章

  1. 24年前他被余承东招入华为,现在掌舵第四大事业群,对垒阿里张建锋、百度王海峰,腾讯汤道生
  2. 计算机设备配备情况,计算机设备配置标准.doc
  3. mysql的flush logs
  4. Silverlight 教程第二部分:使用布局管理 (木野狐译) 1
  5. five86-1靶机渗透攻略
  6. 三维坐标 偏转_三维坐标系旋转
  7. 要想成为郎朗,请AI监督练琴可不行!
  8. 开源魔兽世界私服搭建
  9. matlab确定分段函数的间断点,凡分段函数必有间断点
  10. Exiftool 命令行操作图片元信息(Megadata)