当前位置: 首页 > news >正文

【计算机网络】四层负载均衡和七层负载均衡

前言

1、分层方式

首先我们知道,在计算机网络中,常用的协议分层方式:OSI和TCP/IP,以及实际生产中使用的协议划分方式。
在这里插入图片描述
在OSI中,各层的职责如下:
在这里插入图片描述
应用层:对软件提供接口以使程序能使用网络服务,如事务处理程序、文件传送协议和网络管理等。(HTTP、Telnet、FTP、SMTP)
表示层:程序和网络之间的翻译官,管理数据的解密加密数据转换、格式化和文本压缩。(JPEG、ASCII、GIF、DES、MPEG)
会话层:负责在网络中的两节点之间建立和维持通信,以及提供交互会话的管理功能。(RPC、SQL、NFS)
传输层:提供建立、维护和拆除传送连接的功能;选择网络层提供最合适的服务;在系统之间提供可靠的透明的数据传送,提供端到端的错误恢复和流量控制。(TCP、UDP、SPX)
网络层:将网络地址(ip地址)翻译成对应物理地址(网卡地址),并决定如何将数据从发送方路由到接收方。(IP、ICMP、IGMP、IPX、ARP、RARP)
数据链路层:物理地址寻址、数据的成帧、流量控制、数据的检错、重发。(IEEE 802.3/.2、HDLC、PPP、ATM)
物理层:物理连网媒介,如电缆连线连接器。(RS232、V.35、RJ-45、FDDI)

一、负载均衡

负载均衡(Load Balance)的指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

负载均衡重点在于由原来的单个节点承接流量,变成多个节点分担流量,减少请求响应时间,提高应用程序的可用性和可伸缩性。

主要划分方式:根据采用的设备对象区分、根据位于OSI中不同层次的划分,这里我们主要讲根据OSI中的层次划分。

  • 二层负载均衡(mac地址):数据链路层,使用虚拟MAC地址方式,外部请求流量经过虚拟MAC地址,负载均衡收到流量请求后分配后端实际的MAC地址进行响应。
  • 三层负载均衡(ip地址):网络层,使用虚拟ip地址方式,外部请求流量经过虚拟IP地址,负载均衡收到流量请求后分配后端实际的IP地址进行响应。
  • 四层负载均衡(tcp、udp):传输层,使用IP+PORT接收外部流量请求,转发到对应的机器上。
  • 七层负载均衡(http):应用层,使用虚拟的URL或IP地址接收外部流量请求,转发到对应的处理服务器。

4.1 四层负载均衡

四层负载均衡器也称为四层交换机,从上面我们知道,四层负载均衡基于三层的负载均衡,发布三层的IP地址(虚拟IP),再加上四层的端口号,从而决定哪些流量需要做负载均衡,是基于IP+PORT的策略。

四层负载均衡主要用于分析IP及TCP/UDP协议,原理如下:

  • 通过IP+PORT决定流量的去向。
  • 对流量请求进行NAT处理,转发至后台服务器。
  • 记录TCP、UDP流量分别是由哪台服务器处理,后续该请求连接的流量都通过该服务器处理。

也就是说,现在,假设应用前有一层四层负载均衡器,那么外部TCP、UDP请求的流量到达具体应用前会在四层负载均衡处进行解析处理。具体如下:

  • 外部发送TCP请求进入负载均衡设备。
  • 负载均衡设备接收到第一个来自客户端的SYN请求,选择后台服务器,将报文中的目标IP地址进行修改(修改为转发后的后台服务器),转发到该服务器。
  • TCP三次握手进行客户端和服务器的连接。

在四层网络数据通信中,应用程序主要通过套接字(Socket) API 接口,使用 TCP 或 UDP 协议进行传输。应用程序向操作系统内核发送请求后,内核负责把数据包传递到传输层,然后将数据封装成 TCP 或 UDP 数据包。传输层将数据包发送到网络层,网络层对 IP 数据包进行封装,然后通过路由协议发送到目的地。网络层会根据协议规则进行负载均衡和路由选择,以确保数据包能够到达目标地址。

常见的四层负载均衡器:

  • F5:硬件负载均衡器,成本较高。
  • Nginx:轻量级四层负载均衡器,可缓存。(nginx四层是通过upstream模块)
  • Haproxy:模拟四层转发。
  • LVS(Linux Virtual Server):即Linux虚拟服务器,是一个比较重量级的四层负载均衡器。

4.2 七层负载均衡

七层负载均衡基于虚拟的URL或主机IP的负载均衡,能够解析应用层的报文。同时,它也支持四层负载均衡的功能,支持四层负载均衡器的功能,而且能解析应用层信息,如HTTP协议、URI、Cookie等信息,原理如下:

  • 通过虚拟url或主机IP进行流量识别,根据应用层信息进行解析,决定是否需要进行负载均衡。
  • 代理后台服务器与客户端建立连接,如Nginx可代理前后端,与前端客户端TCP连接,与后端服务器建立TCP连接。

在七层网络通信中,应用程序使用更具体的协议(如 HTTP、FTP、SMTP 等)通过套接字(Socket)API 接口进行网络通信。应用程序通过特定的 API 调用,按照指定协议进行数据传输。内核接收到数据后会将数据交给相应的协议模块进行处理。每个协议模块负责解析其对应协议的数据,并根据协议规则进行处理和组装,最终将数据包通过网络层传递到目标地址。7层负载均衡器可以根据报文内容,再配合负载均衡算法来选择后端服务器,因此也称为“内容交换器”。比如,对于Web服务器的负载均衡,7层负载均衡器不但可以根据“IP+端口”的方式进行负载分流,还可以根据网站的URL、访问域名、浏览器类别、语言等决定负载均衡的策略。例如,有两台Web服务器分别对应中英文两个网站,两个域名分别是A、B,要实现访问A域名时进入中文网站,访问B域名时进入英文网站,这在4层负载均衡器中几乎是无法实现的,而7层负载均衡器可以根据客户端访问域名的不同选择对应的网页进行负载均衡处理。

常见的七层负载均衡器:

  • Nginx:基于http协议(nginx七层是通过proxy_paas)
  • Haproxy:七层代理,会话保持、标记、路径转移等。

4.3 四层和七层负载均衡的区别

对比4层负载均衡器和7层负载均衡器运行的整个过程,可以看出,在7层负载均衡器模式下,负载均衡器与客户端及后端的服务器会分别建立一次TCP连接,而在4层负载均衡器模式下,仅建立一次TCP连接。

  • 分层位置:四层负载均衡在传输层及以下,七层负载均衡在应用层及以下。
  • 性能:四层负载均衡架构无需解析报文消息内容,在网络吞吐量与处理能力上较高;七层可支持解析应用层报文消息内容,识别URL、Cookie、HTTP header等信息。
  • 原理:四层负载均衡是基于ip+port;七层是基于虚拟的URL或主机IP等。
  • 功能类比:四层负载均衡类似于路由器;七层类似于代理服务器。
  • 安全性:四层负载均衡无法识别DDoS攻击;七层可防御SYN Cookie/Flood攻击。

相关文章:

【计算机网络】四层负载均衡和七层负载均衡

前言 1、分层方式 首先我们知道,在计算机网络中,常用的协议分层方式:OSI和TCP/IP,以及实际生产中使用的协议划分方式。 在OSI中,各层的职责如下: 应用层:对软件提供接口以使程序能使用网络服…...

IP-guard WebServer 任意文件读取漏洞复现

0x01 产品简介 IP-guard是由溢信科技股份有限公司开发的一款终端安全管理软件,旨在帮助企业保护终端设备安全、数据安全、管理网络使用和简化IT系统管理。 0x02 漏洞概述 由于IP-guard WebServer /ipg/static/appr/lib/flexpaper/php/view.php接口处未对用户输入的数据进行严…...

【IoTDB 线上小课 01】我们聊聊“金三银四”下的开源

关于 IoTDB,关于物联网,关于时序数据库,关于开源...你是否仍有很多疑问? 除了自己钻研文档,群里与各位“大佬”的沟通,你是否还希望能够有个学习“捷径”? 天谋科技发起社区小伙伴,正…...

2024053期传足14场胜负前瞻

2024053期售止时间为4月6日(周六)21点00分,敬请留意: 本期深盘多,1.5以下赔率1场,1.5-2.0赔率8场,其他场次是平半盘、平盘。本期14场难度中等。以下为基础盘前瞻,大家可根据自身判断…...

C语言------冒泡法排序

一.前情提要 1.介绍 冒泡法排序法: 1)冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的列表,一次比较相邻的两个元素,并且如果它们的顺序错误就将它们交换过来。重复这个过程直到没有需…...

C#(C Sharp)学习笔记_Enum枚举类型【十三】

什么是枚举类型 枚举类型(Enum) 是由基础整型数值类型的一组命名常量定义的值类型。枚举包含自己的值,但不能继承或传递继承。 语法 // enum enum_name // enum_name variable enum_name.enum_value// 定义一个枚举类型——例如: enum enum_name {va…...

乐知付-如何制作html文件可双击跳转到指定页面?

标题: 乐知付-如何制作html文件可双击跳转到指定页面? 标签: [乐知付, 乐知付加密, 密码管理] 分类: [网站,html] 为了便于买家理解使用链接进行付费获取密码;现开发个小工具,将支付链接转为浏览器可识别的文件,双击打开即可跳转到…...

电工技术学习笔记——直流电路及其分析方法

一、直流电路 电路的组成 1. 电压和电流的参考方向 电压(Voltage):电压是电场力对电荷产生的作用,表示为电荷单位正电荷所具有的能量。在电路中,电压通常被定义为两点之间的电势差,具有方向性,…...

详解python中的迭代

如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。 在Python中,迭代是通过for ... in来完成的,而很多语言比如C语言,迭代list是通过下标完…...

机器学习模型——集成算法(三)

前面我们说了bagging算法和Boosting算法 接下来我们学习Adaboost算法 Adaboost基本概念: AdaBoost (Adaptive Boosting,自适应提升): 算法原理是将多个弱学习器进行合理的结合,使其成为一个强学习器。 Adaboost采用…...

企业微信企业主体变更认证介绍

企业微信变更主体有什么作用? 说一个自己亲身经历的事情,当时我在一家教育公司做运营,公司所有客户都是通过企业微信对接的。后来行业整顿,公司不得不注销,换了营业执照打算做技能培训,但发现注销后原来的企…...

如何降低AI功耗? —— 超低功耗的仿生硬件

一、背景 仿生硬件(Bionic Hardware)这一术语通常指的是受自然界的生物系统启发而设计制造的电子或机械硬件设备,它们在功能、结构、材料、能源效率等方面模仿生物体的特性,以实现更高效、智能、自适应或环境友好的性能。在人工智…...

原型模式详解

原型模式简单的理解来说,就是复制品,用一个已经做好的成品作为原型,然后通过复制它得到新的产品。就好像细胞分裂一样。用Java来说,就是用对象创建对象,而不是通过类来创建对象。 原型模式的目的是从原型实例克隆出新的实例 ,对于那些有非常复杂的初始化过程的对象或者是…...

嵌入式开发中状态模式实现

文章目录 状态模式代码实现代码解释小结 状态模式 状态模式(State Pattern)是一种行为设计模式,它允许对象在内部状态改变时改变它的行为。在嵌入式系统中,状态模式尤其适用于那些根据外部事件或内部条件频繁改变状态并且每种状态…...

目标检测——车牌数据集

一、重要性及意义 交通安全与管理:车牌检测和识别技术有助于交通管理部门快速、准确地获取车辆信息,从而更有效地进行交通监控和执法。例如,在违规停车、超速行驶等交通违法行为中,该技术可以帮助交警迅速锁定违规车辆&#xff0…...

FOC算法中为啥用PWM触发ADC中断

在FOC(Field Oriented Control,场向量控制)算法中,为什么要使用PWM(Pulse Width Modulation,脉宽调制)触发ADC(Analog-to-Digital Converter,模数转换器)中断…...

2024.4.5学习记录————嵌入式学习内容

2024.4.5学习记录————嵌入式学习内容 C语言 指针,位操作,结构体字节对齐,位段,宏的高级运用 C 基础特性:类,对象,派生,继承,运算符重载,友元&#xf…...

k8s 部署 canal 集群,RocketMQ 模式

k8s 部署 canal 集群,RocketMQ 模式 k8s 部署 canal 集群,RocketMQ 模式前提MySQLRocketMQ制作 canal-admin、canal-server 镜像 部署 zookeeper部署 canal-admin部署 canal-server测试 k8s 部署 canal 集群,RocketMQ 模式 前提 MySQL 开启…...

Android+OnnxRuntime+Opencv+Onnx模型操作图片擦除多余内容

今年来AI的发展非常迅速,在工业、医疗等等行业逐渐出现相应的解决方案,AI也逐渐成为各行业基础设施建设重要的一环,未来发展的大趋势,不过这也需要一个漫长的过程,需要很多技术型人才加入其中,除了工业设施的基础建设,在娱乐方向也有很多有趣的能力,不如图片/视频换背景…...

【CANoe】CAPL_E2E测试-验证报文中的CRC值是否正确

文章目录 一、背景二、CRC校验算法实现_dll制作三、CAPL脚本编写四、测试结果4.1、Write输出窗口4.2、测试报告截图一、背景 在嵌入式软件开发过程中,对于一些报文,需要实现安全发送与安全接收,这就涉及到CRC和RollingCounter。整车和MCU通讯的报文需要对方进行校验才能正确…...

Linux云计算之网络基础8——IPV6和常用网络服务

目录 一、IPV6基础 IPV6详解 IPv6数据报的基本首部 IPv6数据报的扩展首部 IPv6地址的表示方法 IPv6地址分类 网际控制报文协议ICMPv6 二、cisco基于IPV6的配置 cisco基于IPV6的配置步骤 模拟配置 三、HTML基础介绍 文档的结构 动手操作一下 四、常用网络服务介绍…...

页面刚加载的时候显示自己定义的{{***}}然后一闪而过

这时候别用插值表达式语法了,直接用v-text或者v-html就能解决这个问题 但是有个问题,如下图所示: 具体bind使用方式,如下图所示: 但是v-bind也可以进行简写,就是去掉v-bind,直接写&#xff1a…...

python批量转化pdf图片为jpg图片

1.把pdf图片批量转为jpg;需要注意的是,需要先安装poppler这个软件,具体安装教程放在下面代码中了 2.代码 #poppler安装教程参考:https://blog.csdn.net/wy01415/article/details/110257130 #windows上poppler下载链接&#xff1a…...

玫瑰图和雷达图(自备)

目录 玫瑰图 数据格式 绘图基础 绘图升级(文本调整) 玫瑰图 下载数据data/2020/2020-11-24 mirrors_rfordatascience/tidytuesday - 码云 - 开源中国 (gitee.com) R语言绘图—南丁格尔玫瑰图 - 知乎 (zhihu.com) 数据格式 rm(list ls()) libr…...

动态规划基础

动态规划 1、动态规划的概念 简称DP,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。常常适用于有重叠子问题和最优子结构性质的问题。 简单来说,就是给定一个问题,把它拆成一个个子问题,查到子问题可以直接解决。然后把子问题答案保存起来,以减少重复计算…...

kubeadm部署的k8s1.29集群证书更新

1、查看证书有效期 kubeadm certs check-expiration更新证书前: [check-expiration] Reading configuration from the cluster... [check-expiration] FYI: You can look at this config file with kubectl -n kube-system get cm kubeadm-config -o yamlCERTIFIC…...

【A 类比赛】大学生学科竞赛智慧应用场景题目大全

智能应用的多彩场景:未来生活的无限可能 随着科技的飞速发展,智能应用已经渗透到我们生活的方方面面,它们不仅极大地提高了工作效率,也丰富了我们的生活体验。从家庭到工作场所,从城市到乡村,智能应用正在…...

Yarn的安装和使用(2):使用及问题解决

Yarn是JavaScript的依赖管理工具,它与npm类似,但提供了一些额外的性能优化和一致性保证。 Yarn的使用: 初始化项目: yarn init 此命令会引导您创建一个新的package.json文件,用于记录项目的元信息和依赖。 添加依赖&…...

如何在Bash中连接字符串变量

问题: 在 PHP 中,字符串按如下方式连接在一起: $foo "Hello"; $foo . " World";在这里,$foo 变成了 "Hello World"。 在 Bash 中如何实现这一点? 回答1: foo"Hello" fo…...

doesn‘t contain a valid partition table

查看硬盘空间 $ fdisk -l Disk /dev/mmcblk0: 29 GB, 31037849600 bytes, 60620800 sectors 947200 cylinders, 4 heads, 16 sectors/track Units: sectors of 1 * 512 512 bytesDisk /dev/mmcblk0 doesnt contain a valid partition table Disk /dev/mmcblk0p1: 1 MB, 10485…...

档案馆建设网站/新闻最新热点

Runtime类图分析 Text继承了MaskableGraphic, ILayoutElement 关联重要类 FontData类 是一个字体配置类,继承了ISerializationCallbackReceiver接口,这个接口需要实现OnBeforeSerialize和OnAfterDeserialize两个方法,它们分别会在序列化之前…...

网页设计与网站建设 在线测试/seo网站推广教程

先点hex 后点 decimal 再开始start attack,这是一个软件bug,需要手动让它刷新。...

网站开发协议/宣传软文模板

一新建用户 ----------- 二首先修改权限必须在电脑cmd 中运行 开设的权限 主要就是 1 所有库的 *.* 2 所有的表 db.* 3所有的字段db.t1 4 很对一个字段 1开启第一个cmd 利用root 用户名 增加用户的权限 实例select 增加的用户 只能查 不能修改 2 开…...

首饰行业网站建设策划/绍兴seo优化

PTA 甲级1006 Sign In and Sign Out (25分) 文章目录PTA 甲级**1006** **Sign In and Sign Out** **(25**分)Input Specification:Output Specification:Sample Input:Sample Output:生词关键句子注意点题目原文At the beginning of every day, the first person who signs in …...

深圳做网站的网络公/一级域名二级域名三级域名的区别

ORACLE和C语言通用调用接口实现躺 蓝 慈 感 叙 芥 铬 鄙 早 楞 产 筛 贞 装 胎 疤 激 郭 上 汛 芳 壕 她 烂 牺 替 尺 辱 席 焕 沥 虚 羊 腊 湿 先 源 年 司 汽 拒 零 焦 哭 廖 滴 赶 袭 眯 妙 品 剔 坊 畜 殿 澄 强 蛛 泉 磷 瞄 捅 志 盖 僚 槐 焰 凯 蚤 摩 料 内 擂 吁 琵 牌…...

网站建设公司石家庄/地推平台

1.创建命名空间 新建一个yaml文件命名为monitor-namespace.yaml,写入如下内容: apiVersion: v1 kind: Namespace metadata:name: monitoring 执行如下命令创建monitoring命名空间: kubectl create -f monitor-namespace.yaml 2.创建ClusterRo…...