2、通信会话基础:TCP/IP连接建立、会话初始化、Link Test机制
SECS/GEM 通信会话的建立是设备与主机(Host)之间进行数据交换的前提。本章深入剖析从底层 TCP/IP 连接到上层 SECS 会话初始化的完整链路,并重点解析用于维持会话健康状态的 Link Test 机制。理解这些基础是后续优化超时重传参数的基石。
2.1 TCP/IP 连接建立
SECS/GEM 通常运行在 TCP/IP 协议栈之上(HSMS 模式)。在 SECS 消息交换之前,必须先建立可靠的 TCP 连接。这一过程遵循标准的“三次握手”协议。
关键点: TCP 连接的建立是 SECS 会话的物理基础。任何网络抖动或防火墙策略导致的 TCP 连接中断,都会直接触发 SECS 会话的断开与重连。
2.1.1 三次握手流程
- SYN: 客户端(通常是设备)发送一个 SYN 报文段,指定自己的初始序列号(ISN)。
- SYN-ACK: 服务器(主机)收到 SYN 后,回复一个 SYN-ACK 报文段,包含自己的 ISN,并对客户端的 SYN 进行确认。
- ACK: 客户端收到 SYN-ACK 后,发送一个 ACK 报文段,确认服务器的 SYN。此时 TCP 连接建立完成。
2.2 会话初始化(Session Initialization)
TCP 连接建立后,设备与主机需要交换 SECS 控制消息来完成会话初始化。在 HSMS 协议中,这一过程通过 Select.req 和 Select.rsp 消息实现。
2.2.1 初始化步骤
| 步骤 | 方向 | 消息类型 | 说明 |
|---|---|---|---|
| 1 | 设备 → 主机 | Select.req | 设备请求建立 SECS 会话,携带设备 ID 和功能列表 |
| 2 | 主机 → 设备 | Select.rsp | 主机确认会话建立,返回通信状态(成功/失败) |
| 3 | 设备 → 主机 | Linktest.req | (可选)设备发送 Link Test 请求验证链路 |
| 4 | 主机 → 设备 | Linktest.rsp | (可选)主机回复 Link Test 响应 |
实践建议: 在 Select.rsp 中,主机可以返回
COMMACK 值。常见的 COMMACK=0 表示成功,COMMACK=1 表示通信拒绝。设备应根据该值决定是否重试或上报错误。
2.3 Link Test 机制
Link Test 是 SECS/GEM 协议中用于检测通信链路是否仍然存活的心跳机制。它通过周期性地交换 Linktest.req 和 Linktest.rsp 消息,确保设备与主机之间的逻辑连接没有因网络故障或对端异常而中断。
2.3.1 工作原理
- 发起方: 通常由设备(或主机)在空闲时主动发送 Linktest.req。
- 超时时间: 协议规定
T3定时器用于等待 Linktest.rsp。如果超时未收到响应,则判定链路断开。 - 重试次数: 一般配置 3 次重试,若全部超时则触发断线重连流程。
2.3.2 参数配置建议
| 参数 | 默认值 | 优化建议 | 说明 |
|---|---|---|---|
| T3 超时 | 45 秒 | 10~30 秒 | 根据网络延迟调整,避免过长导致故障检测滞后 |
| Link Test 间隔 | 60 秒 | 30~120 秒 | 间隔过短增加网络负载,过长则延迟发现断线 |
| 重试次数 | 3 次 | 2~5 次 | 考虑网络瞬断,适当增加重试可减少误判 |
注意: 如果 T3 超时设置过短(如小于 5 秒),在 CPU 高负载或网络瞬时拥塞时,容易产生误报断线,导致不必要的会话重建。建议结合生产环境实测数据调整。
2.4 小结
本章涵盖了 SECS/GEM 通信会话的三大基础:TCP/IP 连接建立、会话初始化以及 Link Test 机制。掌握这些基础对于理解后续的超时重传参数(如 T3、T5、T6、T7、T8)至关重要。在实际部署中,建议根据网络环境(如延迟、丢包率)和设备性能,对 Link Test 间隔和 T3 超时进行针对性调优,以平衡链路检测的及时性与系统稳定性。