3、HSMS协议栈结构:HSMS物理层、传输层、消息层、会话层分层模型及各层职责
HSMS(High-Speed SECS Message Services)协议栈采用四层分层架构,从下至上依次为物理层、传输层、消息层和会话层。每一层封装特定的功能,并通过标准接口向上层提供服务。理解该分层模型是掌握HSMS通信链路保活与异常恢复机制的基础。
核心要点: HSMS的分层设计遵循ISO/OSI参考模型思想,将物理连接、数据可靠传输、消息边界识别和会话管理解耦,使得每一层的故障与恢复策略可以独立优化。
3.1 物理层(Physical Layer)
物理层是HSMS协议栈的最底层,负责在物理介质上传输原始比特流。在HSMS中,物理层通常基于以太网(Ethernet)标准实现,使用TCP/IP协议族作为底层传输基础。
| 物理层要素 | 说明 | 典型参数 |
|---|---|---|
| 传输介质 | 双绞线(Cat5e/Cat6)、光纤 | 100BASE-TX / 1000BASE-T |
| 网络接口 | RJ45 以太网接口、SFP 光模块 | 10/100/1000 Mbps 自适应 |
| 连接设备 | 交换机、路由器、网卡 | 全双工模式 |
| 电气特性 | 信号电平、阻抗匹配、EMC 防护 | IEEE 802.3 标准 |
工程提示: 物理层故障(如网线松动、交换机端口Down)是HSMS链路断开的常见原因之一。在保活机制设计中,物理层状态监控通常通过TCP连接状态间接反映,而非直接检测物理介质。
3.2 传输层(Transport Layer)
传输层基于TCP/IP协议,提供面向连接的、可靠的字节流传输服务。HSMS标准规定使用TCP作为唯一的传输层协议,端口号通常为5000(默认)或由用户自定义。
- 连接管理: 负责TCP连接的建立(三次握手)和关闭(四次挥手)。
- 数据收发: 将上层消息封装为TCP数据段,通过Socket接口发送和接收。
- 分段与重组: 处理TCP字节流的分段和重组,确保数据按序到达。
- 错误检测与重传: 利用TCP的校验和、序列号、确认应答(ACK)和超时重传机制保证数据可靠性。
- 流量控制: 通过TCP滑动窗口机制防止发送方过快导致接收方缓冲区溢出。
关键点: HSMS的传输层完全依赖TCP的可靠性机制。当TCP连接断开(如RST或超时)时,HSMS会话层会检测到连接异常并触发恢复流程。因此,TCP Keep-Alive 机制是HSMS链路保活的第一道防线。
3.3 消息层(Message Layer)
消息层负责在TCP字节流中定义消息边界,并对消息进行封装和解析。HSMS消息由消息头(Message Header)和消息体(Message Body)组成。
3.3.1 消息头结构
| 字段 | 长度(字节) | 说明 |
|---|---|---|
| Length | 4 | 消息体长度(不包含消息头自身) |
| Device ID | 2 | 设备标识符,用于区分多设备场景 |
| Session ID | 2 | 会话标识符,用于多会话复用同一TCP连接 |
| Stream/Function | 2 | 消息类型编码(如 S1F1、S7F19) |
| P/B Type | 1 | 消息类型标志(Primary/Reply/Block) |
| System Bytes | 4 | 系统事务ID,用于请求-应答匹配 |
3.3.2 消息层职责
- 消息封装: 将上层会话数据加上消息头,形成完整的HSMS消息。
- 消息解析: 从TCP字节流中识别消息边界,提取消息头字段和消息体。
- 事务ID管理: 维护System Bytes的唯一性和递增性,确保请求与应答正确匹配。
- 消息类型识别: 区分Primary消息(主动请求)和Reply消息(应答),以及Block消息(分块传输)。
3.4 会话层(Session Layer)
会话层是HSMS协议栈的最高层,负责管理设备之间的逻辑会话,包括会话的建立、维护、保活和关闭。会话层直接面向SECS/GEM应用,提供通信链路的状态管理和异常恢复能力。
3.4.1 会话层核心职责
| 职责 | 描述 | 相关消息 |
|---|---|---|
| 会话建立 | 通过S7F1/S7F19消息建立逻辑会话,协商通信参数 | S7F1 (Selected)、S7F19 (Linktest) |
| 链路保活 | 定期发送Linktest消息(S7F19)检测链路连通性 | S7F19 (Linktest Request/Reply) |
| 状态机管理 | 维护HSMS状态机(Not Selected/Selected/Connected等状态) | 状态转换事件 |
| 异常断开恢复 | 检测TCP连接断开,触发重连和会话重建流程 | 超时事件、重连请求 |
| 会话关闭 | 正常关闭会话,释放资源 | S7F1 (Deselect) |
3.4.2 HSMS状态机
会话层维护一个有限状态机,控制通信链路的生命周期。主要状态包括:
- Not Connected: TCP连接未建立,无任何通信。
- Connected: TCP连接已建立,但未选择会话。
- Selected: 会话已建立,可以正常收发SECS消息。
- Retry: 链路异常断开,正在尝试重连。
注意: 会话层的保活机制(Linktest)与传输层的TCP Keep-Alive不同。TCP Keep-Alive检测TCP连接是否存活,而HSMS Linktest检测应用层会话是否正常。两者配合使用,形成双层保活防护。
3.5 各层职责总结
| 层级 | 核心职责 | 与保活/恢复的关系 |
|---|---|---|
| 物理层 | 物理介质传输、电气特性 | 物理故障导致链路断开,需硬件排查 |
| 传输层 | TCP连接管理、可靠传输 | TCP Keep-Alive 检测连接存活,超时触发重连 |
| 消息层 | 消息封装/解析、事务ID管理 | 消息边界识别确保保活消息正确解析 |
| 会话层 | 会话建立/保活/关闭、状态机管理 | Linktest 保活、异常检测、重连恢复 |