因为需要开发模拟CTP后台服务,实现一键切换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 FTD报文

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

FTD报文结构

1.1.1 FTD报头

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

扩充长度:扩充报头字节长度;如果扩充长度等于0,代表没有扩充报头,紧跟在报头后面的是信息正文

  • 信息正文长度:整个报文中信息正文的字节长度。采用网络顺序(BIG-ENDIAN),Windows二进制存储为LITTLE-ENDIAN。如果信息正文长度等于0,代表此报文没有信息正文,是链路管理报文。注:信息正文长度不包括报头和扩充报头的长度。

为了节约带宽,减少数据冗余,CTP平台采用简单压缩处理。

1.1.2 FTD扩充报头

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

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

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

1.1.3 FTD信息正文

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

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

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

1.2  FTDC报文

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

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

1.2.1 FTDC报头

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

注:正文长度疑似包括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://blog.sina.com.cn/s/blog_5ea1b3600101i16e.html

新版期货数据交换(FTD)协议报文分析的更多相关文章

  1. 韩顺刚-tcp报文头协议详细分析第一包数据:序号是0,发送数据的长度是0,因为没有收到对端的数据,所以确认号是0, Syn的标志位设置成1,这里没有发送的数据,只发送TCP的20个字节的头部

    TCP报文段首部格式 大部分TCP报文头部都是20个字节,有的数据包要加上选项. 上面一行代表4个字节,源端口和目的端口都是2个字节. TCP协议是面向字节流的协议 TCP是一段一段分块的发送数据的 ...

  2. http协议请求报文与响应报文分析

    什么是HTTP协议: HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到 不断地完善和扩展.目前在WWW中使用 ...

  3. CPU卡中T=0通讯协议的分析与实现

    IC卡的应用越来越广泛,从存储卡到逻辑加密卡,目前CPU卡已经逐渐在应用中占据主导地位.CPU卡根据通讯协议可分为两种:接触式和非接触式.接触式CPU卡主要采用两种通讯协议:T=0和T=1通讯协议.T ...

  4. [转帖]InfiniBand技术和协议架构分析

    InfiniBand技术和协议架构分析 2017年06月06日 20:54:16 Hardy晗狄 阅读数:15207 标签: 云计算存储Infiniband 更多 个人分类: 存储云计算   版权声明 ...

  5. 针对CDP协议攻击分析及安全防护

    针对CDP协议攻击分析及安全防护 熟悉Cisco的朋友都知道CDP协议是思科公司独特的发现协议,在思科公司出产的所有路由器和交换机里面都能运行此协议,一台运行C D P的路由器或交换机能够得知与它直接 ...

  6. Google Protocol Buffer 的使用和原理(无论对存储还是数据交换,都是个挺有用的东西,有9张图做说明,十分清楚)

    感觉Google Protocol Buffer无论对存储还是数据交换,都是个挺有用的东西,这里记录下,以后应该用得着.下文转自: http://www.ibm.com/developerworks/ ...

  7. 哈工大计算机网络Week2-网络应用数据交换

    目录 网络应用数据交换 P2P应用:原理与文件分发 纯P2P架构 文件分发:客户机/服务器 vs. P2P CS 为什么是这样的?不应该传送和发出难道是并行的??? P2P P2P文件分发典型例子:B ...

  8. capwap协议重点分析

    一.     CAPWAP概述 CAPWAP由两个部分组成:CAPWAP协议和无线BINDING协议. (1)CAPWAP协议是一个通用的隧道协议,完成AP发现AC等基本协议功能,和具体的无线接入技术 ...

  9. Android IOS WebRTC 音视频开发总结(八十六)-- WebRTC中RTP/RTCP协议实现分析

    本文主要介绍WebRTC中的RTP/RTCP协议,作者:weizhenwei ,文章最早发表在编风网,微信ID:befoio 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID ...

随机推荐

  1. URLRewrite地址重定向的实现

    URLRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址.其优点有: (1)提高安全性,可以有效的避免一些参数名.ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规 ...

  2. (转)Vue2.X的路由管理记录之 钩子函数(切割流水线)

    $route可以在子组件任何地方调用,代表当前路由对象,这个属性是只读的,里面的属性是 immutable(不可变) 的,不过你可以 watch(监测变化)它. 导航和钩子函数: 导航:路由正在发生改 ...

  3. POJ 3122-Pie(二分+精度)

    题目地址:id=3122">POJ 3122 题意:给出n个pie的直径.有F+1个人,假设给每人分的大小同样(形状能够不同),每一个人能够分多少.要求是分出来的每一份必须出自同一个p ...

  4. Linux 倒引号、单引号、双引号

    1.倒引号表示命令,用于命令替换,获取命令的返回结果. echo now is `date` 或者 echo now is $(date) 2.单引号 name=Andy  没有问题, 如果想 nam ...

  5. Hibernate从入门到上手(纯java project、Maven版本hibernate)

    Hibernate(orm框架)(开放源代码的对象关系映射框架) Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一 ...

  6. VS报表图解《一》---菜鸟版

    与原先的开发环境VB.EXE不同VS2013自带了报表控件ReportViewer能够内部实现报表的设计,本文主要通过绑定数据集来实现报表的显示 1.加入:reportviewer控件,当将控件显示在 ...

  7. windows下at命令使用详解

    T命令是Windows XP中内置的命令,它也可以媲美Windows中的“计划任务”,而且在计划的安排.任务的管理.工作事务的处理方面,AT命令具有更强大更神通的功能.AT命令可在指定时间和日期.在指 ...

  8. static、final修饰符、内部类

    static修饰符: static修饰符能够与属性.方法和内部类一起使用,表示静态的.类中的静态变量和静态方法能够与类名一起使用.不须要创建一个类的对象来訪问该类的静态成员. class Static ...

  9. MVC项目发布到IIS遇到的问题

    MVC4 + .NET Framework 4.5 +Windows Server 2008+ IIS7.5 + 4.0集成模式池 ,发布后可能会遇到404.0 或者403.14错误,在web.con ...

  10. java基础讲解08-----类和对象

    1.什么是面向对象? 面向对象设计的实质 就是对现实世界的对象进行建模操作. 现实的生活中,随处可见的一种事物就是对象,对象是事物存在的实体,通常我们将会对对象划分为两个部分,静态部分和动态部分.比如 ...