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

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. 四层LVS与七层Nginx负载均衡的区别

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

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

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

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

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

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

    TCP/IP网络分层模型 TCP/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. android 中的组合控件的设计
  2. java md5运算_java实现计算MD5
  3. inputdstream mysql_【sparkStreaming】将DStream保存在MySQL
  4. 【渝粤教育】 广东开放大学 21秋期末考试互联网营销概论10092k2
  5. System.getProperty(user.dir) 获取jar包所在目录
  6. CSS3实现光束和波浪
  7. [转] caffe数据层参数说明
  8. python 正则findall右斜杠_Python正则表达式匹配反斜杠问题解析
  9. 开展网络口碑营销之前必须做好的几件事
  10. javascript 中$符号是代表什么意思!
  11. 查询某一天内所有数据(SQL)
  12. CentOS 打开3306端口
  13. 安卓开发 投屏安卓设备到电脑端 scrcpy
  14. [转]和《红楼梦》咏菊花诗十二首
  15. woocommerce 分类到菜单_WooCommerce实用代码集合
  16. 【C++篇】STL常见容器String的模拟实现
  17. matlab解决最短路径问题
  18. 详解CSP-J/S第二轮认证
  19. 双线性 双三次 和基于lanczos 的插值算法
  20. 从华为起诉三星 看中国知识产权建设

热门文章

  1. UTF-8不是兼容Unicode吗? 那UTF-8也应该支持中文啊, 为什么上面的XML文档会 出现字符集错误的情况呢?
  2. 新媒体中的淘宝电商运营资源
  3. HTML网页设计结课作业~仿蘑菇街商城网站源码(HTML+CSS+JS)
  4. 爪哇国新游记之七----使用ArrayList统计水果出现次数
  5. Discrete regularity for graph Laplacians --Jeff Calder 读书笔记 part1 待更
  6. 因为取了个快递我搞懂了五种网络IO模型
  7. 25个带有酷炫动画的创意404错误页面,快给你的网站换上吧(持续更新)
  8. 线段树——区间合并(模板题)
  9. EditText自动弹出输入法问题
  10. 小白都能看懂的go语言包管理工具DEP详解