
摘要:隨著互聯網信息技術的不斷發展,其應用已涉及到社會的方方面面。本文介紹了INTERNET網絡各層協議的特點。重點論述了用Visual C++編程實現Internet信號的協議分析及處理,以還原其高層應用數據。同時也介紹了TCP/IP協議中數據重組的具體過程以達到輔助教學的目的.
關鍵詞:互聯網;協議分析;TCP/IP協議;數據重組
中圖分類號:TP393 文獻標識碼:A 文章編號:1674-098X(2015)04(a)-0000-00
1.引 言
網絡協議將位于各個不同地點的,不同的操作系統和用戶連接起來,并且規定它們之間如何進行的相互通信的一系列正式的規則,協定和數據結構。不同的計算機和計算機網絡之間要相互通信,必須支持相同的網絡協議。通信協議規定了通信雙方之間的通信過程,包括通信過程中傳輸的數據,必須采用彼此能識別的特定格式。
在典型的網絡結構中,網絡協議和通信采用的是分層式設計方案[1]。
國際標準組織ISO制定了開放互聯OSI模型[2]。OSI模型分為七層。應用層,表示層,會話層,傳輸層,網絡層,數據鏈路層,物理層。
本文所涉及的TCP/IP協議并不完全符合OSI的七層參考模型,TCP/IP通訊協議采用了4層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求。這4層分別為:應用層、傳輸層、互連網絡層、網絡接口層[3]。
網絡協議識別是指通過程序分析網絡數據包的協議頭部和尾部,從而了解其傳遞的信息和相關的數據包在產生和傳輸過程中的行為[4]。協議解析就是一層一層處理下層網絡協議封裝的頭部和尾部的連續過程[5]。通過對網絡數據進行協議解析后,就可以根據不同的協議進行協議數據的還原。協議還原技術的理論基礎是網絡協議規范,根據各種不同網絡協議格式化的特點,并結合高速數據包捕獲,數據解碼,會話重組技術,從通信雙方傳輸的協議數據中分析通訊雙方交互的過程,還原協議會話。它根據協議規范的規定,分析網絡上的數據流,將網絡數據還原出原始數據語義[6]。
本文是在已接收下來的網絡信號基礎上,利用Visual C++編程,對信號進行協議解析,以還原其高層應用數據。本文詳細論述了對網絡信號進行分層處理的全過程,并且將數據報組報的過程顯示出來,這樣有利于教員教學,也可以使學員在學習計算機網絡時對數據報的組報過程有更加直觀和具體的了解。
2 鏈路層協議分析
主機與公用電話交換網(PSTN)相連時,鏈路層一般采用PPP協議。與ISDN相連時,鏈路層為PPP、FR協議。點對點專線連接(路由器加專線組網)鏈路層為PPP、FR、X.25、Cisco PPP協據。議。本文采用的數據為PPP協議數
PPP幀以固定的 0xff+0x03+0x21起始,隨后是IP數據報部分,最后是兩個字節CRC校驗。而Cisco PPP幀一般以0x0f+0x00+0x08+0x00起始,最后加上兩個字節的CRC校驗。
本程序可以處理任意長度的固定幀頭、幀尾的數據。這里在操作界面上設立了一個文本框,在操作時可以根據實際數據報的報頭輸入幀頭(起始位)和幀尾長度,缺省值分別為4和2。
在處理前應該先開辟一個緩沖區,在CFile這個類中,用Read函數把整個數據讀入緩沖區中。因為每幀IP數據報的首部中都記錄了該幀的長度,所以把表示幀長度的字節轉換成十進制數。分別把每一幀數據付給一個CString字符串,將該字符串設置到編輯框中,調用UpdateData函數,將原始數據報顯示在該編輯框中 。
可以利用與上述相似方法,丟棄幀頭和幀尾幾個字節,再將數據寫到編輯框中,這樣就達到去掉幀頭幀尾,只顯示IP數據報的目的。
這里使用CString字符串可以避免使用普通字符串數組所帶來的一般編程錯誤。但是這是以犧牲性能為代價的。首先,CString對象是傳遞數值的;其次,臨時CString對象通常在CString表達式中創建。上面兩點都會導致大量的不必要的數據移動。因此在這里,只能把一部分數據賦給CString字符串,所以在編輯框中只顯示了一部分數據報,但這完全可以滿足教學的需要。IP協議處理
3 IP協議分析與處理
網際互連協議(IP)最基本的任務是提供一個非可靠的、盡最大努力去完成任務的、無連接的分組投遞系統。說它非可靠,是因為IP所要求的投遞不能保證成功,分組可能丟失或投遞無序或重復投遞,而IP并不檢測這些情況,這些情況也不通知發送者或接收者;說它無連接,是因為每一個分組的處理都獨立于其它分組,可以經由不同路徑到達目的主機,也可能部分分組丟失,而其它分組仍然被投遞,但IP盡最大努力去投遞分組,不輕易拋棄分組,僅當資源用盡或下層物理網失效時才會發生不可靠的現象。
數據報經過去掉幀頭、幀尾后,在IP層的處理主要是將報文按源、目的IP地址以及源、目的端口號進行重組。在重組后分別以一對IP地址和端口號為文件名建立文件,然后將屬于該文件的報文寫入該文件,文件名后綴與源文件一致。由于原來開辟的緩沖區沒有變,所以可以在原來緩沖區中進行操作。
具體步驟如下:
一:建立一個地址鏈表,用來存放文件名。其數據結構如下:
typedef struct node
{CString data;//存放文件名
struct node *next;//指針域
}linkstring;//建立地址鏈表
二:讀一幀數據,找到該數據首部的IP地址和端口號,將它們轉換成十進制數,寫該幀數據的文件名。文件名保存格式為:
源IP地址-目的IP地址(源端口)-(目的端口).DAT
如:216.115.107.182-202.41.85.80(80)-(61697).DAT
三:查找地址鏈表,看鏈表中是否有與該幀相同的文件名,若有,則把該幀數據寫到該文件中,若沒有,則將該文件名寫入地址鏈表,再建立一個以上述文件名為名的文件,再把數據寫入文件。
四:重復第二步與第三步的操做,直到將數據讀完。
4 TCP協議分析與處理
TCP協議被稱作一種端對端協議。這是因為它為兩臺計算機之間的連接起了重要作用:當一臺計算機需要與另一臺遠程計算機連接時,TCP協議會讓它們建立一個連接、發送和接收資料以及終止連接。
傳輸控制協議TCP協議利用重發技術和擁塞控制機制,向應用程序提供可靠的通信連接,使它能夠自動適應網上的各種變化。即使在 Internet 暫時出現堵塞的情況下,TCP也能夠保證通信的可靠。 TCP報文格式如下:
經過了IP層處理的數據已經按照指定的地址分好類,而且每對通信地址都建立了一個文件。到了TCP層就要根據工作需要來處理指定的一對通信地址的數據,這可以根據文件名來打開需要的的數據,這也需要我們重新開辟一個緩沖區,把文件讀到緩沖區里。TCP層的主要工作是把每一幀數據報按照發送序號排序。然后再將TCP首部去掉,這樣就能得到最后的報文。
具體操作步驟如下:
一:開辟一個緩沖區,將文件讀進來。
二:去掉IP首部,再把數據顯示在編輯框中。處理方法與網絡接口層去掉幀頭的方法相似。
三:建立發送序號鏈表。這個鏈表里每個單元分別記錄了發送序號,偏移量,每幀長度。其數據結構如下:
偏移量是指每幀的首字節在整個緩沖區中的位置,幀長是指每一幀在去掉TCP頭后的每幀的長度。
四:按照發送序號把數據在鏈表中排序,形成新的鏈表。建立一個名為“last.DAT”的新文件,然后將排好序的每一幀數據去掉TCP頭寫進文件。這樣得到的就是最后需要的報文。
五:將最后形成的報文顯示在編輯框中。
最后形成的文件就是應用數據。可以按照不同端口送往應用層處理。
5結論
本文詳細論述了網絡數據從鏈路層到傳輸層處理的詳細過程,對實際工作還是有一定價值的,尤其在教學方面,對老師有很大的幫助。本程序對數據報分析得十分具體,這就使得學生在上課時對數據包組報過程有一個很直觀的印象,對學習IP以及TCP協議有很大的幫助。
參考文獻
[1]陳亮,龔儉,徐選.應用層算法協議識別算法綜述[J].計算機科學.2007,7.34(7).73-75
[2]Douglas E.Comer著.林瑤,蔣惠,杜蔚軒等譯.用TCP/IP進行網際互聯(卷1)[M].北京:電子工業出版社,2001
[3]謝希仁.計算機網絡(第四版)[M].北京:電子工業出版社,2005:170-194.
[4]徐龍.網絡協議分析系統的設計與實現[J].電腦編程技巧與維護.2009,8.74-76.
[5] RFC793.Internet工程任務組.Transmission Control Protocol[s].1981
[6] 戴宗昆,羅萬伯.信息系統安全[M].北京:電子工業出版社,2002