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