摘要:該文針對(duì)復(fù)雜協(xié)議的網(wǎng)絡(luò)通訊,建立了一個(gè)全新的TCP (Transmission Control Protocol)客戶端的通訊模型。該模型提出了一個(gè)網(wǎng)絡(luò)通訊的最小單位——通訊元,利用解釋結(jié)構(gòu)模型分析復(fù)雜協(xié)議的通訊元圖譜,將通訊元?jiǎng)討B(tài)地添加到處理線程中進(jìn)行匹配,簡化了處理過程并極大提高了運(yùn)行效率。同時(shí)該文利用該模型設(shè)計(jì)出了一個(gè)通用的TCP客戶端模塊,封裝了通訊底層的細(xì)節(jié),提供了方便的接口。將該模塊應(yīng)用于城市消防遠(yuǎn)程監(jiān)控軟件設(shè)計(jì)中,實(shí)際運(yùn)行表明:該模型具有簡單的接口和穩(wěn)定、高效的運(yùn)行機(jī)制。
關(guān)鍵詞: TCP;解析結(jié)構(gòu)模型;動(dòng)態(tài)通訊元
中圖分類號(hào):TN915 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2013)04-0702-05
The Research and Application of a New TCP Client Model Based on Dynamic Communication Unit
FANG Jian-jie
(College of Information Science & Technology, Xiamen University, Xiamen 361005, China)
Abstract: In this paper we proposed a new communication model of TCP client (Transmission Control Protocol) to solve the problem of the network communication which has complex protocols. The idea of communication unit which is the smallest unit of a network communication is advanced, so that we can describe the complex protocols by these units. Then analyze the communication units pattern of the complex protocol by means of interpretive structure modeling(ISM). it turns out that it will be a much more effective way to add communication units dynamically into the processing thread, and at the same time the process could be simplified. Based on this model a general TCP client model has been designed with lower-layer-protocol encapsulated inside and convenient interfaces accessible. This module has been applied in the city elevator remote monitoring system, and it has a very good performance b55818d821b53c50e787cea2df6b5f2dec431b18d408385d632906c581801cb0because of its simple interfaces, stabilization and high effectiveness.
Key words:TCP; interpretive structural mode; dynamic communication unit
在傳統(tǒng)的C/S協(xié)議通訊架構(gòu)設(shè)計(jì)中,針對(duì)一個(gè)客戶端主體通常存在著數(shù)以百千計(jì)的協(xié)議,其中大部分協(xié)議更是存在先后次序和分支以形成眾多協(xié)議鏈和交叉協(xié)議網(wǎng)。通常CS通訊架構(gòu)設(shè)計(jì)采用接收數(shù)據(jù)后遍歷所有協(xié)議以獲得匹配操作[1]。該種通訊方式在簡單協(xié)議的CS通訊中較為高效,但是對(duì)于協(xié)議數(shù)量達(dá)到成千上萬的復(fù)雜協(xié)議通訊,對(duì)于接收的每一次數(shù)據(jù)都需要遍歷一次協(xié)議組,對(duì)于頻繁的協(xié)議通訊而言是巨大的系統(tǒng)開銷,并導(dǎo)致通訊效率降低。該文提出網(wǎng)絡(luò)協(xié)議通訊中通訊最小單位——通訊元的概念,并通過解釋結(jié)構(gòu)模型分析通訊元協(xié)議鏈,將其進(jìn)行級(jí)間分解,利用協(xié)議鏈通訊的次序關(guān)系動(dòng)態(tài)加載/卸載通訊元,使得接收數(shù)據(jù)后需要匹配的協(xié)議數(shù)量大幅度降低,極大地提高了通訊效率。
1 通訊模型的建立
1.1 通訊元定義
通訊的基本操作有兩種:接收數(shù)據(jù),記為[R(Xi)];發(fā)送數(shù)據(jù),記為[S(Xi)]。其中[Xi]表示數(shù)據(jù),這里的數(shù)據(jù)是廣義的數(shù)據(jù),包括命令、符號(hào)等。
通訊的收發(fā)操作之間的關(guān)系符號(hào)記為[->]。例如,一個(gè)簡單雙機(jī)通訊,A機(jī)向B機(jī)發(fā)送數(shù)據(jù)[X1],B機(jī)收到[X1]則發(fā)送[X2],A機(jī)收到[X2]則發(fā)送[X3]……上述通訊關(guān)系可以表示為A機(jī):[S(X1)->φ]([φ]表示空),[R(X2)->S(X3)]……;B機(jī):[R(X1)->S(X2)],……
通訊協(xié)議正是這種你來我往的信息交互規(guī)則[2]。該文通過數(shù)學(xué)符號(hào)來描述通訊協(xié)議,從協(xié)議的普適結(jié)構(gòu)上進(jìn)行分析。并定義一個(gè)最小關(guān)系的基本通訊操作為“通訊元”。因此通訊元有四種:
1)僅接收型通訊元,記為[R(Xi)->φ],[φ]為空,表示該通訊元對(duì)數(shù)據(jù)[Xi]進(jìn)行接收,接收到數(shù)據(jù)[Xi],做相應(yīng)處理后,不再向?qū)Ψ街鳈C(jī)發(fā)送數(shù)據(jù)。適合作為客戶端一次通訊的結(jié)束,即客戶端收到服務(wù)器數(shù)據(jù)后不再向服務(wù)器發(fā)送數(shù)據(jù)請(qǐng)求。
2)僅發(fā)送型通訊元,記為[S(Xi)->φ],[φ]為空,表示該通訊元主動(dòng)向?qū)Ψ街鳈C(jī)發(fā)送數(shù)據(jù)[Xi],該數(shù)據(jù)多為請(qǐng)求(命令)類型的數(shù)據(jù)。適合作為客戶端一次通訊的開始,即客戶端向服務(wù)器發(fā)送數(shù)據(jù)請(qǐng)求。
3)接收發(fā)送型通訊元,記為[R(Xi)->S(Xi')]表示該通訊元若收到數(shù)據(jù)[Xi]則發(fā)送[Xi'],即客戶端與服務(wù)器交互過程。
4)發(fā)送接收型通訊元,記為[S(Xi)->R(Xi')];表示該通訊元在發(fā)送數(shù)據(jù)[Xi]后,等待接收對(duì)方主機(jī)發(fā)送[Xi']。這種類型的通訊元在客戶端模型中不常用。因?yàn)樵擃愋偷耐ㄓ嵲梢酝ㄟ^轉(zhuǎn)化成接收發(fā)送型通訊元[R(Xi)->S(Xi')]來描述同樣的交互過程。
1.2 建立通訊模型
所有的通訊協(xié)議均可用通訊元進(jìn)行拆分,但通訊元之間的關(guān)系并不是獨(dú)立的,上述簡單雙機(jī)通訊的例子中,[S(X1)->φ]與[R(X2)->S(X3)]就存在著連接關(guān)系,于是定義一系列相關(guān)通訊元連接成的鏈?zhǔn)浇Y(jié)構(gòu)為“協(xié)議鏈”。上述簡單雙機(jī)通訊的通訊協(xié)議正是由一條“協(xié)議鏈”構(gòu)成。
實(shí)際應(yīng)用中通訊協(xié)議一般由多條“協(xié)議鏈”構(gòu)成?!皡f(xié)議鏈”允許存在分支,形成“協(xié)議樹”,例如上述簡單通訊例子B機(jī)收到[X1]后發(fā)送[X2]或[X4],則A機(jī)的“協(xié)議鏈”出現(xiàn)分支,分支一:[R(X2)->S(X3)];分支二:[R(X4)->S(X5)]?!皡f(xié)議鏈”中通訊元存在遞階層次關(guān)系,我們把這種遞階層次關(guān)系定義為“協(xié)議鏈”的“層”,“協(xié)議鏈”層數(shù)在兩層以上的通訊協(xié)議,該文稱之為復(fù)雜協(xié)議,也是本文研究的對(duì)象之一。
1.3 使用解釋結(jié)構(gòu)模型分析復(fù)雜協(xié)議
在引入通訊元概念的基礎(chǔ)上,以通訊元為節(jié)點(diǎn),以通訊元之間的層次關(guān)系為邊(有向邊)。復(fù)雜協(xié)議則可以通過有向圖描述出來,稱該有向圖為“通訊元圖譜”。以一個(gè)可劃分為12個(gè)通訊元的復(fù)雜協(xié)議為例,其“通訊元圖譜”如圖2所示。
用解釋結(jié)構(gòu)模型(ISM)方面對(duì)其進(jìn)行分析[3],可建立鄰階矩陣如式(1):
計(jì)算得到可達(dá)矩陣如式 (2):
對(duì)其進(jìn)行區(qū)域分解和級(jí)間分解,獲得最后的遞階有向圖,即該復(fù)雜協(xié)議的解釋結(jié)構(gòu)模型如圖3所示。
如圖3所示,利用解釋結(jié)構(gòu)模型將原有的12個(gè)通訊元的復(fù)雜網(wǎng)絡(luò)模型分為了5層,接收到協(xié)議數(shù)據(jù)時(shí)不必遍歷整個(gè)通訊元組,只需遍歷現(xiàn)有的通訊元隊(duì)列并卸載匹配通訊元,加載下層通訊元。以上協(xié)議可以分為4條平行協(xié)議鏈,當(dāng)接收到協(xié)議數(shù)據(jù)時(shí),最差情況下只要遍歷四個(gè)通訊元即可。
2 通訊架構(gòu)
2.1 傳統(tǒng)通訊模型
傳統(tǒng)通訊模型在接收到一次協(xié)議數(shù)據(jù)后需要遍歷所有協(xié)議[4-5],如圖4,在協(xié)議量巨大的情況下系統(tǒng)效率十分低下。
2.2 基于動(dòng)態(tài)通訊元的通訊模型
基于動(dòng)態(tài)通訊元的通訊模型如圖5,定義了一個(gè)通訊元隊(duì)列用以存放活動(dòng)通訊元,當(dāng)系統(tǒng)產(chǎn)生新通訊元后就將其加入隊(duì)列,系統(tǒng)接收到數(shù)據(jù)后遍歷通訊元隊(duì)列尋找匹配通訊元,完成相應(yīng)操作并將其移出隊(duì)列。若此通訊元為協(xié)議鏈末尾,則隊(duì)列長度減短,若此通訊元存在下層通訊元?jiǎng)t隊(duì)列加載新通訊元等待數(shù)據(jù),若該通訊元所在的協(xié)議鏈?zhǔn)羌磿r(shí)回復(fù)型協(xié)議,則將新通訊元插入隊(duì)列前部以提高遍歷效率,因?yàn)橄麓谓邮諗?shù)據(jù)為此通訊元的概率較高。采用此通訊模型后,接收數(shù)據(jù)所需遍歷通訊隊(duì)列長度維持在一個(gè)很低的水平,大大提高系統(tǒng)運(yùn)行效率,并降低系統(tǒng)耦合性,利于系統(tǒng)分析設(shè)計(jì)。
3 效率分析