`
囧囧有神
  • 浏览: 207373 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

FIX协议学习笔记

    博客分类:
  • FIX
阅读更多

Fix 协议可以分两大部分,会话层协议和业务层协议。会话层定义了数据通信相关的协议,业务层定义了金融活动相关的业务数据结构。 Fix 的会话层设计时候充分考虑了

稳定性,安全性,健壮性,高效性。稳定性指会话协议中定义了心跳消息来维护会话连接,安全性指协议从消息结构上支持数据加密,出错重传指

每个会话在两个端点各自维护一套消息序列号,防止消息丢失,漏发漏收,出现这种情况只要检查两边序列号的连续性就可以确定需要重传哪些消息。

  1. session 的通信各方维护一个 incomming 一个 outgoing 序列号。 Incomming 序列号用来检测序列号是否乱序或跨越。
  2. 心跳在 initiator 发送 logon 消息时候设置在心跳域上, acceptor initiator 的心跳间隔时间一致。
  3. Fix 消息要按序列号从小到大顺序处理,若收发过程中出现丢包则有两种策略:重传序列号出错的包及以后所有收到得包;另一种是只重传出错的包;
  4. Fix 协议没有定义应答消息,使用序列号不连贯来检测消息丢失,用 checksum ,签名或消息体长度来检测消息错误;
  5. Logon 阶段,客户端选择了了一个加密密钥,但服务器选择了不同的密钥放在返回的 logon 消息中,这时候客户端还得发一个 logon 消息应答服务器端,两个作用: 1). 让服务器知道密钥变更获得了客户端的响应; 2). 下面的消息开始要加密了
  6. logon 阶段完成后必须马上检查序列号,同步收发的消息,比如一端发送了消息但另一端没收到,这时候需要重传。可以通过对比 logon 消息中的序列号和通信一方的期望收到的消息序列号来检测消息漏收发。
  7. 序列号最好每隔 24 小时重置一次,重置前要商量好哪一方来首先发送重置请求及发重置请求的时间。重置之前要一方首先发送 testrequest 消息,等待收 heartbeat 消息来确认连接是否正常,然后才发送 logon 消息,并把消息中的序列号重置域设为 Y ,并且序列号置为 1 ,接收方回复同样消息,重置成功;
  8. Logout 之前需要发送 testrequest 消息强制心跳,检测消息序列号是否连续, logout 消息发送出去之后,需要等待一段时间接收 logout 回应消息,这段时间让双方来处理序列号不一致的问题,一旦序列号同步之后 logout 接收者马上发送回应的 Logout 消息, Logout 发起方收到回应后负责来关闭会话。
  9. Fix4.4 中在 logon 消息中加入了 NextExceptedSeqNumb 域,用来表示本方期望对方发过来的下一个序列号,这样 logon 阶段完成后直接就是漏发消息的重发,不需要再发送 testrequest, heartbeat ResendRequest消息了。
  10. possResend possDupFlag 区别就是前者使用了新序列号发送老的消息,可以通过检查消息中的域来确定是否已经收到过改消息,比如 order ID 等;后者是用老的序列号重发消息,可以直接检查序列号来确定是否已经收到过该消息,若已收到过了就丢弃该消息。
  11. logon 消息中有两个字段 RAW Data Length RAW data 用来存放认证需要的数据;
分享到:
评论

相关推荐

    通信仿真fix-mast开发笔记

    如果"Fix-Mast"是一个特定的开源项目或软件,那么其详细功能、API接口、使用教程和案例分析等内容需要参考其官方文档或源代码来深入学习。"image_fix-master (22).zip"可能是包含该项目相关图像资料的压缩包,解压后...

    源码笔记xmind格式.zip_运动控制源码笔记

    总体来说,这份《运动控制源码笔记》为学习和研究运动控制系统的开发者提供了丰富的资源,无论是对马琳固件的深入理解,还是对比分析TinyG、GRBL和Smoothieware等不同固件,都能帮助读者深化对运动控制原理和实践的...

    基于SQL server 2008数据库的ifix操作记录教程.zip

    在IT领域,数据库管理和操作是至关重要的技能,尤其是在企业级应用中。本教程"基于SQL Server 2008数据库...通过深入学习这些内容,你将能够有效地管理基于SQL Server 2008的数据库系统,以及与ifix集成的FIX协议处理。

    leetcode下载-zongzhec:真读我

    Fix协议作为常用的交易标准协议,在金融领域有着广泛的应用。QuickFix虽然是一个成熟的框架,但是在应用中也有一些需要注意的地方。此项目可以直接显示利用QuickFix搭建交易系统的收发双方,并详细介绍常用的消息...

    2048游戏java笔试题-hello-world:我是一个新手.学习使用的仓库。文档转载请注明出处,谢谢

    深度学习,神经网络图谱,笔记等。 这里面的脚本在jupyter notebook中执行可以,目前自定义配置的sublime中的Python执行会抛出弃用警告 DeprecationWarning: the imp module is deprecated in favour of importlib; ...

    梦幻水族馆DreamAquarium

    文件"梦幻水族馆DreamAquariumV1.040_fix2_XiaoSD.exe"是该屏保程序的一个特定版本,版本号为1.040,包含了修复补丁“fix2”,并且可能是针对小屏幕设备(如笔记本电脑)优化的版本。这个文件很可能包含了完整的安装...

Global site tag (gtag.js) - Google Analytics