?
C/S模式下的岸船間即時通信系統設計與實現*
劉煥敏,王華,朱笑然
(中國衛星海上測控部,江蘇 江陰214431)
摘要:設計并實現了一種C/S模式下的岸船間即時通信系統,詳細了闡述系統的架構及各功能模塊,并對通信協議的選擇及信息安全機制進行了討論。該系統解決了測量船與陸上及與其他參試測量船即時通信和文件傳輸的問題。
關鍵詞:即時通信系統;C/S模式;XMPP協議
0引言
中國衛星海上測控部承擔航天遠洋測控任務,任務期間各參試測量船分布地域相隔遙遠無通信鏈路連接,而岸船數據通信鏈路只能通過衛星進行通信,在高時延、低帶寬的衛星通信網絡條件下,各參試單位間任務數據的傳輸和共享十分困難。本文使用C/S模式構建了岸船間即時通信系統,提高了測量船的工作效率、降低溝通成本、增強完成任務的能力。
即時通信簡稱instant messaging(IM),是一種網絡溝通服務,使用者通過即時通信的終端可以進行2人或多人之間的實時溝通,交流內容包括文字、圖像、語音、視頻及文件互發等[1-2]。本文設計適合陸上指揮中心與參試測量船之間使用的即時通訊系統,參試人員可以方便地互聯互通,無論在船上還是在岸上,可以方便的互通文字信息和傳送文件。同時滿足系統的可靠性、維修性、保障性、測試性、安全性和環境適應性等要求。
1系統需求分析
1.1功能需求
在任務出海期間,陸上指揮所與參試測量船之間只能通過衛星進行通信,通信帶寬不足2M、時延達500 ms以上,岸船間即時通信系統方便陸上指揮中心與各測量船之間的通信以及各測量船之間即時通信。其系統功能需求如圖1所述。
(1) 消息即時傳遞功能。岸船間即時通信系統使用人員進行即時交流,實現信息化協作;
(2) 文件傳輸功能。用戶之間可以方便的以點對點傳送文件,實現資源共享;
(3) 消息回執功能。消息的發送方可以清楚的知道所發送消息的狀態,如接收方是否已經閱讀了消息,保證了消息的有效性;
(4) 密碼簽收功能。對于一些重要的消息,消息的發送方可以要求消息的接收方輸入簽收密碼才可以看到消息,提高系統的安全性;
(5) 離線消息功能。如果消息的接收方不在線,消息可以暫時存放在服務器內,待接收方上線后再發送給接收方;
(6) 離線文件傳輸功能。在用戶傳送文件時,如果接收方不在線,文件同樣可以保存在服務器內,待接收方上線后收取;
(7) 通知廣播功能。可以將消息發給一定范圍內的所有用戶;
(8) 通知簽收功能。可以要求收到通知的用戶簽收確認,為通知的發布方返回簽收報表;
(9) 組織機構推送功能。可以根據權限自動導入組織機構內的全部或部分成員的ID號;
(10) 消息歷史備份。支持本地和服務器端雙重保存消息歷史記錄。用戶可以在本地查看消息歷史記錄。管理員可以在管理平臺導出消息記錄。
1.2性能需求
作為參試人員安全、簡便的辦公和溝通平臺,岸船間即時通信系統需要保證數據通信的即時性以及通信過程和信息存儲的安全性,為使用者提供信息安全保障,同時減少系統資源的消耗,保證系統運行的低故障率[3]。具體要求下:
(1) 系統通信容量:系統可接納的用戶數量≥1 000;同時接入點數≥100。
(2) 系統通信可靠度:岸船數據同步系統等待隊列長度≥256;數據同步支持2.4 kbit/s~20 Mbit/s同步速率可調;傳輸優先級數≥16。
(3) 信息收發完整性與可靠性:系統用戶之間能隨時進行接收和發送信息,主要包括文本信息和文件信息,在保證數據能夠正確的到達同時,保證數據能夠被正確的解析,以防導致數據丟失或者錯位等情況出現。
(4) 通信安全性:保證用戶之間傳送文件或者消息的安全性,防止在數據傳輸過程中出現沒有權限的第三方對數據進行讀取,下載,甚至修改。在本系統設計時對所有的消息和數據傳遞進行加密。無法通過網絡竊聽獲得用戶的身份和密碼等敏感信息,傳輸的數據內容不能被截取。信息加密技術保障數據通信的安全性,同時盡量減少信息加解密過程對時間的開銷。
(5) 信息傳輸實時性:系統應具備數據的準實時同步分發能力,在網絡連通的情況下把文件庫隊列中的文件按照系統優先級、內部優先級結合的方式分發到其它同步點, 同時從其他同步點接收到文件,并把文件參數通過輸入接口分發給相關子系統;當網絡中斷時,系統可將文件同步請求保存,將待同步文件信息加入文件庫隊列,等待鏈路恢復時再行同步。

圖1 岸船間即時通信系統功能模塊圖Fig.1 IM Communication system between lands and ships function module
(6) 高效性:即時通信軟件一般在系統運行后是常駐系統內存的,所以在軟件設計時我們必須保證軟件運行的高效率和軟件的低硬件開銷。
(7) 系統的可控性:系統可控性是指系統運行期間完成數據備份,數據存儲,故障恢復等任務的能力,其中包括用戶注冊管理,登錄身份驗證和信息反饋管理,用戶監督管理等模塊的設計。
(8) 系統的穩定性:系統穩定性是指系統在長時間,大信息吞吐量情況下系統運行穩定可靠,不會發生內存泄漏,系統資源不釋放等錯誤;防止程序崩潰或者異常終止。
2系統總體設計
2.1系統拓撲結構設計
任務期間,各測量船與陸上指揮中心通過衛星通信鏈路進行通信,而各測量船之間并沒有通信鏈路。整個岸船網絡分為陸上指揮局域網和各測量船局域網共4個域,每個域配置一臺即時通信服務器,負責管理本域內登錄的用戶。4臺服務器構成分布式架構。以陸上指揮局域網服務器為中心,分別連接各測量船的服務器。其網絡結構如圖2所示。
岸船即時通信系統采用客戶機/服務器網絡模式(Client/Server模式)[4]。在C/S模式中,客戶方對服務器方發送信息請求,服務器方對其做出相應回答并提供服務。服務進程一直處于休眠,直到一個客戶程序提出了請求信息,服務器程序被喚醒并且為客戶提供服務。該模型可以合理利用兩端硬件環境優勢,將任務合理分配到客戶端和服務器,降低系統通信開銷[5]。
各局域網的客戶端之間通訊都通過陸上服務器進行轉交。發送方客戶端將消息傳送給本局域網服務器暫存,局域網數據庫與陸上數據庫采用數據庫增量同步模式進行同步后再與接收方客戶端所在域的服務器進行同步,最后由接收方服務器傳送給接收客戶端。在路由完成后,服務器內緩存此次的路徑信息,以加速以后這2個用戶的消息傳遞。
2.2系統總體組織結構
根據以上的系統目標,設計一個滿足以上要求的即時通信系統,可劃分為5個層次。分別為:網絡通信層、協議解析層、基礎能力層、業務能力層以及用戶表示層。其層次結構圖如圖3所示。
(1) 網絡通信層
處于系統最底層,為上層提供網絡支持,提供數據包發送的接口,并提供監聽數據包的與數據包到達通知。

圖2 岸船即時通信系統網絡拓撲結構Fig.2 Structure topology of IM communication system between lands and ships network

圖3 岸船即時通信系統層次結構圖Fig.3 Hierarchical chart of IM communication system between lands and ships
(2) 協議解析層
對網絡通信包進行封裝及解包,負責將上層的數據按照自定義的格式進行封包并提供給網絡傳輸層,或是從網絡傳輸層中得到通信包,按照自定義格式進行解包,并將解包后所得到的數據提交給上層的應用。
(3) 基礎能力層
實現岸船即時通信系統的基本能力,向上層提供即時消息通信和文件傳輸以及數據安全。
(4) 業務功能層
岸船即時通信系統中的各項業務功能。比如離線消息、離線文件傳送、通知廣播、通知簽收、密碼簽收、消息歷史備份等豐富的功能。
(5) 用戶表示層
該模塊為與用戶交互界面,直接與用戶進行輸入輸出的交互。為用戶提供各種顯示的視圖及輸入輸出的接口。
2.3工作流程
由于各參試測量船之間沒有直接連接的通信鏈路,其通信是要通過陸上指揮所的服務器進行轉接的。以2條參試測量船為例,如果兩船進行通信,首先發送方選取接受用戶并撰寫消息或選擇發送的文件,進行協議封裝和加密進行網絡傳輸;使用數據更新增量抽取技術經過指揮所服務器與接受方服務器的數據庫進行同步;接受方接受消息及文件并進行傳輸及協議解析、解密后還原消息內容。其數據流傳輸過程如圖4所示。
2.4協議選擇
2.4.1通訊協議
TCP和UDP是TCP/IP協議族的2個主要協議。目前大多數即時通信系統采用UDP方式。與UDP方式相比:TCP協議采用面向連接的方式,可以為用戶提供點到點的可靠通信;采用流式傳輸,用戶不必關心數據分幀校驗等問題;支持雙工,數據發送和接收可以同時進行。同時本系統安裝使用了衛通協議加速器的,可以充分利用岸船帶寬,使TCP協議的通信代價已經接近甚至低于UDP方式。因此,本系統采用TCP協議進行通訊[5]。
但是,采用TCP協議存在長連接問題。每個客戶端都與服務端建立一個TCP連接,這個連接從用戶登錄開始,直到用戶注銷才斷開。在通常的情況下,服務器端通常要維持數百甚至上千個連接,對服務器是很大的壓力。另外,由于即時通訊的特點,TCP連接大部分時間是沒有數據傳輸的,如果客戶端出現故障退出,服務器端不會得到通知,依然維持連接。最終可能出現連接數耗盡而無法提供服務。

圖4 岸船即時通信系統數據流程圖Fig.4 Data flowchart IM communication system between lands and ships
針對這種情況,可以采用間斷連接方式,在有數據傳輸時,客戶端和服務器端維持連接,如果一定時間內沒有數據傳輸,就斷開連接,釋放資源給其他用戶,在需要傳送數據時再重新連接[6]。
2.4.2消息傳送協議的選擇
XMPP(可擴展消息處理現場協議)是一個開放式的基于可擴展標記語言(XML)的協議,它用于即時消息(IM)以及在線現場探測,旨在促進通信實體之間的準即時操作[7]。同目前各種封閉的即時通訊協議相比,XMPP具有以下優點[8]:
(1) 開放性
XMPP的信息格式是標準化的XML格式,任何企業和個人都可以在所需要的任何工程中使用XMPP協議,并且可以實現不同系統消息的互通。
(2) 可擴展性
XMPP協議是一種基于XML流元素的傳輸協議,由于XML本身就是一種標準化且擴展性良好的標記語言,XMPP協議傳輸的就是結構化的XML元素。在只要滿足XMPP協議傳輸的XML節元素結構之下,可以很容易的添加新的屬性或包含新的子節點來擴展現有的協議功能。
(3) 安全性:
XMPP協議規定,一個安全的消息傳輸必須經過TLS安全傳輸層協議、SASL簡單驗證和安全層協議多層的驗證,采用多種強度算法如BIGEST-MDS、KERBEROSV4、PLAIN等多種加密算法和簽名證書認證的方法保證流傳輸的安全特性,這使得消息傳輸就有較高的安全性。
2.5系統軟件架構
客戶端和服務器端采用基本相同的軟件架構,所不同的是:客戶端只處理本地用戶的操作,完成用戶的登錄、注銷、注冊、狀態改變、發送消息和發送文件等請求,接收服務器端傳送回來的各種結果,根據結果改變各種狀態,并繼續產生各種請求。而服務器端接收所有用戶的請求并給出相應的響應,調用數據庫服務,維持所有用戶的狀態,保存用戶的信息。
依據功能,客戶端和服務器端軟件可以分為3個大部分[9]:
(1) 異步的網路通訊socket組件;
(2) 與工廠模式相結合的快速XML解析器;
(3) 輕量級的XM Dom,作為所有XMPP協議類的基礎。
異步的網絡通訊socket可以異步的發送和接收網絡數據。在數據包來時,socket組件通知程序接收數據,為每一個連接建立一個session。每一個session對象都包含有一個XML解析器對象。Session傳來的數據經過解壓縮和解密后,形成XML數據流。
XML解析器對XML數據流解析,將其分解為一個個的信息Packet,然后將信息Packet加入Pack-et隊列。
XMPP協議工廠從隊列中取出Packet,根據Packet中的信息創建相應的處理類對象實例[3]。處理類對象實例從Packet中取出信息處理。處理的結果通過XML構造器形成XML數據流,通過session索引找到匹配的session后,利用session保存的連接信息將加密壓縮后的XML數據流發送給接收者。其處理流程圖如圖5所示。

圖5 岸船即時通信系統軟件架構圖Fig.5 Software architecture diagram IM communication system between lands and ships
3信息安全機制
3.1XMPP協議的安全機制
XMPP協議提供的安全措施有TLS和SALS[10]。
安全傳輸層協議(transport layer security,TLS)用于在2個通信應用程序之間提供保密性和數據完整性,TLS協議包括2個協議組:TLS記錄協議和TLS握手協議。使用TLS,可以防止XML流被偷聽和篡改,保證流的安全以及數據的完整。簡單的身份驗證和加密協議層(simple authentication and security layer,SASL)是一種通用的身份驗證機制,可以集成到各種協議中去,可以提供通信雙方的身份認證措施。當來那個實體間要求安全通信的時候,在發送實際的消息XML流之前,必須進行TLS握手和SASL驗證。
這個次序的原理是:TCP是基于連接的層,被所有層使用,所以處于最底層,TLS經常是由操作系統層提供,SASL經常由應用程序層提供,XMPP則是應用程序本身[11]。
3.2數據傳輸安全機制
系統中的用戶權限機制分為身份驗證、訪問控制2方面依托于上層整個岸船間指揮系統進行。岸船間指揮系統根據不同用戶的不同身份驗證資料,在各個應用層面,賦予用戶不同的訪問權限。
即時通信系統在數據通信中,采用消息加密后再傳輸,確保消息在各個通路之間的傳輸安全。本系統采用DES加密算法進行數據加密以避免即時通信消息、文件等明文傳遞造成的網絡安全隱患問題。DES算法是對稱的,既可以用于加密也可以用于解密[12]。岸船即時通信系統軟件處理流程圖如圖6所示。

圖6 岸船即時通信系統軟件處理流程圖Fig.6 Flow chart of software processing IM communication system between lands and ships
4結束語
本文從實際需求出發,設計了一種C/S模式下的岸船間即時通信系統。該系統解決了測量船出海期間無法與陸上及與其他測量船之間進行及時通信和傳輸文件的問題。該系統經過多次試驗任務驗證,運行穩定,實現了客戶端點對點準實時的通信。本文的下一步工作需要在音頻、視頻等多媒體形式的即時通信方面進行進一步研究,在遠程視頻會議及故障診斷中有進一步的應用。
參考文獻:
[1]SUGANO H, Fujitsu.A Model for Presence and Instant Messaging [EB/OL].(2000-02-12)[2014-3-24].http:∥tools.ietf.org/html/rfc2778.
[2]鄧海燕. Web即時通信代理的研究與實現[D] .西安:西安電子科技大學,2010:5-10.
DENG Hai-yan. Research and Implementation of the Web Instant Messaging Agent [D].Xi′an: Xi′an University of Electronic Science and Technology,2010:5-10.
[3]李幟,林立新,曹亞波.軟件工程項目管理:功能點分析方法與實踐[M].北京:清華大學出版社,2005:102-109.
LI zhi, LIN Li-xin, CAO Ya-bo. Software Engineering Project Management: the Function Point Analysis Method and Practice [M]. Beijing:Tsinghua University Press, 2005:102-109.
[4]張剛.B/S與C/S模式相結合的IM系統的研究與實現[D] .北京:北京郵電大學,2011:4-10.
ZHANG gang, The Research and Implementation of IM System Based on B/S and C/S[D] .Beijing:Beijing University of posts and telecommunications,2011:4-10.
[5]任泰明.TCP/IP協議與網絡編程[M].西安:西安電子科技大學出版社,2004:146-152.
REN Tai-ming. TCP/IP Protocol and Network Programming [M]. Xi′an: Xi′an University of Electronic Science and Technology Press,2004:146-152.
[6]王海濤,付鷹.即時通信——原理、技術和應用[J].信息通訊技術,2011,28(3):34-40.
WANG Hai-tao, FU Ying.Instant Messaging—Theory,Technique and Application[J]. Information and Communications Technologies, 2010,28(3):34-40.
[7]陳航, 趙方.基于服務器推送技術和XMPP的Web IM系統實現[J] .計算機工程與設計, 2010, 31(5):35-40.
CHEN Hang, ZHAO Fang. Implementation of Web Instant Message System Based on Server Push Technology and XMPP[J]. Computer Engineering and Design, 2010, 31(5):35-40.
[8]XMPP Standards Foundation.About XMPP[EB/OL].(2012-5-17)[2014-3-24].http://xmpp.org/about-xmpp/xsf/.
[9]莫非特.XMPP高級編程——使用JavaScript和j Query[M].北京:清華大學出版社,2011:52-70.
Jack Moffitt.Professional XMPP Programming with JavaScript and j Query [M]. Beijing:Tsinghua University Press, 2011:52-70.
[10]苗凱.XMPP的安全機制分析[J].通信技術,2003,27(8):101-105.
MIAO kai. The Analysis on the Security Mechanism of XMPP[J]. Communications Technology, 2003, 27(8):101-105.
[11]Instant Messaging/Presence Protocol Requirements[EB/OL].(2000-02-12)[2014-03-24].http:∥tools.ietf org/html/rfc2779.
[12]AtulKahate.密碼學與網絡安全[M].邱仲潘,譯.北京:清華大學出版社,2005:202-213.
AtulKahate. Cryptography and Network Security [M].QIU Zhong-pan,Translated. Beijing:Tsinghua University Press, 2005:202-213.
Design and Implementation of a Instant Messaging System Based on C/S Pattern Between Lands and Ships
LIU Huan-min, WANG Hua,ZHU Xiao-ran
(China Satellite Maritime Tracking and Control Department,Jiangsu Jiangyin 214431,China)
Abstract:An instant messaging system based on C/S pattern between lands and ships is designed and implemented.The structure and function modules are expounded in details. Meanwhile, communication protocol and security mechanism arefully discussed. The problem that instant communication and files transmission are difficult between lands and ships inmission period is solved.
Key words:instant massaging ; C/S pattern;XMPP protocol
中圖分類號:TN92;TP391
文獻標志碼:A
文章編號:1009-086X(2015)-02-0069-07
doi:10.3969/j.issn.1009-086x.2015.02.012
通信地址:214431江蘇省江陰市103信箱505號E-mail:liuhuanmin@126.com
作者簡介:劉煥敏(1973-),女,安徽蚌埠人。高工,碩士,主要研究方向為航天測控任務仿真等。
* 收稿日期:2014-05-24;
修回日期:2014-07-18