加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

新版期货数据交换(FTD)协议报文分析(1)

(2014-03-30 11:05:31)
标签:

ftd

ctp

期货数据协议

分类: 编程相关
因工作需要,黑盒分析了上期技术CTP平台报文。(基于FTD协议2004版改进)

网上公开的只能找到04年老版本,和现前报文格式出入较大。参考:http://www.docin.com/p-64404169.html

本人花了几个晚上用wireshark抓包分析,已经可以完整还原新版FTD协议流程。

先简单介绍CTP平台工作流程,大致分为三种通讯模式:
  • 对话通讯模式如查询,报单等(REQ<->RSP)
  • 私有通讯模式如委托成交推送(PULL<->PUSH)
  • 广播通讯模式如市场公告,行情推送(SUB<->PUB)
每种模式对应一种TCP数据流。(行情推送还可用内网UDP连接)

下面直奔主题。

1 报文格式

1.1 FTD报文

FTD报文由报头、扩充报头和信息正文三个部分组成。如下图所示。报头描述数据报的整体信息;扩充报头提供链路管理功能;FTD报文内容是具体的各个域的内容。

http://s16/mw690/001JrDJ6gy6HI14TanZdf&690

 

FTD报文结构

1.1.1 FTD报头

FTD报头由四个字节组成,如图所示:

http://s14/mw690/001JrDJ6gy6HI18n1q57d&690

  • 扩充长度:扩充报头字节长度;如果扩充长度等于0,代表没有扩充报头,紧跟在报头后面的是信息正文
  • 信息正文长度:整个报文中信息正文的字节长度。采用网络顺序(BIG-ENDIAN),Windows二进制存储为LITTLE-ENDIAN如果信息正文长度等于0,代表此报文没有信息正文,是链路管理报文。注:信息正文长度不包括报头和扩充报头的长度。
http://s4/mw690/001JrDJ6gy6HI1yhvpNb3&690
为了节约带宽,减少数据冗余,CTP平台采用简单压缩处理。

1.1.2 FTD扩充报头

扩充报头最长127个字节,由一系列的按照下图规定的标记组成。

http://s10/mw690/001JrDJ6gy6HI2x1VHzb9&690

标记类型及其内容描述的定义见下。如果没有标记数据,则标记长度等于0

http://s9/mw690/001JrDJ6gy6HI2E9ahqd8&690

如果接收到无法识别的标记,只需将其简单丢弃,不做其他处理。

1.1.3 FTD信息正文

FTD信息正文可能是以下两种内容:

  • 未压缩过的FTDC报文
  • 压缩后的FTDC报文

FTD信息正文的长度由FTD报头中的信息正文长度字段确定。

1.2  FTDC报文

 

FTDC报文是FTD报文中的主要内容,它封装在FTD报文中,其结构如下所示:报头,FTDC报文的信息正文

http://s3/mw690/001JrDJ6gy6HIQoB8Q212&690

FTDC报文包括22个字节的FTDC报头和为数不等的数据域组成的FTDC信息正文。整个FTDC报文长度不能超过4096字节(4K)。报文中所有传送的二进制数据全部采用网络序

1.2.1 FTDC报头

FTDC报头有22个字节,表示FTD信息正文的类型、长度等控制信息。其具体定义见3 

http://s10/mw690/001JrDJ6gy6HIRLuAT7c9&690
     注:正文长度疑似包括requestid长度。也就是后面正文加上4个字节。目前验证过,确是如此。

1.2.1.1 信息正文类型

 

在FTDC报头后紧接着信息正文类型TID以及解码后长度,为二进制短整数。这些类型的定义见下篇


正文编码算法

在2004年FTD标准里提到压缩,一般用UNIX的LZW算法,但实际应用中为另外一种简单编码。暂且称之CTP Encode。证券Level2行情亦用到此算法。

用户发送过去的报文全为明文,接收到的反馈才编码过。算法如下:

除了报头八字节(到报文链ASCII为止)外,对各数据域未用足的NULL位字节用【0xe0加上NULL的个数】来替代,而实际上原文值为【0xe0-0xef之间】的字节,用【0xe0以及原文两个字节】替代。C代码解码附上。

例子:编码后的数据  0x02 00 00 08 04 0xe0 0xec 0xe4 解码为

                   0x02 00 00 08 04 0xec 00 00 00 00

(渣浪不支持代码排版,只能贴图)

http://s7/mw690/001JrDJ6gy6HIPgdiHI96&690

根据分析出的协议写的Demo程序可测试:Hack CTP 下载
 

未完待续,晚上有空继续完善。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有