專利名稱:一種輕量級tcp/ip協(xié)議棧的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于通信技術(shù)領(lǐng)域,涉及輕量級TCP/IP協(xié)議棧實(shí)現(xiàn)方法,特別涉及ー種在專用操作系統(tǒng)中使用的輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法。
背景技術(shù):
TCP/IP協(xié)議棧的任務(wù)是在不同的機(jī)器之間進(jìn)行數(shù)據(jù)通信,使數(shù)據(jù)傳輸不受地域的限制。在TCP/IP協(xié)議棧中包含有一系列構(gòu)成互聯(lián)網(wǎng)基礎(chǔ)的網(wǎng)絡(luò)協(xié)議。目前,TCP/IP協(xié)議棧已經(jīng)被廣泛應(yīng)用在互聯(lián)網(wǎng)中,成為了事實(shí)上的互聯(lián)網(wǎng)通信標(biāo)準(zhǔn)。TCP/IP協(xié)議棧中包含有多種協(xié)議來滿足網(wǎng)絡(luò)應(yīng)用的不同需求,而在專用操作系統(tǒng)中,作為內(nèi)核的組成部分,如何在專用操作系統(tǒng)的內(nèi)核中實(shí)現(xiàn)輕量級的TCP/IP協(xié)議棧層,使得專用系統(tǒng)能夠與其他通用操作系統(tǒng)進(jìn)行網(wǎng)絡(luò)通信是ー個需要解決的技術(shù)問題。
發(fā)明內(nèi)容
本發(fā)明g在至少解決現(xiàn)有技術(shù)中存在的技術(shù)問題,特別創(chuàng)新地提出了ー種輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法。為了實(shí)現(xiàn)本發(fā)明的上述目的,本發(fā)明提供了ー種輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法,其包括如下步驟SI :socket編程接ロ處理模塊接收應(yīng)用程序請求并對不兼容的應(yīng)用程序請求進(jìn)行格式轉(zhuǎn)換;S2 =TCP協(xié)議處理模塊或UDP協(xié)議處理模塊對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行處理;S3 IP協(xié)議處理模塊對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行打包、拆包和分片;S4 :對網(wǎng)卡驅(qū)動進(jìn)行統(tǒng)ー的數(shù)據(jù)抽象。本發(fā)明的輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法在專用操作系統(tǒng)的內(nèi)核中實(shí)現(xiàn)輕量級的TCP/IP協(xié)議棧層,使得專用操作系統(tǒng)能夠與其他通用操作系統(tǒng)進(jìn)行網(wǎng)絡(luò)通信,增強(qiáng)了系統(tǒng)的可擴(kuò)展性。本發(fā)明的附加方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
本發(fā)明的上述和/或附加的方面和優(yōu)點(diǎn)從結(jié)合下面附圖對實(shí)施例的描述中將變得明顯和容易理解,其中圖I是本發(fā)明輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法流程圖;
圖2是本發(fā)明ー種優(yōu)選實(shí)施方式中協(xié)議組織架構(gòu)示意圖。
具體實(shí)施例方式下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。本發(fā)明提出了ー種輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法,如圖I所示,該輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法包括如下步驟SI =Socket編程接ロ處理模塊接收應(yīng)用程序請求并對不兼容的應(yīng)用程序請求進(jìn)行格式轉(zhuǎn)換;S2 =TCP協(xié)議處理模塊或UDP協(xié)議處理模塊對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行處理;S3 IP協(xié)議處理模塊對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行打包、拆包和分片;S4 :對網(wǎng)卡驅(qū)動進(jìn)行統(tǒng)ー的數(shù)據(jù)抽象。在本實(shí)施方式中,本發(fā)明的輕量級的TCP/IP協(xié)議棧包括IP協(xié)議,ICMP協(xié)議,ARP協(xié)議,TCP協(xié)議和UDP協(xié)議。同吋,為了增強(qiáng)可擴(kuò)展性和應(yīng)用程序的兼容性,増加了 socket轉(zhuǎn)換層和網(wǎng)卡驅(qū)動抽象層。其中,socket轉(zhuǎn)換層是為了符合通用的網(wǎng)絡(luò)socket編程接ロ,兼容大多數(shù)的網(wǎng)絡(luò)應(yīng)用程序;網(wǎng)卡驅(qū)動抽象層是對網(wǎng)卡驅(qū)動的統(tǒng)一管理層。數(shù)據(jù)在該輕量級的TCP/IP協(xié)議棧中進(jìn)行處理后將通過網(wǎng)卡驅(qū)動抽象層發(fā)送到具體的網(wǎng)卡設(shè)備上。在步驟SI中,socket編程接ロ處理模塊接收應(yīng)用程序請求并對不兼容的應(yīng)用程序請求進(jìn)行格式轉(zhuǎn)換,應(yīng)用程序通過調(diào)用socket系統(tǒng)調(diào)用完成網(wǎng)絡(luò)編程,Socket編程接ロ處理模塊根據(jù)應(yīng)用程序調(diào)用的系統(tǒng)調(diào)用及參數(shù)完成網(wǎng)絡(luò)數(shù)據(jù)包的初始化及參數(shù)的設(shè)置。在本實(shí)施方式中,socket編程接ロ處理模塊只處理協(xié)議族為PF_INET及PF_INET6,即TCP/IP協(xié)議族的請求,其他協(xié)議族的請求不支持。并且,只支持S0CK_STREAM參數(shù)(可靠的面向連接的服務(wù))和S0CK_DGRAM(數(shù)據(jù)包服務(wù))參數(shù)。當(dāng)使用bind調(diào)用時(shí),若沒有指定具體綁定端ロ,則會自動分配ー個10000端ロ以上的沒有占用的端ロ作為默認(rèn)端ロ。socket編程接ロ處理模塊對應(yīng)用程序請求進(jìn)行轉(zhuǎn)換后,進(jìn)入步驟S2,即TCP協(xié)議處理模塊或UDP協(xié)議處理模塊對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行處理,數(shù)據(jù)處理流程將會分別調(diào)用TCP協(xié)議處理模塊或Μ)Ρ協(xié)議處理模塊。當(dāng)網(wǎng)絡(luò)采用TCP傳輸方式后,socket將調(diào)用TCP協(xié)議處理模塊進(jìn)行數(shù)據(jù)處理,所述TCP協(xié)議處理模塊實(shí)現(xiàn)正常的TCP流程的狀態(tài)機(jī)、通過窗ロ大小來完成流量和擁塞控制;當(dāng)網(wǎng)絡(luò)采用m)P傳輸方式后,socket將調(diào)用UDP協(xié)議處理模塊進(jìn)行數(shù)據(jù)處理,所述UDP協(xié)議處理模塊完成數(shù)據(jù)包的UDP協(xié)議封裝。然后,進(jìn)行步驟S3,IP協(xié)議處理模塊對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行打包、拆包和分片。IP協(xié)議包括IPv4和IPv6兩個版本,兩個版本的協(xié)議處理調(diào)用通過socket接ロ參數(shù)進(jìn)行選擇,IP協(xié)議只實(shí)現(xiàn)了 IP數(shù)據(jù)包的打包和拆包,支持IP數(shù)據(jù)包的分片機(jī)制,不支持IP轉(zhuǎn)發(fā)機(jī)制。在本實(shí)施方式中,還利用ARP協(xié)議和ICMP協(xié)議輔助IP協(xié)議工作,其中,ARP協(xié)議對MAC地址和IP地址進(jìn)行解析,ICMP協(xié)議對網(wǎng)絡(luò)控制數(shù)據(jù)包進(jìn)行發(fā)送和解析。最后,進(jìn)行步驟S4,對網(wǎng)卡驅(qū)動進(jìn)行統(tǒng)ー的數(shù)據(jù)抽象,由于網(wǎng)絡(luò)設(shè)備所采用的網(wǎng)卡眾多,網(wǎng)卡驅(qū)動千差萬別,通過驅(qū)動的數(shù)據(jù)抽象來規(guī)范網(wǎng)卡驅(qū)動的統(tǒng)ー化管理。這ー步主要維護(hù)當(dāng)前可用網(wǎng)卡設(shè)備,當(dāng)網(wǎng)卡設(shè)備啟用時(shí),需要向該網(wǎng)卡驅(qū)動的數(shù)據(jù)抽象進(jìn)行注冊,并完成網(wǎng)卡驅(qū)動數(shù)據(jù)抽象同網(wǎng)卡驅(qū)動的連接;當(dāng)需要發(fā)送的數(shù)據(jù)到達(dá)網(wǎng)卡驅(qū)動數(shù)據(jù)抽象層時(shí),通過本地維護(hù)的路由表選擇具體使用的網(wǎng)卡設(shè)備從而完成數(shù)據(jù)發(fā)送。本發(fā)明的輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法在專用操作系統(tǒng)的內(nèi)核中實(shí)現(xiàn)輕量級的TCP/IP協(xié)議棧層,使得專用操作系統(tǒng)能夠與其他通用操作系統(tǒng)進(jìn)行網(wǎng)絡(luò)通信,增強(qiáng)了系統(tǒng)的可擴(kuò)展性。在本說明書的描述中,參考術(shù)語“ー個實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“ー些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少ー個實(shí)施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個或多個實(shí)施例或示例中以合適的方式結(jié)合。盡管已經(jīng)示出和描述了本發(fā)明的實(shí)施例,本領(lǐng)域的普通技術(shù)人員可以理解在不脫離本發(fā)明的原理和宗g的情況下可以對這些實(shí)施例進(jìn)行多種變化、修改、替換和變 型,本發(fā)明的范圍由權(quán)利要求及其等同物限定。
權(quán)利要求
1.ー種輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法,其特征在于,包括如下步驟 51=SOCket編程接ロ處理模塊接收應(yīng)用程序請求并對不兼容的應(yīng)用程序請求進(jìn)行格式轉(zhuǎn)換; 52TCP協(xié)議處理模塊或UDP協(xié)議處理模塊對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行處理; 53:IP協(xié)議處理模塊對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行打包、拆包和分片; 54:對網(wǎng)卡驅(qū)動進(jìn)行統(tǒng)ー的數(shù)據(jù)抽象。
2.如權(quán)利要求I所述的輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法,其特征在于,在所述步驟SI中,應(yīng)用程序通過調(diào)用socket系統(tǒng)調(diào)用完成網(wǎng)絡(luò)編程,Socket編程接ロ處理模塊根據(jù)應(yīng)用程序調(diào)用的系統(tǒng)調(diào)用及參數(shù)完成網(wǎng)絡(luò)數(shù)據(jù)包的初始化及參數(shù)的設(shè)置。
3.如權(quán)利要求2所述的輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法,其特征在于,所述參數(shù)為CK_STREAM 和 SOCK_DGRAM 參數(shù)。
4.如權(quán)利要求I所述的輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法,其特征在于,在所述步驟SI中,處理協(xié)議族為PF_INET及PF_INET6的請求,即TCP/IP協(xié)議族的請求。
5.如權(quán)利要求I所述的輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法,其特征在于,在所述步驟SI中,當(dāng)使用bind調(diào)用時(shí),若沒有指定具體綁定端ロ,則會自動分配ー個10000端ロ以上的沒有占用的端ロ作為默認(rèn)端ロ。
6.如權(quán)利要求I所述的輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法,其特征在于,在所述步驟S2中,當(dāng)網(wǎng)絡(luò)采用TCP傳輸方式后,socket將調(diào)用TCP協(xié)議處理模塊進(jìn)行數(shù)據(jù)處理,所述TCP協(xié)議處理模塊實(shí)現(xiàn)正常的TCP流程的狀態(tài)機(jī)、通過窗ロ大小來完成流量和擁塞控制; 當(dāng)網(wǎng)絡(luò)采用UDP傳輸方式后,socket將調(diào)用UDP協(xié)議處理模塊進(jìn)行數(shù)據(jù)處理,所述UDP協(xié)議處理模塊完成數(shù)據(jù)包的Μ)Ρ協(xié)議封裝。
7.如權(quán)利要求I所述的輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法,其特征在于,在所述步驟S3中,IP協(xié)議包括IPv4和IPv6兩個版本,兩個版本的協(xié)議處理調(diào)用通過socket接ロ參數(shù)進(jìn)行選擇。
8.如權(quán)利要求I所述的輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法,其特征在于,在所述步驟S3中,利用ARP協(xié)議和ICMP協(xié)議輔助IP協(xié)議工作,所述ARP協(xié)議對MAC地址和IP地址進(jìn)行解析,所述ICMP協(xié)議對網(wǎng)絡(luò)控制數(shù)據(jù)包進(jìn)行發(fā)送和解析。
9.如權(quán)利要求I所述的輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法,其特征在于,在所述步驟S4中,維護(hù)當(dāng)前可用網(wǎng)卡設(shè)備,當(dāng)所述網(wǎng)卡設(shè)備啟用時(shí),向所述網(wǎng)卡驅(qū)動數(shù)據(jù)抽象進(jìn)行注冊,并完成所述網(wǎng)卡驅(qū)動數(shù)據(jù)抽象同網(wǎng)卡驅(qū)動的連接;當(dāng)需要發(fā)送的數(shù)據(jù)到達(dá)網(wǎng)卡驅(qū)動數(shù)據(jù)抽象層時(shí),通過本地維護(hù)的路由表選擇具體使用的網(wǎng)卡設(shè)備從而完成數(shù)據(jù)發(fā)送。
全文摘要
本發(fā)明提出了一種輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法,其包括如下步驟首先,socket編程接口處理模塊接收應(yīng)用程序請求并對不兼容的應(yīng)用程序請求進(jìn)行格式轉(zhuǎn)換;然后,TCP協(xié)議處理模塊或UDP協(xié)議處理模塊對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行處理;再后,IP協(xié)議處理模塊對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行打包、拆包和分片;最后,對網(wǎng)卡驅(qū)動進(jìn)行統(tǒng)一的數(shù)據(jù)抽象。本發(fā)明的輕量級TCP/IP協(xié)議棧的實(shí)現(xiàn)方法在專用操作系統(tǒng)的內(nèi)核中實(shí)現(xiàn)輕量級的TCP/IP協(xié)議棧層,使得專用操作系統(tǒng)能夠與其他通用操作系統(tǒng)進(jìn)行網(wǎng)絡(luò)通信,增強(qiáng)了系統(tǒng)的可擴(kuò)展性。
文檔編號H04L29/08GK102685243SQ201210161378
公開日2012年9月19日 申請日期2012年5月22日 優(yōu)先權(quán)日2012年5月22日
發(fā)明者朱龍?jiān)? 胡事民, 趙鵬 申請人:清華大學(xué)