当前位置:首页 > 轻量级STEP会话层接口规范1.00
Version1.00 141 ResetSeqNumFlag 轻量级STEP会话层接口规范 Boolean 序号重设标志 缺口填补标志 2015-08-28
用于序号重设消息,指示是否填补缺口,取值: 123 GapFillFlag Boolean =Y: 序号重设-缺口填补消息,消息序号域有效 =N或不存在序号重设-重设消息,消息序号域无效 347 371 372 373 383 553 554 789 1137 MessageEncoding RefTagID RefMsgType SessionRejectReason C16 N9 C16 N9 Length C32 C32 SeqNum C8 消息中编码域的字符编码类型 缺省是GBK 相关错误消息中,出现错误的FIX域号 相关错误消息的MsgType 会话拒绝原因编号,无符号整数 最大消息长度,单条消息的最大字节数。 该字段暂未启用 用户名 密码 接收方期望得到的下一条消息序号 本次会话中使用的FIX消息的缺省版本。若取值为'9',意思是 'FIX50SP2' 本次会话中使用的FIX消息[在Tag1137基础上]的缺省扩展包。若取值 '124',意思是'EP124' 本次会话中,FIX消息的缺省自定义应用版本。本标签是对tag 1137 + tag 1407 的进一步约束。 本字段填写交易所发布的数据协议版MaxMessageSize UserName Password NextExpectedMsgSeqNum DefaultApplVerID 1407 DefaultApplExtID N8 1408 DefaultCstmApplVerID C32 本。建议的格式是:STEP版本号_市场代码_市场内部唯一的协议版本号。市场代码是SH时,代表上海证券交易所;是SZ时,代表深圳证券交易所。市场内部唯一的协议版本号由各市场自行分配。 1409 SessionStatus N4 本字段填写退登时的会话状态
第20页共38页
Version1.00 轻量级STEP会话层接口规范 2015-08-28
附 录 A (登录场景) 正常登录场景一
LFIX作为登录发起方——Client,LFIX作为登录接受方——Server,日间正常登录。 场景开始时,TCP连接刚建立时,Client 的 NxtOut=1, NxtIn = 1,Server 的 NxtOut = 1, NxtIn = 1。
ClientServer建立TCP连接LOGONTag 34/MsgSeqNum = 1Tag 141/ResetSeqNumFlag = YTag 789/NextExpectedMsgSeqNum = 1LOGONTag 34/MsgSeqNum = 1Tag 141/ResetSeqNumFlag = YTag 789/NextExpectedMsgSeqNum = 2LFIX会话成功建立
图A.1 正常登录场景一
FIX会话建立后,Client 的 NxtOut=2, NxtIn = 2,Server 的 NxtOut = 2, NxtIn = 2。
正常登录场景二
标准FIX作为登录发起方——Client,LFIX作为登录接受方——Server,日间非首次正常登录,且Client不设置ResetSeqNumFlag,设置NextExpectedMsgSeqNum为其在前一次连接断开时的NxtIn。
第21页共38页
Version1.00 轻量级STEP会话层接口规范 2015-08-28
场景开始时,TCP连接刚建立后,Client 的 NxtOut=100, NxtIn = 189,Server 的 NxtOut = 1, NxtIn = 1。在此之前,Server曾经向Client发送过MsgSeqNum 为189, 190的业务消息,但因为通信故障,Client没有收到,所以Client端保存的NxtIn仍然是189,而非191。
ClientServer建立TCP连接NxtIn = 1NxtOut = 1LOGONTag 34/MsgSeqNum = 100Tag 141/ResetSeqNumFlag = NTag 789/NextExpectedMsgSeqNum = 189NxtIn = 101NxtOut = 189LOGONTag 34/MsgSeqNum = 189Tag 141/ResetSeqNumFlag = NTag 789/NextExpectedMsgSeqNum = 101FIX会话成功建立
图A.2 正常登录场景二
FIX会话建立后,Client 的 NxtOut=101, NxtIn = 190,Server 的 NxtOut = 190, NxtIn = 101。注意两次TCP连接上Server发送给Client的MsgSeqNum = 189的消息并不相同,但因为Client没有保存之前收到的MsgSeqNum = 189 的业务消息,所以第二次收到MsgSeqNum = 189的Logon应答消息也不会发现存在不一致。
正常登录场景三
为了说明在标准FIX协议中,NextExpectedMsgSeqNum相关的自动缺口填补的原理,撰写此场景。本场景中,通信双方都遵循标准FIX协议。
在场景开始的时候,Server的 NxtOut是250,NxtIn是200;由于Server和Client之间出现了网络中断,因此Client只收到了序号为247(含)以前的来自Server的消息,其NxtOut是200,NxtIn是248。
第22页共38页
Version1.00 轻量级STEP会话层接口规范 2015-08-28
Server收到的来自Client的登录消息中,NextExpectedMsgSeqNum是248,但Server端内部下一个发送的应该是LOGON消息,必须使用新的序号250。但Server端也知道Client端出现了消息缺口,且根据协议Client不会为此缺口发送ResendRequest消息,而是需要Server端主动推送缺口部分的消息。因此Server端马上重复传送业务消息248,业务消息249,并用SeqReset-GapFill消息替代消息250——Logon消息,之后就可以开始正常传送业务消息251。
ClientServerNxtOut = 250NxtIn = 200NxtOut = 200NxtIn = 248LogonTag 34/MsgSeqNum = 200Tag 789/NextExpectedMsgSeqNum = 248NxtOut = 201NxtIn = 248LogonTag 34/MsgSeqNum = 250Tag 789/NextExpectedMsgSeqNum = 201NxtOut = 250NxtIn = 201NxtOut = 201NxtIn = 251NxtOut = 251NxtIn = 201重传应用消息 248Server发现自己发送了消息250,但Client最多只知道消息247,因此必须主动填补缺口Tag 34/MsgSeqNum = 248Tag 43/PossDupFlag = Y重传应用消息249Tag 34/MsgSeqNum = 249Tag 43/PossDupFlag = YSeqReset-GapFill 替代 LogonTag 34/MsgSeqNum = 250Tag 123/GapFillFlag = YNxtOut = 201NxtIn = 251应用消息 251NxtOut = 252NxtIn = 201NxtOut = 201NxtIn = 252Tag 34/MsgSeqNum = 251Tag 43/PossDupFlag = N
图A.3 正常登录场景三
第23页共38页
共分享92篇相关文档