摘 要: 網絡數據分類是網絡應用的一個基礎功能,用于正確解析網絡數據的類型和詳細內容,提供給網絡應用軟件進行后續處理。本文設計了一個通用化的網絡數據分類方法,具有較強的適應性,可以完成多種格式的網絡數據幀的分類處理。
關鍵詞: 網絡數據分類 通用化 設計
1.引言
目前,高速以太網等計算機網絡技術得到了廣泛應用。通過以太網,各種設備之間的互聯和數據交換變得簡單、快捷、可靠,非常適合于解決設備間的兼容和互操作問題。[1]以太網一個主要的特點是簡單,在實踐中,簡單性帶來了可靠、廉價、易于維護等特性,因此,以太網具有強大的生命力。
以太網可以在同一總線上運行不同的傳輸協議,從而能夠建立公共網絡平臺或基礎架構。TCP/IP協議是最常見的網絡互連協議,通常被定義為七層網絡模型,用戶可以根據實際需要,在應用層自定義數據幀格式。[2]通過自定義數據幀,用戶可以方便地擴展數據通信功能,或者加強數據通信控制,滿足不同的業務需求。這為網絡應用帶來了極大的靈活性,但同時也帶來了一些不便。由于網絡上傳輸的數據多種多樣,因此用戶需要將接收到的網絡數據進行分類,不同的業務應用使用不同的數據信息,這樣才不會產生混淆,避免后續的數據處理出現錯誤。通常,網絡數據分類由網絡應用軟件完成,由軟件開發人員根據規定的數據幀格式編制相應的數據分類模塊,實現網絡數據的分類。隨著自定義數據幀格式的增多,需要編制的數據分類模塊也不斷增加,大大降低了軟件開發的效率。
網絡數據分類是網絡應用的一個基礎功能,通用化的網絡數據分類方法可以提高網絡應用開發的效率,具有較高的實用價值。本文分析了現有網絡數據分類方法的共同點,設計了一個具有較強通用性的分類方法,可以在盡可能小的改動下,實現各種網絡數據的分類。
2.接收網絡數據的場景類型
在實際應用中,網絡設備從網絡上接收數據幀,然后進行處理。雖然網絡數據的格式多種多樣,但網絡設備接收網絡數據幀總可以歸納為以下三個場景。
2.1網絡上所有設備都只發送一種格式的數據幀。這種情況下,數據源與數據幀的類型是一一對應的,知道了該數據幀是某個設備發送來的,即明確數據幀的來源,就可以知道該數據幀的類型。這個場景下的網絡數據分類就是區分是“XX設備發送來的數據”。
2.2網絡上所有設備發送多種格式的數據幀且幀類型碼不重復。通常,在幀格式中會定義一個幀類型碼,對所有類型的數據幀進行編碼,這樣,通過幀類型碼就可以區分各個類型的數據幀。如果幀類型碼是統一編碼,就可以保證所有數據幀在幀類型碼上不會重復。這種情況下,通過數據源不足以區分開各種類型的數據幀,但可以通過幀類型碼區分各種數據幀。這個場景下的網絡數據分類就是區分是“YY類型的數據”。
2.3網絡上所有設備發送多種格式的數據幀且幀類型碼有重復。在某些應用中,幀類型碼的編碼與設備是相互獨立的,不同的設備可以發送同一幀類型碼的數據幀。在這種情況下,單獨考慮數據源或幀類型碼都不能準確區分數據幀的類型,需要綜合考慮數據源及幀類型碼,才能正確區分數據幀。這個場景下的網絡數據分類就是區分是“XX設備發送的YY類型的數據”。
3.網絡數據分類的方法及要素
3.1網絡數據分類的方法
對應于上述三個接收網絡數據幀的場景,可以采用如下方法進行網絡數據分類。
3.1.1源IP分類:用于第一個場景下的數據分類,區分是“XX設備發送來的數據”。在網絡上,網絡設備通常用設備的IP地址標識,源IP即表示了網絡數據幀的來源。明確了數據源IP,就可以明確接收的數據幀是從哪個設備發送來的。
3.1.2幀ID分類:用于第二個場景下的數據分類,區分是“YY類型的數據”。幀類型碼通常簡稱為幀ID,如果所有的幀ID是統一編碼的,編碼值沒有重復,則幀ID與數據幀類型一一對應,采用幀ID即可區分所有數據類型。幀ID是數據幀中的一項,獲取幀ID需要對網絡數據幀進行“解幀”,也就是在數據幀中找到幀ID所在位置,并獲取其值。
3.1.3混合分類:用于第三個場景下的數據分類,綜合使用源IP和幀ID,區分是“XX設備發送的YY類型數據”。
3.2網絡數據分類的要素
網絡數據幀格式是網絡數據分類的基礎和依據。圖1給出一個自定義網絡數據幀的格式,下文將以此為例進行描述。該幀格式基于TCP/IP協議進行定義,關于TCP/IP協議的論著很多,本文不再贅述。
在上圖中,用戶關心的是應用層數據,可以根據需要自行定義應用層數據的格式。圖中給出了格式定義的一個實例,數據幀由多個數據子幀組成,每個子幀都遵循相同的格式定義,其各個組成項目的作用如表1所示。
上述三種網絡數據分類方法的目的,都是從數據幀中獲取源地址、幀ID等信息,從而確定數據幀的類型。不難發現,這三種方法中都有幾個不可或缺的要素。
3.2.1源IP:即數據幀的源IP地址,表示該數據幀是哪個設備發送的。源IP主要用在第一和第三個場景中,明確是“XX設備”。
3.2.2幀ID:即數據幀的幀類型碼,主要用在第二和第三個場景中,明確數據幀的類型,即明確是“YY類型的數據”。
3.2.3應用層數據的幀結構信息:表示應用層數據格式的定義,說明“總幀長”、“幀ID”、“幀長度”、“有效數據”等項目的位置、數據類型、字節數等信息。在解幀過程中,可以根據該幀結構信息,定位到數據幀的各個項目,并獲取項目的值。
4.網絡數據解幀的通用方法
在網絡數據接收的第二和第三個場景中,都需要獲取幀ID才能完成數據的分類。獲取幀ID通過對網絡數據幀進行“解幀”操作完成。解幀就是按照數據幀格式定義,在數據幀中的相應位置找到各個項目,獲取項目的值,或解析項目內容。
網絡數據幀格式多種多樣,解幀的關鍵在于正確解析數據幀頭。數據幀頭指有效數據之外的數據信息,通常包含了各種輔助信息,用于幫助控制通信過程和解析數據內容。圖1中,“幀類型碼”、“日期”、“時間”、“幀長度”、“保留”這幾個項目組成了數據幀頭。幀頭中包含了多個信息,解幀時必須考慮三個因素:第一是幀類型碼,這是判別幀類型的重要標識,知道了幀類型碼,就可以判斷該數據幀是否需要;第二是幀長度(包括總幀長和各個子幀長),這是控制解幀操作結束的標準,知道了幀長度,就可以在解幀到幀尾時停止解幀操作,防止誤操作緩沖區;第三是有效數據的位置,以便對有效的數據進行處理。
無論網絡數據幀格式如何變化,只要知道了上述信息,就可以正確解幀,獲取幀ID及有效數據。基于這種思路的解幀方法與幀格式定義沒有關系,可以作為一種通用的解幀算法。圖2給出了網絡數據解幀通用方法的處理流程。
5.網絡數據分類的通用方法
當網絡設備接收網絡數據幀時,可以同時獲取該數據幀的源IP,從而知道發送該數據幀的源設備。每個源設備發送的數據幀格式是預先約定的,按照其幀結構信息,采用上文所述的通用化解幀方法,可以獲取幀ID,從而確定數據幀的類型。也就是說,網絡數據分類的要素都可以獲取。在此基礎上,再對照接收網絡數據的場景,采用相應的數據分類方法,即可完成網絡數據的分類。
圖3描述了網絡數據分類的通用化處理流程。該處理流程只需要知道數據幀的源IP,以及幀ID、幀長度、有效數據的格式信息,可以適應多種數據幀格式定義,完成數據幀的分類操作,具有較強的通用性。
6.結語
本文概括了網絡設備接收網絡數據的三個典型場景,分析了在三個場景中進行數據分類不可缺少的共同要素。在此基礎上,設計了三種網絡數據分類的方法,分別用于相應的場景。對于數據分類過程中涉及的解幀操作,設計了通用化的網絡數據解幀方法,其關鍵在于正確的解析網絡數據幀頭。
最后,本文綜合運用三種網絡數據分類方法,設計了通用化的數據分類算法。該算法可以在統一的處理流程中,適應大部分數據幀格式定義,完成各種網絡數據的分類,具有較強的通用性。這種網絡數據分類算法應用在我開發的多個軟件中,不需修改軟件代碼,即可對不同格式的網絡數據幀進行準確分類,提高了軟件開發的效率,取得了較好的實用效果。
由于時間關系,本文只是對網絡數據分類的方法作了初步探討,很多詳細的技術問題還需要在以后深入研究和驗證,文中錯誤之處,敬請批評指正。
參考文獻:
[1]劉曉輝等.以太網組網技術大全.清華大學出版社,2001.
[2]Andrew S. Tanenbaum 著.潘愛民譯.計算機網絡(4). 清華大學出版社,2004.