新版期貨資料交換(FTD)協議報文分析

2022-03-27 01:33:59 字數 2056 閱讀 6226

因為需要開發模擬ctp後台服務,實現一鍵切換ctp,所以我們需要分析ctp報文。(基於ftd協議2004版改進)

網上公開的只能找到04年老版本,和現前報文格式出入較大。參考:

本人花了幾個晚上用wireshark抓包分析,已經可以完整還原新版ftd協議流程。

先簡單介紹ctp平台工作流程,大致分為三種通訊模式:

每種模式對應一種tcp資料流。(**推送還可用內網udp連線)

下面直奔主題。

1 報文格式

1 ftd

報文ftd報文由報頭、擴充報頭和資訊正文三個部分組成。如下圖所示。報頭描述資料報的整體資訊;擴充報頭提供鏈路管理功能;ftd報文內容是具體的各個域的內容。

ftd報文結構

1.1.1 ftd報頭

ftd報頭由四個位元組組成,如圖所示:

擴充長度:擴充報頭位元組長度;如果擴充長度等於0,代表沒有擴充報頭,緊跟在報頭後面的是資訊正文

為了節約頻寬,減少資料冗餘,ctp平台採用簡單壓縮處理。

1.1.2 ftd

擴充報頭

擴充報頭最長127個位元組,由一系列的按照下圖規定的標記組成。

標記型別及其內容描述的定義見下表。如果沒有標記資料,則標記長度等於0。

如果接收到無法識別的標記,只需將其簡單丟棄,不做其他處理。

1.1.3 ftd

資訊正文

ftd資訊正文可能是以下兩種內容:

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以及解碼後長度,為二進位制短整數。這些型別的定義見下篇。

正文編碼演算法

在2023年ftd標準裡提到壓縮,一般用unix的lzw演算法,但實際應用中為另外一種簡單編碼。暫且稱之ctp encode。**level2**亦用到此演算法。

使用者傳送過去的報文全為明文,接收到的反饋才編碼過。演算法如下:

除了報頭八字節(到報文鏈ascii為止)外,對各資料域未用足的null位位元組用【0xe0加上null的個數】來替代,而實際上原文值為【0xe0-0xef之間】的位元組,用【0xe0以及原文兩個位元組】替代。c**解碼附上。

例子:編碼後的資料0x02 00 00 08 04 0xe0 0xec

0xe4 解碼為

資料交換 電路交換

為什麼要資料交換 那麼有幾個問題 1.n 2鏈路問題,有n個網路要相互連線 之後就想了乙個辦法,產生交換裝置進行連線 這樣子還有個問題,距離,連通性的問題 這樣就產生了交換網路 動態分配傳輸資源 實現資料從源主機穿越交換網路到達目的機 資料交換的型別 電路交換 報文交換 分組交換 最典型電路交換網路...

資料交換技術

廣域網研究的重點就是寬頻核心交換技術。從交換技術的發展歷史看,資料交換經歷了電路交換 報文交換 分組交換和綜合業務數字交換的發展過程。分組交換實質上是在 儲存 基礎上發展起來的。它兼有電路交換和報文交換的優點。常說的分組交換也就是儲存 方式中的報文分組交換方式。包括資料報方式和虛電路方式。資料報類似...

分割槽資料交換

資料交換表面看上去是兩個段裡面的資料進行交換,其實就是資料字典的交換,但是表結構必須一樣 下面乙個例子交換分割槽和索引 建立分割槽 create table part index example x number y number,data varchar2 20 partition by rang...