会话、表示、应用层
会话、表示、应用层
会话层(The Session Layer)
1. 核心功能:管理对话
会话层的主要目标是建立、维护和同步两个通信应用之间的“会话”或“对话”。它确保通信是有组织、可管理和可靠的。
2. 具体职责:
- 会话控制:负责会话的建立、维护和有序终止。
- 对话管理:确定通信模式,如全双工或半双工。
- 同步与恢复:在长时间的通信中插入检查点。如果传输中断,可以从最近的检查点恢复,而不是从头开始,减少数据重复和丢失。
- 令牌管理:通过令牌控制哪一方有权进行关键操作,防止双方同时操作产生冲突。
3. 现代互联网中的会话层功能体现:
虽然 TCP/IP 模型没有独立的会话层,但其功能由各种应用层技术和协议实现:
- TLS 会话恢复:允许客户端和服务器快速重新建立安全连接,减少握手开销。
- WebSocket:提供浏览器与服务器之间的长连接会话,支持全双工实时通信。
- QUIC / RPC 流:在单个连接上管理多个独立的、复用的数据流,每个流都可视为一个会话。
- 应用心跳与令牌续订:通过定期发送小数据包来维持连接的活跃性,并更新会话状态。
总结:会话层确保了应用程序之间的通信是连续的、有状态的,并能从错误中恢复。
表示层(The Presentation Layer)
1. 核心功能:数据的表现形式
表示层关注的是通信中数据的语法和语义,而不关心数据本身。它确保从应用层发出的数据能被另一个主机的应用层所理解。
2. 具体职责:
- 数据格式转换:将应用层数据从发送方的本地格式转换为适用于网络传输的标准格式,并在接收方转换回其本地格式。
- 数据加密/解密:为保证通信隐私,对传输的数据进行加密和解密。
- 数据压缩/解压缩:为了节省带宽,对数据进行压缩后再传输。
- 数据序列化:将数据结构或对象状态转换为可存储或传输的格式。
3. 技术与示例:
- 数据序列化格式:
- JSON, XML:人类可读的文本格式,广泛用于 Web API。
- Protocol Buffers (Protobuf), XDR, ASN.1:高效的二进制序列化格式,性能更高,用于系统内部或高性能场景。
- 加密:TLS/SSL 协议是表示层功能的典型代表,它提供了数据的加密、解密和完整性校验。
- 格式协商:HTTP 协议中的
Content-Type(内容类型)和Accept(接受类型)头部,用于在客户端和服务器之间协商数据的格式。
4. 表示层的权衡:
- 压缩:节省带宽,但增加发送方和接收方的 CPU 计算开销。
- 加密:提升隐私和安全性,但使得中间缓存和网络监控工具无法查看内容。
- 编码选择:选择 JSON 还是 Protobuf,需要在可读性、性能、互操作性之间做出权衡。
总结:表示层是应用程序和网络之间的“翻译官”,它解决了不同系统之间数据表示方式的差异,确保信息能被正确解读。
应用层(The Application Layer)
This post is licensed under CC BY 4.0 by the author.
