FIX 协议(2)

184 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

今天继续 FIX 协议,昨天说到了 FIX 协议工作原理的序列号,今天继续 FIX 协议的工作原理,主要也是一些概念的介绍......

心跳

  • 在消息交互期间,FIX应用程序将周期性产生Heartbeat心跳消息。该心跳消息可以监控通信链路状态及识别接收序列号间隙。发送Heartbeat的周期间隔由会话发起者使用在Logon消息中HeartBtInt域进行定义。
  • Heartbeat心跳消息的时间间隔应当在每一个消息发送后复位,即发送一个消息后,在间隔给定的时间内无其它消息发送则发送一个Heartbeat心跳消息。HeartBtInt的值应当被会话双方认同,由会话发起方定义并由会话接收者通过Logon消息进行确认。同一个HeartBtInt被会话双方——登录的发起者和登录的接受者共同使用。

数据完整校验

  • 消息数据内容的完整性可以参用两种方式来验证:消息长度和效验码检查。
  • 程序通过计算BodyLength域到CheckSum标记(“10=”)分界符的字符数,域BodyLength标示的消息长度进行比较来完成完整性效验。
  • ChekSum完整性检查,通过计算从域“8=” 中“8”开始,包括紧跟在CheckSum标记域的分界符每个字符的2进制和同CheckSum进行比较得到。
  • 一个FIX消息校验和通过计算到ChechSum域(但不包括)的消息的每个字节和得到。然后,校验和被转换为模256的数字用于传送和比较。校验和在所有加密操作之后被计算。

消息确认

  • FIX协议不支持单个消息的确认。采用的是监控消息时隙的方法来进行消息恢复和验证。
  • 普通的数据传送(无单个消息确认)通过消息序列间隙进行错误识别。每个消息由一个唯一的序列号进行标示。接收端应用程序负责监控接收消息序列号以识别消息间隙并产生重传请求。
  • 每个FIX参与方必须为FIX会话维护两个序列号,一个是接收序列号,一个是发送序列号,两者都在建立FIX会话开始时初始化为1。每个消息被赋予一个唯一的序列号值,并在消息发送后递增。此外,每个收到的消息都有一个唯一的序列号,接收序列号计数器在收到每个消息后将会被递增。
  • 当接收序列号与所希望得到的的正确序列号不必配时,必须采取纠错处理。

今天主要介绍了几个概念:心跳、数据完整校验、消息确认等,主要也是涉及到了 FIX 协议工作的原理部分。概念只是帮助理解,最重要还是实践,加油!
希望本文能够帮到你,如有错误,望指正!
我向你敬礼啊,Salute!