前言:本站為你精心整理了小議CNAPS系統(tǒng)流水號(hào)規(guī)范范文,希望能為你的創(chuàng)作提供參考價(jià)值,我們的客服老師可以幫助你提供個(gè)性化的參考范文,歡迎咨詢(xún)。
摘要:中國(guó)國(guó)家現(xiàn)代化支付交易清算系統(tǒng)(ChinaNationalAutomationPaymentSystem),簡(jiǎn)稱(chēng)cnaps,是中國(guó)人民銀行在世界銀行貸款支持下正在建設(shè)中的中央銀行支付系統(tǒng),該系統(tǒng)的主要功能是對(duì)各商業(yè)銀行的資金進(jìn)行最終的清算。文章分析了目前CNAPS系統(tǒng)可靠性,響應(yīng)時(shí)間等方面的一些不完善之處,介紹了改善系統(tǒng)可靠性,縮短系統(tǒng)響應(yīng)時(shí)間的方法,即流水號(hào)管理。
關(guān)鍵詞:CNAPSSB分行系統(tǒng)資金清算流水號(hào)套接口
商業(yè)銀行(SpecialBank)之間的資金收、付交易,必須經(jīng)過(guò)政府授權(quán)的中央銀行進(jìn)行資金清算,以發(fā)揮中央銀行的宏觀(guān)調(diào)控功能,從而穩(wěn)定貨幣、穩(wěn)定市場(chǎng)。CNAPS系統(tǒng)即是由各級(jí)中央銀行組成,因此SB分行系統(tǒng)必須和CNAPS系統(tǒng)通信,通過(guò)CNAPS系統(tǒng)完成資金的最終清算。CNAPS系統(tǒng)的可靠、有效運(yùn)行,將關(guān)系到企業(yè)、個(gè)人的資金是否實(shí)現(xiàn)有效、及時(shí)、可靠的轉(zhuǎn)移,對(duì)維護(hù)和健全銀行體系,完善金融市場(chǎng)是至關(guān)重要的。
CNAPS系統(tǒng)中數(shù)據(jù)的傳送是全雙工的。一方面是CNAPS向SB發(fā)送信息或文件;另一方面SB也向CNAPS發(fā)送信息或文件。以下著重分析CNAPS向SB發(fā)送信息或文件時(shí)的情況,SB向CNAPS發(fā)送信息或文件時(shí)的情況與此類(lèi)似。
1目前CNAPS系統(tǒng)的一些不完善之處
目前在CNAPS向SB發(fā)送信息或文件的路徑上存在以下不足之處:接收端不能得到獨(dú)立的信息或文件;文件請(qǐng)求響應(yīng)時(shí)間過(guò)長(zhǎng);傳輸層能提供的可靠性有限。
1)不能得到獨(dú)立的信息和文件
兩個(gè)應(yīng)用程序通過(guò)TCP連接交換8bit字節(jié)構(gòu)成的字節(jié)流。TCP不在字節(jié)流中插入記錄標(biāo)識(shí)符。我們將這稱(chēng)為字節(jié)流服務(wù)(bytestreamservice)。如果一方的應(yīng)用程序先傳10字節(jié),又傳20字節(jié),再傳50字節(jié),連接的另一方將無(wú)法了解發(fā)方每次發(fā)送了多少字節(jié)。收方可以分4次接收這80個(gè)字節(jié),每次接收20個(gè)字節(jié)。一端將字節(jié)流放到TCP連接上,同樣的字節(jié)流將出現(xiàn)在TCP連接的另一端。TCP對(duì)字節(jié)流的內(nèi)容不作任何解釋。對(duì)字節(jié)流的解釋由TCP連接雙方的應(yīng)用層解釋。當(dāng)CNAPS向SB發(fā)送信息或文件時(shí),SB得到的只是無(wú)記錄標(biāo)識(shí)的字節(jié)流,而無(wú)法還原出獨(dú)立的信息或文件。
2)文件請(qǐng)求響應(yīng)時(shí)間過(guò)長(zhǎng)
在CNAPS系統(tǒng)中,SB作為客戶(hù)機(jī),CNAPS作為服務(wù)器運(yùn)行,客戶(hù)是指主動(dòng)發(fā)起通信請(qǐng)求的應(yīng)用程序,而服務(wù)器是被動(dòng)等待接收通信請(qǐng)求的應(yīng)用程序。所以在CNAPS向SB發(fā)送信息或文件的路徑上,CNAPS不會(huì)主動(dòng)向SB發(fā)送信息或文件,它必須首先收到SB的請(qǐng)求。
在CNAPS向SB發(fā)送信息或文件的路徑上,SB向CNAPS發(fā)出信息或文件請(qǐng)求的同時(shí)啟動(dòng)一個(gè)定時(shí)器,當(dāng)定時(shí)器超時(shí)(仍未接收到正確的信息或文件)SB則認(rèn)為這個(gè)請(qǐng)求丟失或損傷因而進(jìn)行重傳。當(dāng)CNAPS與SB傳送的數(shù)據(jù)單元是文件時(shí),由于文件數(shù)據(jù)量很大,正常情況下都要經(jīng)過(guò)很長(zhǎng)的時(shí)延才能從CNAPS端全部傳送到SB端,因此定時(shí)器的時(shí)間應(yīng)設(shè)置為比較大的值,SB往往要等待很長(zhǎng)的時(shí)間才能判斷是否重發(fā)請(qǐng)求,SB的響應(yīng)時(shí)間很長(zhǎng)。特別是當(dāng)CNAPS發(fā)送的文件有一小部分出錯(cuò),SB端TCP檢查到效驗(yàn)和出錯(cuò)時(shí)就會(huì)拋棄整個(gè)文件,接著SB定時(shí)器超時(shí),SB重發(fā)請(qǐng)求,CNAPS再次重發(fā)整個(gè)文件,SB從發(fā)出第一次請(qǐng)求開(kāi)始,需要經(jīng)歷很長(zhǎng)的時(shí)間才能接收到完全正確的文件。
3)傳輸層能提供的可靠性是有限的
CNAPS系統(tǒng)的傳輸層采用的是TCP傳輸控制協(xié)議,理論上TCP協(xié)議是可靠的,然而實(shí)際的傳輸服務(wù)并非毫無(wú)錯(cuò)誤,但在不可靠的網(wǎng)絡(luò)之上提供可靠的服務(wù)正是傳輸層要實(shí)現(xiàn)的目標(biāo)。
傳輸層是增強(qiáng)網(wǎng)絡(luò)層提供的服務(wù)質(zhì)量,它必須彌補(bǔ)應(yīng)用層用戶(hù)要求與網(wǎng)絡(luò)層所提供的服務(wù)之間的差別。用戶(hù)在建立連接時(shí)對(duì)各種服務(wù)參數(shù)(如殘余誤碼率)指定希望的、可接受的最低限度的值,傳輸層根據(jù)網(wǎng)絡(luò)服務(wù)的種類(lèi)或它能夠獲得的服務(wù)來(lái)檢查這些參數(shù),決定能否提供所要求的服務(wù)。當(dāng)傳輸層發(fā)現(xiàn)服務(wù)質(zhì)量參數(shù)的某些值是無(wú)法到達(dá)的,傳輸層甚至不去與目的機(jī)器連接,便直接通知應(yīng)用層連接請(qǐng)求失敗。因此傳輸層能提供的可靠性是有限的。
2CNAPS系統(tǒng)性能改善方法--流水號(hào)管理
改進(jìn)了的CNAPS系統(tǒng)在CNAPS發(fā)送信息或文件的路徑上都增加了流水號(hào)管理的通信處理機(jī)制,進(jìn)一步增強(qiáng)CNAPS系統(tǒng)可靠性,并縮短了文件請(qǐng)求/發(fā)送的響應(yīng)時(shí)間。
一、對(duì)接收方信息或文件不能獨(dú)立和文件請(qǐng)求響應(yīng)時(shí)間過(guò)長(zhǎng)的解決
在CNAPS發(fā)送信息或文件的路徑上,發(fā)送數(shù)據(jù)在CNAPS端,為保證SB端接收到獨(dú)立的信息或文件,通信上采用SB請(qǐng)求一次,CNAPS發(fā)送一次的辦法。
CNAPS給它生成的每個(gè)信息分配一個(gè)流水號(hào),以標(biāo)識(shí)該信息在CNAPS數(shù)據(jù)流中的位置。通信上SB請(qǐng)求一個(gè)流水號(hào),CNAPS才發(fā)送流水號(hào)為對(duì)應(yīng)值的信息。這樣各個(gè)信息就能分開(kāi)。
在CNAPS向SB發(fā)送信息路徑上流水號(hào)的處理過(guò)程可分成三步:
1)當(dāng)系統(tǒng)開(kāi)始,鏈路建立后SB向CNAPS發(fā)初始化流水號(hào)請(qǐng)求,隨后CNAPS向SB發(fā)送初始化流水號(hào)回答,把SB的流水號(hào)初始化為0。不是系統(tǒng)開(kāi)始,如出現(xiàn)故障鏈路斷開(kāi)再次建立,鏈路建立后SB會(huì)向CNAPS發(fā)證實(shí)流水號(hào)請(qǐng)求,如CNAPS判斷SB的流水正確,CNAPS會(huì)發(fā)出證實(shí)流水號(hào)回答。
2)接著SB開(kāi)始不斷地向CNAPS發(fā)送信息請(qǐng)求并從CNAPS接收信息,直到接收到CNAPS端無(wú)信息發(fā)送電文為止。當(dāng)SB端接收到CNAPS的無(wú)信息發(fā)送電文,隔一段時(shí)間,SB又會(huì)向CNAPS發(fā)送信息請(qǐng)求。
3)當(dāng)一天結(jié)束時(shí),SB端會(huì)向CNAPS發(fā)送一個(gè)結(jié)束流水號(hào)請(qǐng)求,當(dāng)SB接收到CNAPS的結(jié)束流水號(hào)回答后,SB斷開(kāi)鏈路。
證實(shí)流水號(hào)請(qǐng)求和證實(shí)流水號(hào)回答(或初始化流水號(hào)請(qǐng)求和初始化流水號(hào)回答)這兩個(gè)步驟稱(chēng)為流水號(hào)同步,通過(guò)流水號(hào)同步,SB可以知道已經(jīng)接收到CNAPS發(fā)送數(shù)據(jù)流的什么位置。(這類(lèi)似于TCP的三步握手)。在TCP的三步握手協(xié)議中,因?yàn)閿?shù)據(jù)傳輸是雙向的,所以要完成客戶(hù)和服務(wù)器的同步需要三個(gè)步驟。在CNAPS系統(tǒng)中,CNAPS發(fā)送信息路徑上數(shù)據(jù)是由CNAPS向SB端單向傳輸,因此在該路徑上CNAPS和SB的流水號(hào)同步只需兩個(gè)步驟。
下面是日初系統(tǒng)開(kāi)始時(shí),CNAPS向SB發(fā)送信息路徑上,CNAPS端有2個(gè)未發(fā)送信息時(shí)流水號(hào)的處理過(guò)程(文件接收路徑上流水號(hào)的處理過(guò)程與此類(lèi)似):
CNAPS(日初流水號(hào)初始化為0)SB(流水號(hào)為上日終止時(shí)的
值50)
圖2-1沒(méi)有電文丟失、重復(fù)等錯(cuò)誤的理想情況(未到一天結(jié)束時(shí))
圖2-1直線(xiàn)兩側(cè)數(shù)值是CNAPS端和SB端的流水號(hào),斜線(xiàn)上表示是SB和CNAPS之間的傳送電文。CNAPS端流水號(hào)是指CNAPS已發(fā)送且被SB正確接收到的信息的個(gè)數(shù)(如CNAPS端流水號(hào)為3,表示CNAPS已發(fā)送出去3個(gè)信息且這時(shí)SB接收到的信息個(gè)數(shù)也是3)。SB流水號(hào)是指SB已正確接收到信息的個(gè)數(shù)。
CNAPS流水號(hào)的更新是在CNAPS接收到SB請(qǐng)求下一個(gè)流水號(hào)時(shí),這時(shí)CNAPS就知道上一個(gè)流水號(hào)已被SB正確接收到了。SB端流水號(hào)的更新是當(dāng)SB正確接收到了信息。
規(guī)定SB必須正確接收到一個(gè)流水號(hào)才能請(qǐng)求下一個(gè)流水號(hào)。斜線(xiàn)上SB信息請(qǐng)求報(bào)文中請(qǐng)求的流水號(hào)為SB端的流水號(hào)+1,即SB希望接收到的下一個(gè)CNAPS信息的流水號(hào)。
2)在CNAPS向SB發(fā)送文件的路徑上
流水號(hào)處理過(guò)程與CNAPS向SB發(fā)送信息路徑上流水號(hào)處理類(lèi)似。
把CNAPS生成的文件分成若干分塊,給予每個(gè)分塊一個(gè)流水號(hào),以標(biāo)志該文件分塊在CNAPS數(shù)據(jù)流中的位置(分塊大小的指標(biāo)是保證SB文件分塊請(qǐng)求的響應(yīng)時(shí)間可以接受)。通信上SB請(qǐng)求一個(gè)流水號(hào),CNAPS才發(fā)送流水號(hào)為對(duì)應(yīng)值的文件分塊。當(dāng)文件傳輸過(guò)程中出現(xiàn)錯(cuò)誤時(shí),SB能及時(shí)發(fā)現(xiàn),只需要CNAPS重傳某個(gè)文件分塊,而不用整個(gè)文件重新傳送。由于文件分塊的數(shù)據(jù)量不大而且SB能及時(shí)處理錯(cuò)誤,因此SB正確接收到整個(gè)文件的響應(yīng)時(shí)間比不采用流水號(hào)管理時(shí)的響應(yīng)時(shí)間大大縮短了。當(dāng)一個(gè)文件接收完畢,SB才請(qǐng)求下一個(gè)文件,這樣每個(gè)文件也能獨(dú)立開(kāi)來(lái)。流水號(hào)處理過(guò)程與圖2-1類(lèi)似。
二、對(duì)傳輸層只能提供有限可靠性的解決
流水號(hào)管理中采用了類(lèi)似于傳輸層TCP協(xié)議的一些機(jī)制,相當(dāng)于在應(yīng)用層進(jìn)一步增強(qiáng)傳輸層可靠性。
1)超時(shí)重傳機(jī)制
TCP協(xié)議中為了解決分組的丟失,采用的是超時(shí)重傳機(jī)制。客戶(hù)發(fā)出連接請(qǐng)求的同時(shí)啟動(dòng)一個(gè)定時(shí)器,不管請(qǐng)求或者響應(yīng)丟失,定時(shí)器總會(huì)超時(shí)溢出。一旦定時(shí)器超時(shí),客戶(hù)再次發(fā)起連接請(qǐng)求,并重新啟動(dòng)定時(shí)器。直到成功建立連接,或當(dāng)重傳次數(shù)到達(dá)一定限度時(shí),認(rèn)為連接不可建立而放棄。
在CNAPS向SB發(fā)送信息或文件路徑上的流水號(hào)管理采用了類(lèi)似TCP的超時(shí)重傳機(jī)制,SB發(fā)出信息或文件分塊請(qǐng)求的同時(shí)啟動(dòng)一個(gè)定時(shí)器。當(dāng)CNAPS返回的信息或文件分塊因線(xiàn)路噪聲損壞,SB方就會(huì)檢測(cè)到出錯(cuò),從而丟棄它們。在SB定時(shí)器時(shí)間到達(dá)時(shí)仍未收到正確的信息或文件分塊,SB就會(huì)斷開(kāi)連接。
2)序號(hào)機(jī)制
TCP協(xié)議中通過(guò)給數(shù)據(jù)流中每個(gè)八位組賦予序號(hào)并要求接收方記住所收八位組的序號(hào)來(lái)檢測(cè)重復(fù)現(xiàn)象。為了避免遲到的確認(rèn)和重復(fù)確認(rèn)帶來(lái)的混亂,TCP的"帶重傳的肯定確認(rèn)"協(xié)議在確認(rèn)信息中攜帶一個(gè)序號(hào),這樣接收方就能正確地把分組與確認(rèn)關(guān)聯(lián)起來(lái)。
在CNAPS向SB發(fā)送信息或文件路徑上對(duì)信息或文件分塊進(jìn)行編號(hào),這種編號(hào)稱(chēng)為流水號(hào),每個(gè)待發(fā)送數(shù)據(jù)都對(duì)應(yīng)一個(gè)流水號(hào)的機(jī)制使得接收端能夠辨別接收數(shù)據(jù)是否重復(fù)。
4結(jié)論
CNAPS系統(tǒng)在我國(guó)金融界舉足輕重的地位決定了必須從多方面保證它的可靠性,否則一個(gè)失誤可能會(huì)導(dǎo)致上百億元的資金流失。在CNAPS系統(tǒng)中運(yùn)用流水號(hào)的管理方法是非常必要的,它可以進(jìn)一步增強(qiáng)系統(tǒng)可靠性,縮短系統(tǒng)的響應(yīng)時(shí)間。
[參考文獻(xiàn)]
[1]周明天汪文勇,《TCP/IP網(wǎng)絡(luò)原理與技術(shù)》,清華大學(xué)出版社,1993年12月
[2]中國(guó)人民銀行支付與科技司,《中國(guó)國(guó)家現(xiàn)代化支付系統(tǒng)》,中國(guó)金融出版社,1995年8月