这两个术语出自网络通信的 OSI 七层模型,理解这两个概念需要先了解 OSI 七层:
- 物理层
- 数据链路层
- 网络层(IP,三层)
- 传输层(TCP/UDP,四层)
- 会话层
- 表示层
- 应用层(HTTP/HTTPS,七层)
4层负载均衡(L4)
- 工作在OSI模型的第四层——传输层(Transport Layer),主要是针对TCP或UDP协议。
- 负载均衡器根据请求的IP地址、端口号、及传输协议(如TCP/UDP)把连接分发到后端服务器。
- 实现方式可以是基于IP+端口的转发。不会理解应用层数据,不会解析HTTP头或者URL。
- 常见的4层负载均衡软件或硬件有:**LVS(Linux Virtual Server)、F5、Nginx(stream模块)**等。
**优点:**性能好、转发速度快,因为不需要理解应用层内容。
7层负载均衡(L7)
- 工作在OSI模型的第七层——应用层(Application Layer),比如HTTP/HTTPS。
- 负载均衡器可以根据HTTP头部、URL、Cookie、甚至内容等应用层信息来分发请求。
- 比如:/api/v1 的路由到A服务器,/image 的请求转到B服务器,等等。
- 常见的7层负载均衡有:**Nginx(http模块)、HAProxy(http模式)、Apache、F5(部分模式)**等。
**优点:**转发更加灵活、可以实现精细的流量控制和路由。
总结对比
项目 | 4层负载均衡 | 7层负载均衡 |
---|---|---|
所在OSI层 | 传输层(TCP/UDP) | 应用层(HTTP/HTTPS等) |
转发依据 | IP、端口、传输协议 | URL、HTTP头、Cookie、内容等 |
适用场景 | 非HTTP(S)协议、性能优先 | HTTP/HTTPS协议,路由复杂需求 |
性能 | 高 | 较低(需解析应用层协议) |
灵活性 | 低 | 高 |
举例:
- 4层负载均衡:A用户访问负载均衡的IP:80,负载均衡只根据IP:80请求分配到不同服务器,哪怕A请求的是index.html还是login.html,均不关心。
- 7层负载均衡:A用户访问时,负载均衡器能根据A请求的路径(如/index.html或/login.html),把请求分发到不同的后端服务器。
会话层和表示层都是OSI七层网络模型中的重要一环,但在实际应用中常常被忽略或与其他层合并。下面分别介绍:
1. 会话层(Session Layer,第5层)
作用:
为不同主机上的应用程序提供会话(Session)管理服务,也就是建立、管理和终止应用程序之间的会话(通信连接)。
功能举例:
- 建立和维持会话,确保不同主机上的应用能够像“见面聊天”一样维持一段时间的交流状态。
- 管理会话中的数据交换,比如谁先发,谁后发。
- 提供数据同步,比如在大文件传输时,如果中断,可以从断点处重传,无需全部重来(通过插入检查点)。
- 支持全双工或半双工的通信控制。
举例说明:
- 你在QQ或者微信和某个人聊天,这其实就是一次应用层的会话。
- 视频会议软件在通信过程中负责维持各方会话状态。
实际应用:
- 在实际网络实现中,会话层功能往往由应用层直接实现,比如HTTP、FTP、RPC等多数协议都自己负责了会话管理。
2. 表示层(Presentation Layer,第6层)
作用:
负责数据的表示、编码、解码、加密、解密和压缩等工作。也就是说,让不同系统(操作系统、编程语言等)间能“看懂”彼此的数据格式。
功能举例:
- 字符集转换(如ASCII与UNICODE之间转换)
- 数据格式变换(如结构化数据、图片格式、PDF等转换)
- 加密与解密(SSL/TLS加密通信在此层体现)
- 数据压缩与解压
举例说明:
- 你电脑是Windows,对方是Linux,通过网络传输文件时,换行符格式不一样,表示层可负责自动转换。
- 你的浏览器访问HTTPS网站时,SSL/TLS协议的加解密过程就是表示层的典型功能。
实际应用:
- 现实中,大部分表示层的功能都由应用协议自带了。例如HTTP规定数据为文本或json,SSL/TLS则直接嵌在应用协议里。
- 数据库同步两个不同架构的系统时,常用到表示层的转换能力。
总结对比
层级 | 英文名 | 主要作用 | 现实常见实例 |
---|---|---|---|
5 | 会话层 Session | 会话管理,数据流控制,建立终止通信连接 | RPC、登录会话、视频会议软件等 |
6 | 表示层 Presentation | 格式转换、加密解密、压缩解压、字符集变换 | SSL/TLS、字符集转换、图片格式转换等 |
简而言之:
- 会话层:让双方“开个聊天会话”。
- 表示层:让双方“说的话、发的文件能互相识别、能看懂”。