本發(fā)明涉及通信協(xié)議領(lǐng)域和圖形界面編程領(lǐng)域,尤其涉及一種tcp協(xié)議傳輸數(shù)據(jù)原理可視化的方法和系統(tǒng)。
背景技術(shù):
計算機技術(shù)領(lǐng)域可以分為兩大類:計算機本身的技術(shù),計算機之間的互聯(lián)技術(shù)。在網(wǎng)絡(luò)發(fā)達的今天,計算機之間的互聯(lián)技術(shù)便有了很高的研究價值。在計算機互聯(lián)領(lǐng)域,tcp協(xié)議無疑成為了現(xiàn)在千萬計算機互聯(lián)的語言。研究、學習tcp協(xié)議對于理解計算機之間的互聯(lián)技術(shù)以及設(shè)計一些簡單的通訊協(xié)議具有很高的價值,但tcp協(xié)議本身具有復雜、結(jié)構(gòu)龐大的特點,學習研究tcp協(xié)議需要c語言和os的相關(guān)知識,入門門檻較高。學習tcp協(xié)議最直接的方式是閱讀tcp協(xié)議的具體實現(xiàn)項目,比如lwip。但是此類項目源代碼體積龐大,閱讀代碼往往會陷入代碼細節(jié),不能從整體上掌握協(xié)議棧設(shè)計原理及方法。
技術(shù)實現(xiàn)要素:
為了解決該問題,本發(fā)明提出了一種tcp協(xié)議傳輸數(shù)據(jù)原理可視化的方法和系統(tǒng)。將tcp協(xié)議的理論知識通過仿真軟件以圖形和文字的方式展示出來,讓對tcp協(xié)議有興趣的學習者有了一個簡單有效地全面了解協(xié)議棧的途徑,能夠讓學習者快速入門。
本發(fā)明提供了一種tcp協(xié)議傳輸數(shù)據(jù)原理可視化的方法。模擬終端設(shè)備通訊中tcp協(xié)議發(fā)送、接收數(shù)據(jù)的過程,以圖形和文字的方式詳細展現(xiàn)以太網(wǎng)的數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層的協(xié)議定義和原理。以仿真軟件的形式體現(xiàn),模擬發(fā)送、接收tcp數(shù)據(jù),將發(fā)送或者接收到的數(shù)據(jù)按照以太網(wǎng)協(xié)議自動分為數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層,并以分層圖形的形式展現(xiàn),每一層都按照協(xié)議規(guī)定按照協(xié)議字段展示,使用鼠標點擊相關(guān)部分都有詳細的協(xié)議規(guī)范解釋。系統(tǒng)可以模擬的硬件設(shè)備有pc機、交換機,可以模擬兩個pc機之間使用tcp協(xié)議發(fā)送、接收數(shù)據(jù)。同時,也可以使用兩個pc機和交換機(三層)模擬兩臺pc之間通過三層路由交換的數(shù)據(jù)交互。
模擬的硬件設(shè)備有pc機、交換機,模擬兩個pc機之間使用tcp協(xié)議發(fā)送、接收數(shù)據(jù)。
使用兩個pc機和交換機模擬兩臺pc之間通過三層路由交換的數(shù)據(jù)交互。
分為三個主要的模塊,設(shè)備仿真模塊、tcp協(xié)議仿真模塊、界面展示模塊;
設(shè)備仿真模塊主要仿真的設(shè)備有pc機和三層交換機;pc需要仿真的主要特性包括設(shè)置mac地址、ip地址、建立網(wǎng)絡(luò)連接、發(fā)送接收數(shù)據(jù);三層交換機需要仿真的主要特性包括設(shè)置端口的ip,設(shè)置三層路由;
tcp協(xié)議仿真模塊根據(jù)tcp協(xié)議規(guī)范內(nèi)容,使用算法模擬仿真一個輕量級的tcp協(xié)議棧,能產(chǎn)生符合tcp協(xié)議的數(shù)據(jù)包,解析tcp協(xié)議的數(shù)據(jù)包;
界面展示模塊通過圖形界面和文字的方式展示收發(fā)tcp數(shù)據(jù)包的詳細過程。
pc機和三層交換機的外觀設(shè)計使用qt的點、線、面繪制模塊繪制簡單的外觀形狀。
tcp協(xié)議仿真模塊實現(xiàn)了一個輕量級的tcp協(xié)議棧,支持數(shù)據(jù)鏈路層、ip層、tcp層的協(xié)議數(shù)據(jù)封裝和解析。此模塊為設(shè)備仿真模塊提供協(xié)議包封包、解包的服務。
界面展示模塊負責將整個tcp通訊過程中涉及到的協(xié)議,以圖形配合文字的形式展示出來;展示模塊使用qt的2d圖形管理架構(gòu)thegraphicsviewframework。graphicsview框架提供了一個界面,用于管理和交互大量的用戶自定義的2d圖形物件,并且有一個viewwidget用戶可視化這些物件。
每一個圖形展示元素都有兩部分組成,圖形本身的屬性描述和數(shù)據(jù)描述;圖形本身的屬性主要包括表格類型、線條粗細,內(nèi)容數(shù)據(jù)屬性主要包含由tcp仿真層提供的動態(tài)數(shù)據(jù)組成。
具體圖形模塊抽象模型如下所示。
classdisplaymodule
{
color;
fill;
classattribute_data
{
tcpheader;
tcpdata;
}
}
圖形展示元素的數(shù)據(jù)屬性設(shè)計按照tcp協(xié)議棧各層次的協(xié)議格式設(shè)計,當用戶發(fā)送數(shù)據(jù)時,由tcp仿真模塊產(chǎn)生tcp協(xié)議包各個協(xié)議層數(shù)據(jù)內(nèi)容更新圖形展示模塊的數(shù)據(jù)屬性,圖形展示元素檢測到數(shù)據(jù)屬性變化后更新展示內(nèi)容。
本發(fā)明的有益效果是
本發(fā)明可以幫助初學者快速掌握tcp協(xié)議內(nèi)容,對整個協(xié)議內(nèi)容的宏觀掌握有較強的幫助作用。較傳統(tǒng)通過閱讀書籍、編程實驗等學習方法學習tcp協(xié)議相比,具有趣味性,整體性的優(yōu)點。
附圖說明
圖1是系統(tǒng)整體架構(gòu)圖
圖2是協(xié)議總體展示圖;
圖3是具體協(xié)議內(nèi)容概況提示圖;
圖4是體協(xié)議內(nèi)容示意圖。
具體實施方式
下面對本發(fā)明的內(nèi)容進行更加詳細的闡述:
該系統(tǒng)共分為三個主要的模塊,設(shè)備仿真模塊、tcp協(xié)議仿真模塊、界面展示模塊。設(shè)備仿真模塊主要仿真的設(shè)備有pc機和三層交換機。pc需要仿真的主要特性包括設(shè)置mac地址、ip地址、建立網(wǎng)絡(luò)連接、發(fā)送接收數(shù)據(jù)。三層交換機需要仿真的主要特性包括設(shè)置端口的ip,設(shè)置三層路由。tcp協(xié)議仿真模塊根據(jù)tcp協(xié)議規(guī)范內(nèi)容,使用算法模擬仿真一個輕量級的tcp協(xié)議棧,能產(chǎn)生符合tcp協(xié)議的數(shù)據(jù)包,解析tcp協(xié)議的數(shù)據(jù)包。界面展示模塊通過圖形界面和文字的方式展示收發(fā)tcp數(shù)據(jù)包的詳細過程。整個系統(tǒng)的架構(gòu)見附圖1所示。
設(shè)備仿真模塊主要設(shè)備有兩種,pc機和三層交換機。pc機和三層交換機的外觀設(shè)計使用qt的點、線、面繪制模塊繪制簡單的外觀形狀。主要設(shè)計到的qt的圖形類有qpainter、qpen、qrectf、qbrush等。pc設(shè)備可以設(shè)置mac地址、ip地址,交換機設(shè)備可以設(shè)置端口ip和靜態(tài)路由信息。
tcp協(xié)議仿真模塊實現(xiàn)了一個輕量級的tcp協(xié)議棧,支持數(shù)據(jù)鏈路層、ip層、tcp層的協(xié)議數(shù)據(jù)封裝和解析。此模塊為設(shè)備仿真模塊提供協(xié)議包封包、解包的服務。設(shè)計并實現(xiàn)tcp_protocol_init、tcp_protocol_socket_create、tcp_protocol_socket_bind、tcp_protocol_socket_listen、tcp_protocol_socket_accept、tcp_protocol_socket_connect、tcp_protocol_socket_send_data、tcp_protocol_socket_receive_data、tcp_protocol_close接口。這些接口為設(shè)備仿真層提供socket應用層的服務。
界面展示模塊負責將整個tcp通訊過程中涉及到的協(xié)議,以圖形配合文字的形式展示出來。展示模塊使用qt的2d圖形管理架構(gòu)thegraphicsviewframework。graphicsview框架提供了一個界面,用于管理和交互大量的用戶自定義的2d圖形物件,并且有一個viewwidget(qgraphicsview)用戶可視化這些物件,支持zoom和rotate。這個框架包含事件傳播構(gòu)架,支持場景中物體交互能力。物件的鍵盤,鼠標的按下,移動,松開,雙擊事件都能響應,并且可以跟蹤鼠標移動。該框架可以滿足tcp原理展示的具體需求。tcp原理展示最好的圖形是表格,但需要表格的內(nèi)容和格式是隨著仿真設(shè)備的配置和使用的具體協(xié)議以及發(fā)送的內(nèi)容動態(tài)更改的。因此,本系統(tǒng)使用了具體圖形形狀屬性和內(nèi)容數(shù)據(jù)分離的設(shè)計,即每一個圖形展示元素都有兩部分組成,圖形本身的屬性描述和數(shù)據(jù)描述。圖形本身的屬性主要包括表格類型、線條粗細等外觀,內(nèi)容數(shù)據(jù)屬性主要包含由tcp仿真層提供的動態(tài)數(shù)據(jù)組成。具體圖形模塊抽象模型如下所示。
classdisplaymodule
{
color;
fill;
classattribute_data
{
tcpheader;
tcpdata;
}
}
圖形展示元素的數(shù)據(jù)屬性設(shè)計按照tcp協(xié)議棧各層次的協(xié)議格式設(shè)計,當用戶發(fā)送數(shù)據(jù)時,由tcp仿真模塊產(chǎn)生tcp協(xié)議包各個協(xié)議層數(shù)據(jù)內(nèi)容更新圖形展示模塊的數(shù)據(jù)屬性,圖形展示元素檢測到數(shù)據(jù)屬性變化后更新展示內(nèi)容。
該系統(tǒng)的實例說明,兩臺pc間通過tcp通訊。步驟如下:
1.新建project,然后新增兩臺pc機仿真設(shè)備,然后使用仿真rj45網(wǎng)線將兩臺計算機連接。
2.設(shè)置pc1的ip地址為192.168.0.12,pc2的ip地址為192.168.0.15。
3.使用pc1使用本地地址和80端口創(chuàng)建tcpserver,并等待對方連接。
4.pc2使用pc1的ip地址和作為服務地址,連接pc1。
5.連接成功后,使用pc1發(fā)送tcp數(shù)據(jù)到pc2。
6.系統(tǒng)將這個過程中的數(shù)據(jù)鏈路層、ip層、tcp層的數(shù)據(jù)內(nèi)容以圖形的方式實時展示。
展示的一個實例,圖2為tcp協(xié)議整體的概況說明展示圖,鼠標放在某一個具體協(xié)議內(nèi)容上時(這里以ip協(xié)議頭為例),系統(tǒng)會簡略提示該協(xié)議內(nèi)容,見圖3具體協(xié)議內(nèi)容概況提示。使用鼠標點擊具體的協(xié)議內(nèi)容,可以查看該協(xié)議的具體細節(jié),見圖4具體協(xié)議內(nèi)容。同樣,可以在詳細的協(xié)議圖里點擊查看協(xié)議字段詳細的解釋。