关闭

金融信息交换协议(FIX)5.0 FIXT1.1(5)

标签: 金融网络transitionsession活动action
4167人阅读 评论(0) 收藏 举报
 
6 FIX 会话层测试用例和期望行为
6.1 Applicability 适用性
本文档在2002年9月20日最后被修订,当时的FIX协议的最新版本为带有20020930的扩展的FIX 4.3 。此文当适用于FIX4.X,除非特别说明。
6.2When to send a Logout vs. when to just disconnect何时发送Logout与仅断开连接
一般情况下,一个Logout消息应在关闭一个连接前发送。如果这个Logout消息是源于一个错误条件,Logout的Text域应提供错误原因的描述,为远端FIX系统提供问题诊断的操作支持。这里有2个例外,推荐不发送Logout消息:
1、在登陆阶段,如果会话发起者的SenderCompID,TargetCompID或IP其中一个无效时,推荐立即终止会话,不发送Logout消息。这个登陆尝试有可能使一个未经授权的破坏系统的未认证尝试,因此,企业不希望泄露其FIX系统的任何信息,如,哪个SenderCompID,TargetCompID是有效的,或所支持的FIX版本。
2、在登陆阶段,当一个有效的FIX会话已经被一个企业使用时,该企业的第2次连接尝试的Logon消息被接受时,推荐会话接收者立即中断该第2次连接尝试,不发送Logout消息。发送一个Logout消息将冒着妨碍和影响当前FIX连接的风险。例如:在一些FIX实现系统中,发送一个Logout消息可能会消耗一个序列号,这样将会导致在一个已经建立的FIX会话中的序列号混乱。
在其他情况下,如果发送一个Logout消息不产生风险和安全冲突,Logout消息应随同描述信息一起发送。
6.3 When to send a Session Reject vs. when to ignore the message 何时发送会话驳回与何时忽略消息
以下内容从FIX协议规范中的Reject消息定义中摘抄:
注意:接收程序应忽略任何文本混乱,不能被解析以及数据完整性检查失败的消息。处理下一个右下的FIX消息将导致检测到一个序列号间隙并产生一个重传请求消息Resend Request。这种情况下,FIX引擎应包含识别重传无限循环的逻辑。
FIX协议采取乐观的观点。它假设一个混乱的消息是由于传输中出现的错误,而不是FIX系统的问题。因此,如果发送一个重传请求消息(Resend Request),该混乱消息将被正确得重传。如果一个消息没被认为是混乱的,那么,推荐发送一个会话级驳回消息。
6.4 What constitutes a garbled message 什么样的情况认为是一个混乱消息
1.        BeginString(tag#8)不是一个消息中的第一个tag或不是8=FIXT.n.m.的格式。
2.        BogyLength(tag#9)不是一个消息中的第二个tag或没有包含正确的字节数。
3.        MsgType(tag#35)不是一个消息中的第三个tag。
4.        Checksum(tag#10)不适最后一个tag或没有包含正确的值。
如果丢失MsgSeqNum(tag#34),一个Logout消息将被发送以终止FIX连接。因为这种情况意味着一个严重的应用程序错误。
6.5 FIX Session-level State Matrix FIX会话层状态举证
Precedence
次序
State
状体
Initiator
发起者
Acceptor
接收者
Descriptioin
描述
1
断开 当天未连接
Y
Y
当前处于断开状态,当日未进行连接尝试。没有MsgSeqNum被使用(下一个当日的连接的MsgSeqNum值为1)。
2
断开 当日开始连接
Y
Y
当前处于断开状态,尝试建立当日连接,这样,MsgSeqNum开始被消耗(下一个当日连接时,MsgSeqNum将从其(last+1)开始)
3
检测到网络连接的中断
Y
Y
处于连接状态时,检测到一个网络连接中断(如TCP socket关闭)。断开网络连接并关闭该会话的配置。
4
等待连接
N
Y
会话登陆消息接收者等待对端的连接。
5
初始话(发起)连接
Y
N
会话登陆消息发起者同对端建立连接。
6
网络连接建立
Y
Y
双方建立网络连接。
7
发送Logon发起消息
Y
N
会话登陆发起者发送Logon
消息。
***异常:24小时会话
8
收到Logon发起消息
N
Y
会话登陆接收者收到对端的Logon消息
***异常:24小时会话
9
Logon发起消息响应
N
Y
会话登陆接收者使用Logon消息与对端握手,响应对端Logon消息。
10
处理ResendRequest
Y
Y
接收和响应对端发送的对消息的ResendRequeset消息,和(或)对MsgSeqNum所请求范围的SequenceReset-Gap Fill消息。修改以驳回接收到的MsgSeqNum小于LastSeqNum的Resend Request消息。
11
收到MsgSeqNum过大
Y
Y
从对端接收到过大的MsgSeqNum,将消息排队暂存,发送ResendRequest消息
12
等待/处理ResendRequest响应
Y
Y
处理请求的MsgSeqNum请求的、PossDupFlag=’Y’的消息,和/或从对端进行的SequenceRset-Gap Fill消息。将MsgSeqNu过高的接收消息排队暂存。
13
在实践间隔后未收到消息
Y
Y
没有非混乱消息在HeartBeatInt+响应时间内被接收,发送TestRequest消息。
14
等待/处理TestRequest消息响应
Y
Y
处理接收消息。当接收到非混乱消息后,复位心跳间隔时间。
15
接收Logout消息
Y
Y
从对端接收到发起注销/连接断开的Logout消息。如果MsgSeqNum过高,发送RsendRequest。如果发送,等待一定周期,以完成ResendRequest的响应处理。注意,依据Logout的原因,对端可能不能执行该请求。 发送Logout消息作为响应并等待一定时间让对端断开网络连接。注意,对端可能发送ResendRequest消息,如果Logout响应消息的MsgSeqNum过高并重新发起Logout操作。
16
发起Logout处理
Y
Y
识别优雅断开连接的条件和原因(如:日终,多个未响应的TestRequest消息发送后,MsgSeqNum过高等)。发送Logout效益给对端。等待一个时间周期以接收Logout响应。在这期间,如有可能,处理新接收的消息和/或ResendRequest。注意,一些注销/终止条件(如数据库/消息存储失败),可能要求紧接在初始沪Logout消息发送后立即止网络连接。断开该会话的网络连接并关闭该会配置。
17
活动/正常会话
Y
Y
网络连接建立后,Logon消息成果交换完成,接收和发送的MsgSeqNum都是所期望的顺序,并且Heartbeat 或其他消息在(HeartBeatInt +响应周期)内被接收。
18
等待Logon确认
Y
N
会话发起者等待会话接收者发送Logon确认消息。
6.6 FIX Logon Process State Transition Diagram     FIX登陆消息处理状态转换图
Session Initiator(e.g. buyside)Action 会话发起者(如,买方)行为
Session Acceptor(e.g. sellside)Action会话接收者(如,卖方)行为
Session Initiator(e.g.buyside)State会话发起者(如,买方)状态
Session Acceptor(e.g. sellside)State会话接收者(如,卖方)状态
开始
 
未连接-当日未连接
未连接-当日连接
等待连接
连接
 
发起连接
(可能)检测到网络连接中断
等待连接
 
接受连接
建立网络连接
建立网络连接
发起登陆
 
发送发起登陆消息Logout
建立网络连接
 
收到发起登陆消息Logout
发送发起登陆消息Logout
收到发起登陆消息Logout
 
发送发起登陆消息响应
发送发起登陆消息Logout
发起Logon的响应
 
(可能)发起 Logout处理
 
(可能)接收到的MsgSeqNum过高
 
(可能)发送ResendRequest
 
发起Logon响应
 
(可能)接收到的MsgSeqNum过高
接收发起登陆消息的响应
 
(可能)活动/正常的会话
(可能)发起 Logout处理(如,MsgSeqNum过高)
发起Logon的响应
 
(可能)发送RsendRequest
 
(可能)活动/正常的会话
(可能)接收的MsgSeqNum过高
(可能)活动/正常的会话
(可能)处理ResendRequest
 
 
活动/正常的会话
活动/正常的会话
6.7 FIX Logout Process State Transition Diagram    FIX Logout处理状态转换图
Logout Initiator: Action
Logout发起者行为ie
Logout Acceptor Action
Logout接收者行为
Logout Initiator State
Logout发起者状态
Logout Acceptor State
Logout接收者状态
开始
 
1.        活动/正常的会话
2.        没有在时间间隔内收到消息
3.        等待/处理响应TestRequest
 
 
 
 
 
 
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:100868次
    • 积分:1154
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:4篇
    • 译文:2篇
    • 评论:15条
    最新评论