2. 会话建立基础:TCP/IP连接建立、HSMS握手流程、会话ID分配机制
SECS/GEM 通信会话的建立是设备与主机(Host)之间进行数据交换的前提。整个建立过程分为三个层次:TCP/IP 传输层连接、HSMS 应用层握手以及会话 ID 的逻辑分配。任何一层失败都会导致通信无法正常进行,因此理解这一基础流程对于后续的日志分析与故障排查至关重要。
2.1 TCP/IP 连接建立
HSMS(High-Speed SECS Message Services)协议完全基于 TCP/IP 协议栈。在 HSMS 会话开始之前,必须先建立可靠的 TCP 连接。设备通常作为 TCP 客户端(主动发起连接),主机作为 TCP 服务器(被动监听)。
关键参数:
- IP 地址与端口号:主机侧固定监听端口(通常为
5000或5555),设备侧配置主机 IP。 - 连接超时(T3 / Connect Timeout):设备发起 TCP SYN 后等待 SYN-ACK 的最大时间,通常为 10~30 秒。
- 重试间隔与次数:若连接失败,设备应按照配置的间隔(如 5 秒)和最大重试次数(如 3 次)进行重连。
日志解析提示:在设备日志中搜索
"TCP connect to host:port" 或 "Connection refused"。若反复出现 "connect timeout",应优先检查网络路由与防火墙规则,而非 HSMS 配置。
2.2 HSMS 握手流程
TCP 连接建立后,设备与主机之间需要通过 HSMS 控制消息完成应用层握手。HSMS 定义了两种通信模式:主动模式(Active Mode)和被动模式(Passive Mode)。在半导体设备场景中,设备通常作为主动端发起握手。
握手过程通过两条控制消息完成:
- Select.req(选择请求):设备向主机发送,请求建立 HSMS 会话。
- Select.rsp(选择响应):主机回复设备,确认会话建立成功或拒绝。
常见握手失败原因:
- Select.rsp 返回非 0 错误码:表示主机拒绝连接,常见原因包括会话 ID 冲突、主机资源不足、设备未注册。
- Select.req 无响应(T5 超时):设备发送 Select.req 后,在 T5 超时时间内未收到 Select.rsp,应主动断开 TCP 连接并重试。
- 协议版本不匹配:设备与主机使用的 HSMS 版本不一致(如 HSMS-SS vs HSMS-GS)。
2.3 会话 ID 分配机制
会话 ID(Session ID)是 HSMS 层用于标识一个逻辑通信会话的唯一编号。在 Select.req 消息中,设备会携带一个 Device ID,主机根据该 ID 决定是否允许建立会话。
| 概念 | 说明 | 取值范围 |
|---|---|---|
| Device ID | 设备在 Select.req 中声明的 ID,用于标识设备身份 | 0 ~ 32767(15 位) |
| Session ID | 主机分配的逻辑会话标识,用于后续消息路由 | 通常与 Device ID 相同 |
| HCACK | 握手确认码,0 表示成功,非 0 表示拒绝原因 | 0 ~ 255 |
HCACK 错误码速查表:
- 0:成功(Success)
- 1:拒绝,原因未指定(Reject, reason unspecified)
- 2:拒绝,设备 ID 未注册(Device ID not registered)
- 3:拒绝,设备 ID 已存在(Device ID already exists)
- 4:拒绝,资源不足(Insufficient resources)
日志解析实战:在设备日志中查找
"Select.req sent, DeviceID=1234" 和 "Select.rsp received, HCACK=0"。若 HCACK 为 2,说明主机未配置该 Device ID,需检查主机侧的设备注册表。若 HCACK 为 3,说明存在重复的 Device ID,需检查网络内是否有其他设备使用了相同的 ID。
2.4 完整会话建立流程总结
将上述三个步骤串联起来,一个完整的 HSMS 会话建立流程如下:
- TCP 连接建立:设备向主机 IP:Port 发起 TCP 三次握手,进入 ESTABLISHED 状态。
- HSMS 握手:设备发送 Select.req(携带 Device ID),主机回复 Select.rsp(携带 HCACK)。
- 会话 ID 确认:若 HCACK=0,会话建立成功,后续所有消息使用该 Session ID 进行通信。
- 通信开始:设备与主机可以开始交换 SECS-II 消息(如 S1F13、S1F14 等)。
日志解析关键点:
- 若 TCP 连接失败,日志中不会出现 HSMS 握手消息,应优先排查网络层。
- 若 TCP 连接成功但 Select.req 无响应,检查 T5 超时配置(通常为 10 秒)。
- 若 Select.rsp 返回 HCACK=2 或 3,检查主机侧的设备 ID 配置。
- 会话建立成功后,设备应发送 S1F13(请求设备属性)作为第一个 SECS-II 消息。
实战案例:某设备日志显示 TCP 连接成功,但 Select.req 发送后 10 秒未收到 Select.rsp,随后设备主动断开 TCP 连接并重试。经排查,主机侧防火墙未开放 HSMS 端口(5000),导致 Select.req 被丢弃。调整防火墙规则后,握手成功。