客户端服务端1. TCP/HTTP连接建立2. 版本协商请求verNego_Req2. 版本协商应答verNego_Resp3. 链路鉴权请求linkAuth_Req3. 链路鉴权应答linkAuth_Resp4. 数据发送请求4. 数据发送应答5. 链路检测请求linkCheck_Req5. 链路检测应答linkCheck_Resp6.链路数据发送校验linkDataCheck_Req6.链路数据发送校验应答linkDataCheck_Resp7.链路释放请求linkRel_Req7.链路释放应答linkRel_Resp8. TCP/HTTP连接拆除
图5-3 SDTP数据传输协议流程
SDTP连接建立和通信流程说明如下:
(1) 请求的发起方作为客户端向服务端指定的IP地址和端口建立TCP长连接; (2) 客户端发起版本协商流程,若协商失败,则转(7)拆除连接;
(3) 客户端向服务端发起链路鉴权请求(使用数据合成服务器与各应用系统间协商
好的共享密钥),若服务端鉴权失败,则转(7)拆除连接;
(4) 请求的发起方发送数据,接收方收到数据并处理后回复处理结果;
(5) 在连接保持期间,如果没有数据包发送,客户端发送链路检测/应答包以维持此
连接;若发现链路断开,则转(7)拆除连接;
(6) 通信完成后,客户端主动发起链路释放请求;
第13页
(7) 双方均可拆除该连接; 5.1.4
连接管理消息
版本协商verNego
5.1.4.1.1 请求
版本协商请求,用于在连接的鉴权通过后,客户端与服务器端协商通信协议版本的信息,由连接的建立方主动发起协议版本协商。参数定义如下:
表5-4 参数定义 字段名 Version SubVersion 字节数 1 1 类型 Unsigned Integer Unsigned Integer 描述 协议的主版本号 协议的子版本号 版本协商的发起方从自身支持的最高版本开始协商,高版本协商失败后再协商低版本。 5.1.4.1.2
应答
版本协商应答,用于返回版本信息的核对结果,参数定义如下:
表5-5 参数定义 字段名 Result 字节数 1 类型 Unsigned Integer 描述 返回原因值。 协议协商的结果,各个值代表意义如下: 1: 版本协商通过。 2: 版本过高。 3: 版本过低。 链路认证linkAuth
5.1.4.1.3 请求
连接鉴权请求,参数定义如下:
表5-6 参数定义 字段名 LoginID 字节数 12 类型 String 描述 账户ID。 由连接的服务端给连接的客户端分配的连接帐号。 描述 用于鉴别源用户,其值通过SHA256计算得出,当对端用相同方式加密之后与接收值 比较,如果计算出来的值相同,第14页
字段名 Digest 字节数 64 类型 String
则通过校验,否则出错。 Timestamp 4 Unsigned Integer 时间戳的明文。 由客户端产生,单位为秒(1970年1月1日0时0分0秒起至当前的偏移总秒数) 由客户端产生的随机数 RAND 5.1.4.1.4
应答
2 Unsigned Integer 连接鉴权应答,参数定义如下:
表5-7 参数定义 字段名 Result 字节数 1 类型 Unsigned Integer 描述 鉴权的返回结果。各个值的含义如下定义: 1 代表鉴权通过。 2 代表LoginID不存在。 3 代表SHA25