-
32 分钟
ELB深度解析:四层vs七层转发原理与性能对比

大家好,我是知秋一叶!做云原生的同学,几乎每天都在跟负载均衡打交道,但很多人对”四层”和”七层”的理解还停留在”一个快一个慢”的层面:

  • 同样是负载均衡,为什么有的叫L4有的叫L7?
  • 四层只看IP端口,七层能看URL,底层到底差在哪?
  • 生产环境到底选四层还是七层?还是组合用?
  • 阿里云SLB、腾讯云CLB、天翼云ELB,底层实现有啥不一样?

很多人配置了一堆监听器,却搞不清DNAT和反向代理的本质区别,排障的时候抓瞎。今天我们就从底层原理到云厂商实现,把四层和七层负载均衡这件事讲透,帮你建立清晰的认知框架。


一、为什么需要ELB#

在单台服务器扛不住的时候,最直觉的方案就是加机器。但加完机器后,谁来决定每个请求去哪台?这就是负载均衡要解决的问题。

ELB(Elastic Load Balancing,弹性负载均衡)的核心职责:将入站流量按照策略分发到多台后端服务器,实现水平扩展与高可用

一旦后端某台服务器挂了,ELB通过健康检查自动剔除,流量无感切换——这就是”弹性”的含义。


二、从OSI模型理解”四层”和”七层”#

“四层”和”七层”不是玄学,它的依据是OSI七层网络模型。理解了层级,就理解了它们的能力边界。

7 应用层 HTTP / HTTPS / FTP / DNS ← 七层工作在这里 6 表示层 TLS / SSL / JPEG 5 会话层 会话管理 4 传输层 TCP / UDP ← 四层工作在这里 3 网络层 IP / ICMP 2 数据链路层 MAC 帧 1 物理层 比特流 OSI 七层网络模型
  • 四层负载均衡(L4) :工作在传输层,只能看到 IP + 端口,不关心应用层内容
  • 七层负载均衡(L7) :工作在应用层,能解析 HTTP 报文,基于域名、URL、Header、Cookie 等做调度

一句话概括区别:四层看”门牌号”,七层看”信封内容”


三、四层转发原理深度剖析#

3.1 核心机制:DNAT#

四层负载均衡的核心是 DNAT(Destination Network Address Translation,目标地址转换) 。它只改写报文头部的IP和端口,不碰数据内容。

客户端 VIP:Port 四层负载均衡 DNAT 转换 RS_IP:Port 后端 RS SNAT 改源地址 仅修改 IP/Port 头部,不解析应用层内容

转发流程:

  1. 客户端连接 ELB 的 VIP:Port
  2. ELB 查看报文的目标 IP + 端口,根据调度算法选一台后端服务器(Real Server)
  3. ELB 将报文目标地址从 VIP 改为 RS_IP,转发给后端
  4. 后端处理后,响应报文经 ELB 将源地址改回 VIP,返回客户端

整个过程 不解析应用层内容,只改写网络层/传输层头部,所以处理速度极快。

3.2 四层的两种转发模式#

NAT 模式(Full NAT)#

最常见的方式。ELB 同时修改源 IP 和目标 IP:

  • 请求方向:客户端IP → ELB IP → 后端RS_IP
  • 响应方向:RS_IP → ELB IP → 客户端IP

特点:所有流量都经过 ELB,ELB 可能成为瓶颈;后端 RS 不需要配置 VIP。

DR 模式(Direct Routing)#

ELB 只修改目标 MAC 地址,不修改 IP:

  • 请求方向:客户端 → ELB(改MAC)→ 后端RS(IP仍然是VIP)
  • 响应方向:RS → 直接返回客户端(绕过ELB)

特点:响应流量不经过 ELB,性能极高;但要求 RS 和 ELB 在同一二层网络,且 RS 需要配置 VIP。

NAT 模式(Full NAT) 客户端 ELB 改源+改目标 后端 RS 响应也经过ELB DR 模式(Direct Routing) 客户端 ELB 仅改MAC 后端 RS 响应直接返回,绕过ELB 两种模式对比 对比维度 NAT 模式 DR 模式 性能 一般,ELB是瓶颈 极高,响应不经过ELB 网络要求 三层可达即可 必须同一二层网络 RS配置 无需额外配置 RS需配置VIP(lo网卡)

3.3 四层连接模型#

四层负载均衡建立的是一个端到端的连接映射

客户端 四层负载均衡 ELB 连接表(五元组映射) 后端 RS TCP连接1 TCP连接2 NAT模式:维护五元组连接映射,同一数据流始终转发至同一RS 五元组:源IP、源端口、目标IP、目标端口、协议

在 NAT 模式下,ELB 维护一张连接表(五元组:源IP、源端口、目标IP、目标端口、协议),将客户端连接映射到后端连接。同一条流的报文始终转发到同一台 RS。

3.4 TCP SSL 卸载#

部分四层负载均衡支持 TCP SSL 卸载:在传输层就完成 SSL/TLS 的加解密,后端 RS 无需处理加密逻辑。这不同于七层的 HTTPS 卸载——四层只做传输层加解密,仍不解析应用层内容。

3.5 四层健康检查#

检查方式原理
TCP 连接检查尝试建立 TCP 三次握手,成功即健康
UDP 检查发送 UDP 探测报文,收到响应即健康

四层健康检查只关注网络是否可达,不关心应用逻辑是否正常。


四、七层转发原理深度剖析#

4.1 核心机制:反向代理#

七层负载均衡本质是一个 反向代理(Reverse Proxy) ,它终止客户端连接,解析应用层协议,再以自己的身份向后端发起新连接。

客户端 HTTP/TLS 连接① 客户端侧连接 七层负载均衡 解析 HTTP 内容 反向代理 / SSL 卸载 域名 / URL / Header 路由 HTTP 连接② 服务端侧连接 后端 RS 真正的"中间人" 连接①:客户端 ↔ ELB 连接②:ELB ↔ 后端RS

七层 ELB 是真正的”中间人”:客户端认为自己与后端 RS 通信,实际是和 ELB 通信;RS 也认为自己与 ELB 通信

4.2 七层转发完整流程#

以 HTTPS 请求为例:

  1. 客户端发起 TLS 握手 → ELB(VIP:443)

  2. ELB 出示证书,完成 TLS 握手,建立加密通道

  3. ELB 解密 HTTP 请求,读取:

    • Host 头(域名)
    • URL 路径
    • Cookie
    • 自定义 Header
    • Query String
  4. 匹配转发规则,选择目标后端服务器组

  5. ELB 以 HTTP(内网通常不再加密)向后端 RS 发送请求

  6. RS 返回响应 → ELB → 加密 → 返回客户端

关键环节:ELB 完成了 TLS 终止(SSL Offloading) ,后端 RS 只需处理 HTTP,大幅降低加解密负担。

4.3 七层路由规则详解#

七层的核心价值是 基于内容的路由

路由维度示例场景
域名api.example.com → RS组A, web.example.com → RS组B同一IP多域名
URL路径/api/* → 后端服务, /static/* → CDN/对象存储前后端分离
HTTP HeaderX-Canary: true → 灰度 RS金丝雀发布
Cookiesessionid=abc → RS-1会话保持
Query String?version=v2 → 新版本RSA/B测试
HTTP方法GET → 读服务, POST → 写服务读写分离

4.4 七层连接模型#

七层是 两个独立的 TCP 连接

客户端 七层负载均衡 ELB 独立管理两端TCP连接 后端 RS 连接1:TCP 客户端侧连接 连接2:TCP 服务端侧连接 两条TCP连接相互独立,ELB完整代理应用层请求报文

两个连接完全独立:

  • 客户端连接数 ≠ 后端连接数
  • 可以对后端使用连接池/长连接复用
  • ELB 可以对请求做缓冲、限速、重试

4.5 HTTPS 卸载 vs 透传#

模式TLS终止位置后端收到安全性后端负担
卸载(Offload)ELB明文 HTTP内网足够安全
透传(Pass-through)后端RS加密 HTTPS端到端加密
端到端加密ELB解密再加密→后端HTTPS(二次加密)最高

生产环境最常见的是 卸载模式:ELB 终止 TLS,内网用 HTTP 通信,兼顾安全与性能。

4.6 七层健康检查#

七层不仅能检查网络可达性,还能检查 应用层是否正常

检查方式原理示例
HTTP 状态码发起 HTTP 请求,检查响应码200 为健康,502 为异常
HTTP 响应体检查返回内容是否包含指定字符串包含 “OK” 为健康
指定检查路径专门用于健康检查的轻量接口GET /health

这比四层的 TCP 连接检查精确得多——服务进程还在,但业务逻辑已经挂了,四层查不出来,七层能查出来。


五、四层与七层协同架构#

在真实的生产环境中,四层和七层不是二选一,而是协同工作

客户端 四层负载均衡(L4) 承接海量连接入口 DDoS防护 · SYN Flood防护 七层负载均衡(L7) 精细化路由 + SSL卸载 WAF · 灰度发布 RS1 - Web 前端页面服务 RS2 - API 后端接口服务 RS3 - 静态 静态资源服务 为什么组合使用? 四层在前:高性能承接海量连接、抗DDoS 七层在后:精细化路由、SSL卸载、WAF防护

为什么不全用七层?

  1. 性能:四层只改 IP/Port,吞吐量远高于七层(解析 HTTP 开销大)
  2. 协议覆盖:非 HTTP 协议(MQTT、自定义 TCP)只能走四层
  3. 连接规模:IoT 场景百万级设备并发,四层是唯一选择

为什么不全用四层?

  1. 精细调度:无法基于域名/URL/Header 做路由
  2. 安全:无法做 SSL 卸载、WAF 防护
  3. 云原生:Ingress 网关、灰度发布需要七层能力

六、核心对比#

6.1 原理对比#

维度四层(L4)七层(L7)
工作层级传输层应用层
转发依据IP + 端口域名/URL/Header/Cookie
连接模型一个连接映射两个独立连接
协议解析解析HTTP等应用层协议
典型实现LVS、DPDK、TGWNginx、HAProxy、Envoy、Tengine
数据面改动仅改IP/Port头部可增删改HTTP报文

6.2 性能对比#

四层 vs 七层 性能对比(相对值) 极高 转发延迟 微秒级 毫秒级 吞吐量 极高 较高 并发连接 亿级 百万QPS CPU开销 内存开销 四层 L4 七层 L7
指标四层七层
转发延迟微秒级毫秒级
吞吐量极高较高
并发连接亿级百万QPS级
CPU开销高(需解析+加解密)
内存开销低(仅连接表)高(HTTP报文缓冲)

6.3 功能对比#

能力四层七层
域名/URL路由❌ 不支持✅ 支持
Header/Cookie路由❌ 不支持✅ 支持
请求重定向/重写❌ 不支持✅ 支持
SSL卸载仅TCP SSLHTTPS卸载
WAF安全防护❌ 不支持✅ 支持
流量镜像/灰度发布❌ 不支持✅ 支持
限速连接级限速请求级限速
WebSocket❌ 不支持✅ 支持
gRPC/QUIC❌ 不支持✅ 支持
健康检查精度TCP端口级HTTP应用级

七、获取客户端真实IP#

7.1 四层场景#

四层在 NAT 模式下,后端 RS 看到的源 IP 是 ELB 的内网 IP,不是客户端真实 IP。

解决方案:

  • 转发层透传:部分 ELB 支持在四层直接透传客户端 IP(如 TOA / Proxy Protocol)
  • TOA(TCP Option Address) :在 TCP SYN 报文的 Option 字段中携带客户端真实 IP,后端内核模块解析获取
  • Proxy Protocol:在 TCP 连接建立后,ELB 先发送一行文本 PROXY TCP4 客户端IP ELB_IP 端口 端口\r\n,后端需开启 Proxy Protocol 支持

7.2 七层场景#

七层 ELB 是反向代理,后端 RS 看到的源 IP 一定是 ELB IP。标准方案通过 HTTP 头部传递:

X-Forwarded-For: 客户端IP, 代理1_IP, 代理2_IP
  • 取第一个地址即为客户端真实 IP
  • 多级代理时,前面追加,越靠左越接近客户端
  • 部分ELB还支持 X-Real-IP 头部

注意X-Forwarded-For 可以被客户端伪造。如果需要可信的客户端 IP,应信任 ELB 追加的最后一个 X-Forwarded-For 值,或使用 ELB 提供的 Remote Address 字段。


八、三大云厂商 ELB 实现对比#

了解了原理,我们再看看国内三大云厂商的具体实现,每家都有自己的技术栈和产品矩阵。

8.1 阿里云 SLB 家族#

阿里云负载均衡不是单一产品,而是一个完整家族:

产品定位层级底层实现
NLB 网络型负载均衡高性能四层入口四层为主基于洛神云网络平台,DPDK加速
ALB 应用型负载均衡云原生七层网关七层基于Tengine增强
CLB 传统型负载均衡经典款,四七层混合混合四层LVS+Keepalived,七层Tengine

技术特点

  • 四层:LVS(Linux Virtual Server)+ Keepalived 定制化实现
  • 七层:Tengine(淘宝开源的Nginx增强版)
  • NLB 最大支持 1亿并发连接,面向海量连接场景
  • ALB 支持 HTTP/HTTPS/gRPC/QUIC,面向云原生和微服务

8.2 腾讯云 CLB#

腾讯云走的是自研路线,底层基于统一接入网关:

层级底层实现特点
四层TGW(Tencent Gateway)自研 + DPDK单集群亿级并发、千万级PPS
七层STGW(安全Tencent网关)集成WAF、HTTPS加速

技术特点

  • 四层完全自研 TGW,基于 DPDK 高性能转发
  • 腾讯内部所有业务(游戏、微信等)都跑在 TGW 之上
  • HTTP/HTTPS 流量:TGW集群 → STGW集群 → 后端RS
  • 抗攻击能力强,天然集成 DDoS 防护

8.3 天翼云 ELB#

天翼云采用四七层分离的分布式架构:

架构特点

  • 四七层网元分离:分布式处理,可用性更高
  • AZ级容灾:网元跨AZ多活,单AZ故障不影响
  • 集群模式:任意节点故障自动切换
  • 后端主机跨AZ:业务可跨可用区部署

产品形态

  • 独享型:独占资源,性能隔离,适合高要求业务
  • 共享型:多租户共享,性价比高
  • 支持 TCP/UDP 四层和 HTTP/HTTPS 七层
  • 支持轮询、最少连接、源IP 三种负载算法
  • 会话保持:四层基于源IP,七层基于Cookie

九、选型指南#

选四层的场景#

  • 对延迟和吞吐量有极致要求(游戏、音视频、高频交易)
  • 海量并发连接(IoT 设备接入、车联网、消息推送)
  • 非 HTTP 协议(MQTT、RTMP、自定义 TCP/UDP 协议)
  • 纯四层流量分发,无需应用层调度

选七层的场景#

  • Web 应用需要域名/URL 路由
  • SSL/TLS 卸载需求
  • 灰度发布、蓝绿部署、A/B 测试
  • 微服务架构下的 API 网关 / Ingress 网关
  • WAF 安全防护
  • 请求级别的限速、重试、重写
  • WebSocket/gRPC/QUIC 等应用层协议

四七层组合使用的典型架构#

流量入口四层职责七层职责
公网流量海量连接承接、DDoS防护、SYN Flood防护域名路由、SSL卸载、WAF、灰度发布
IoT/MQTT百万级终端接入、协议转发
Web/API路径路由、限速、Header改写

十、总结#

四层七层
一句话看”门牌号”,转发快看”信封内容”,调度精
工作层级传输层(TCP/UDP)应用层(HTTP/HTTPS)
核心机制DNAT 地址转换反向代理
优势高性能、低延迟、高并发灵活路由、安全防护、应用智能
劣势调度维度单一性能开销大
典型实现LVS、DPDK、TGWNginx、Tengine、Envoy
互补定位做入口承接海量连接做精细化流量管理

四层和七层不是竞争关系,而是互补关系。生产环境的最佳实践是:四层在前做流量入口和连接调度,七层在后做应用层智能路由。

理解这两层的工作原理和适用场景,是云网络架构设计的基础功。下次再有人问你四层和七层的区别,你就可以从 DNAT 讲到反向代理,从连接模型讲到云厂商实现,把对方安排得明明白白。


参考文档#

  1. 阿里云 - 传统型负载均衡CLB产品架构: https://help.aliyun.com/zh/slb/classic-load-balancer/product-overview/architecture
  2. 阿里云 - 什么是网络型负载均衡NLBhttps://help.aliyun.com/zh/slb/network-load-balancer/
  3. 腾讯云 - 负载均衡CLB技术原理https://cloud.tencent.com/document/product/214/530
  4. 腾讯云 - 四层负载均衡和七层负载均衡有什么区别https://cloud.tencent.com/document/product/214/5411
  5. 天翼云 - 弹性负载均衡ELB产品定义https://www.ctyun.cn/document/10026756/10031981
  6. 天翼云 - 弹性负载均衡不同类型的功能对比https://www.ctyun.cn/document/10000024/10222956
  7. 天翼云 - HTTP/HTTPS请求获取客户端真实源IP地址https://www.ctyun.cn/document/10026756/10144341
  8. 天翼云 - TCP请求获取客户端真实源IP地址https://www.ctyun.cn/document/10026756/10144360
ELB深度解析:四层vs七层转发原理与性能对比
https://www.zhiqiuyiye.com/posts/elb-layer4-layer7-forward-principle-performance-compare/
作者
知秋一叶
发布于
2026-07-09
许可协议
CC BY-NC-SA 4.0