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