【正文】
不同的消息序號),取值:: 可能重發(fā): 首次發(fā)送加密方法: 即不加密心跳監(jiān)測的時間間隔為系統(tǒng)設(shè)定值,以秒為單位測試請求標識符序號重設(shè)標志缺口填補標志用于序號重設(shè)消息,指示是否填 補缺口,取值:: 序號重設(shè)缺口填補消息,消息序號域有效或不存在序號重設(shè)重設(shè)消息,消息序號域無效消息中編碼域的字符編碼類型缺省是相關(guān)錯誤消息中,出現(xiàn)錯誤的域號相關(guān)錯誤消息的會話拒絕原因編號,無符號整數(shù)最大消息長度,單條消息的最大字 節(jié)數(shù)。該字段暫未啟用用戶名密碼 接收方期望得到的下一條消息序號本次會話中使用的消息的缺省版本。若取值為39。39。,意思是 39。39。本次會話中使用的消息[在基 礎(chǔ)上] 的缺省擴展包。若取值 39。39。,意思是 39。39。本次會話中,消息的缺省自定 義應(yīng)用版本。本標簽是對 的進一步 約束。本字段填寫交易所發(fā)布的數(shù)據(jù)協(xié)議版本。建議的格式是:版本號市場 代碼市場內(nèi)部唯一的協(xié)議版本號。市 場代碼是時,代表上海證券交易所;是 時,代表深圳證券交易所。市場內(nèi)部唯一的協(xié)議版本號由各市場自行分配。19 / 42本字段填寫退登時的會話狀態(tài)20 / 42附 錄 A(登錄場景)正常登錄場景一作為登錄發(fā)起方——,作為登錄接受方——,日間正常登錄。場景開始時,連接剛建立時, 的 , , 的 , 。C l i e n tS e r v e r建立 T C P 連接L O G O NT a g 3 4 / M s g S e q N u m = 1T a g 1 4 1 / R e s e t S e q N u m F l a g = YT a g 7 8 9 / N e x t E x p e c t e d M s g S e q N u m = 1L O G O NT a g 3 4 / M s g S e q N u m = 1T a g 1 4 1 / R e s e t S e q N u m F l a g = YT a g 7 8 9 / N e x t E x p e c t e d M s g S e q N u m = 2L F I X 會話成功建立圖 正常登錄場景一會話建立后, 的 , , 的 , 。正常登錄場景二標準作為登錄發(fā)起方——,作為登錄接受方——,日間非首次正常登錄,且不設(shè)置,設(shè)置為其在前一次連接斷開時的。場景開始時,連接剛建立后, 的 , , 的 , 。在此之前,曾經(jīng)向發(fā)送過 為, 的業(yè)務(wù)消息,但因為通信故障,沒有收到,所以端保存的仍然是,而非。21 / 42C l i e n tS e r v e r建立 T C P 連接L O G O NT a g 3 4 / M s g S e q N u m = 1 0 0T a g 1 4 1 / R e s e t S e q N u m F l a g = NT a g 7 8 9 / N e x t E x p e c t e d M s g S e q N u m = 1 8 9L O G O NT a g 3 4 / M s g S e q N u m = 1 8 9T a g 1 4 1 / R e s e t S e q N u m F l a g = NT a g 7 8 9 / N e x t E x p e c t e d M s g S e q N u m = 1 0 1F I X 會話成功建立N x t I n = 1 0 1N x t O u t = 1 8 9N x t I n = 1N x t O u t = 1圖 正常登錄場景二會話建立后, 的 , , 的 , 。注意兩次連接上發(fā)送給的 的消息并不相同,但因為沒有保存之前收到的 的業(yè)務(wù)消息,所以第二次收到 的應(yīng)答消息也不會發(fā)現(xiàn)存在不一致。正常登錄場景三為了說明在標準協(xié)議中,相關(guān)的自動缺口填補的原理,撰寫此場景。本場景中,通信雙方都遵循標準協(xié)議。在場景開始的時候,的 是,是;由于和之間出現(xiàn)了網(wǎng)絡(luò)中斷,因此只收到了序號為(含)以前的來自的消息,其是,是。收到的來自的登錄消息中,是,但端內(nèi)部下一個發(fā)送的應(yīng)該是消息,必須使用新的序號。但端也知道端出現(xiàn)了消息缺口,且根據(jù)協(xié)議不會為此缺口發(fā)送消息,而是需要端主動推送缺口部分的消息。因此端馬上重復傳送業(yè)務(wù)消息,業(yè)務(wù)消息,并用消息替代消息——消息,之后就可以開始正常傳送業(yè)務(wù)消息。22 / 42C l i e n tS e r v e rL o g o nL o g o nT a g 3 4 / M s g S e q N u m = 2 0 0T a g 7 8 9 / N e x t E x p e c t e d M s g S e q N u m = 2 4 8T a g 3 4 / M s g S e q N u m = 2 5 0T a g 7 8 9 / N e x t E x p e c t e d M s g S e q N u m = 2 0 1重傳應(yīng)用消息 2 4 8N x t O u t = 2 0 0N x t I n = 2 4 8N x t O u t = 2 0 1N x t I n = 2 4 8N x t O u t = 2 5 0N x t I n = 2 0 0N x t O u t = 2 5 0N x t I n = 2 0 1N x t O u t = 2 5 1N x t I n = 2 0 1N x t O u t = 2 0 1N x t I n = 2 5 1S e r v e r 發(fā)現(xiàn)自己發(fā)送了消息 2 5 0 ,但 C l i e n t 最多只知道消息 2 4 7 ,因此必須主動填補缺口T a g 3 4 / M s g S e q N u m = 2 4 8T a g 4 3 / P o s s D u p F l a g = Y重傳應(yīng)用消息 2 4 9T a g 3 4 / M s g S e q N u m = 2 4 9T a g 4 3 / P o s s D u p F l a g = YS e q R e s e t G a p F i l l 替代 L o g o nT a g 3 4 / M s g S e q N u m = 2 5 0T a g 1 2 3 / G a p F i l l F l a g = Y應(yīng)用消息 2 5 1T a g 3 4 / M s g S e q N u m = 2 5 1T a g 4 3 / P o s s D u p F l a g = NN x t O u t = 2 0 1N x t I n = 2 5 2N x t O u t = 2 0 1N x t I n = 2 5 1N x t O u t = 2 5 2N x t I n = 2 0 1圖 正常登錄場景三異常登錄場景一23 / 42標準作為登錄發(fā)起方——,作為登錄接受方——,日間非首次正常登錄,且不設(shè)置,也沒有設(shè)置為其在前一次連接斷開時的。場景開始時,連接剛建立后, 的 , , 的 , 。C l i e n tS e r v e r建立 T C P 連接L O G O NT a g 3 4 / M s g S e q N u m = 1 0 0T a g 1 4 1 / R e s e t S e q N u m F l a g = NL O G O NT a g 3 4 / M s g S e q N u m = 1T a g 1 4 1 / R e s e t S e q N u m F l a g = NT a g 7 8 9 / N e x t E x p e c t e d M s g S e q N u m = 1 0 1N x t I n = 1 0 1N x t O u t = 1N x t I n = 1 8 9N x t O u t = 1 0 0N x t I n = 1 8 9N x t O u t = 1 0 1M s g S e q N u m N x t I n建立連接失敗 !L O G O U T斷開 T C P 連接圖 異常登錄場景一由于標準客戶端沒有正確設(shè)置,收到的響應(yīng)報文的是,小于預期的,因此標準客戶端認為出現(xiàn)了嚴重錯誤,在發(fā)送后斷開連接。異常登錄場景二作為登錄發(fā)起方——,作為登錄接受方——,其余情況同本節(jié)場景一,唯一的區(qū)別在于在消息中提供的用戶名和口令非法。24 / 42C l i e n tS e r v e r建立 T C P 連接L O G O NT a g 3 4 / M s g S e q N u m = 1T a g 1 4 1 / R e s e t S e q N u m F l a g = YT a g 7 8 9 / N e x t E x p e c t e d M s g S e q N u m = 1T a g 5 5 3 / U s e r N a m e = 39。 X X X X 39。T a g 5 5 4 / P a s s w o r d = 39。 Y Y Y Y 39。L O G O U TT a g 3 4 / M s g S e q N u m = 1斷開 T C P 連接圖 異常登錄場景二25 / 42附 錄 B(注銷場景)正常注銷場景下圖顯示注銷會話的場景,申請注銷后,服務(wù)方回送注銷消息確認斷開會話。C l i e n tS e r v e rL O G O U TL O G O U T關(guān)閉 T C P 連接正常注銷場景26 / 42附 錄 C(處理重傳請求場景)處理重傳請求場景一下圖中,是標準引擎,是引擎,且因為某種特殊的原因,比如雖然收到但因為自身錯誤而沒有將消息和保留下來,但保存了消息。C l i e n t S e r v e rR e s e n d R e q u e s t業(yè)務(wù)消息T a g 3 4 / M s g S e q N u m = 9 8業(yè)務(wù)消息T a g 3 4 / M s g S e q N u m = 9 9業(yè)務(wù)消息T a g 3 4 / M s g S e q N u m = 1 0 0N x t I n = 7 8N x t O u t = 1 0 1因為某種未知原因 , 請求重發(fā) 9 8 和 9 9 號消息T a g 3 4 / M s g S e q N u m = 7 8T a g 7 / B e g i n S e q N o = 9 8T a g 1 6 / E n d S e q N o = 9 9S e q R e s e t R e s e tT a g 3 4 / M s g S e q N u m = 1 , 接收方應(yīng)該忽略此字段T a g 1 2 3 / G a p F i l l F l a g = 39。 N 39。 , 表示是 R e s e t 模式T a g 3 6 / N e w S e q N o = m a x { 9 9 , 1 0 1 } = 1 0 1N x t I n = 7 9N x t O u t = 1 0 2業(yè)務(wù)消息N x t I n = 1 0 1N x t O u t = 7 8T a g 3 4 / M s g S e q N u m = 1 0 1N x t I n = 1 0 1 ,且不指望再能回補消息N x t I n = 7 9N x t O u t = 1 0 1N x t I n = 7 9N x t O u t = 1 0 1 不占序號處理重傳請求一27 / 42處理重傳請求場景二和本節(jié)場景一前面部分都相同,但區(qū)別在于沒有來得及發(fā)出,網(wǎng)絡(luò)連接就斷了,因此需要重新登錄并后續(xù)發(fā)送補缺口。在登錄時使用的 是根據(jù)登錄時已知的最大消息序號確定,而非根據(jù)全部缺口消息中最小的序號來確定。28 / 42C l i e n t S e r v e rT C P 連接斷開S e q R e s e t R e s e tT a g 3 4 / M s g S e q N u m = 1 , 接收方應(yīng)該忽略此字段T a g 1 2 3 / G a p F i l l F l a g = 39。 N 39。 , 表示是 R e s e t 模式T a g 3 6 / N e w S e q N o = m a x { 9 9 , 1 0 3 } = 1 0 3業(yè)務(wù)消息T a g 3 4 / M s g S e q N u m = 1 0 2N x t I n = 1 0 3 ,且不指望再能回補消息重建 T