資源描述:
《windows平臺(tái)下tcpip協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、目錄1.引言12.TCP/IP協(xié)議概述13.TCP/IP協(xié)議的系統(tǒng)設(shè)計(jì)24.TCP/IP協(xié)議的系統(tǒng)實(shí)現(xiàn)35.結(jié)論116.詳細(xì)設(shè)計(jì)代碼1219Windows平臺(tái)下TCP/IP協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)1.引言本文背景基于一個(gè)TCP/IP協(xié)議改進(jìn)項(xiàng)目,項(xiàng)目要求通過改進(jìn)TCP/IP協(xié)議擁塞控制算法來提高無線網(wǎng)絡(luò)環(huán)境下的數(shù)據(jù)吞吐量。目前的TCP協(xié)議在無線網(wǎng)絡(luò)環(huán)境下無法區(qū)分出擁塞丟包與誤碼丟包,根據(jù)這兩種不同的丟包原因需要對(duì)TCP的窗口進(jìn)行不同的調(diào)整,因此需要對(duì)現(xiàn)有的TCP/IP協(xié)議進(jìn)行改進(jìn)。針對(duì)這個(gè)需求提供的一個(gè)解決方案就是自己開發(fā)出一套TCP/IP協(xié)議以替代系統(tǒng)TCP/IP協(xié)議,但是并不需要
2、實(shí)現(xiàn)整個(gè)TCP/IP協(xié)議族,重點(diǎn)實(shí)現(xiàn)TCP與IP協(xié)議即可。2.TCP/IP協(xié)議概述TCP/IP協(xié)議是Internet的技術(shù)基礎(chǔ)。Internet是一個(gè)廣域網(wǎng),是目前聯(lián)通世界上絕大多數(shù)國家和地區(qū)的全球性信息系統(tǒng)。在Internet上,可以實(shí)現(xiàn)低成本、高速率、交互式的信息查詢、信息發(fā)布、通訊聯(lián)絡(luò)以及協(xié)同作業(yè)等等現(xiàn)代化的工作、學(xué)習(xí)和生活。TCP/IP協(xié)議族通常分為四個(gè)層次,應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和鏈路層。如圖1所示:應(yīng)用層(FTP,SMTP等)傳輸層(TCP,UDP等)網(wǎng)絡(luò)層(IP,ICMP等)鏈路層(網(wǎng)卡驅(qū)動(dòng)等)圖1TCP/IP協(xié)議族四層結(jié)構(gòu)應(yīng)用層向用戶提供一組常用的應(yīng)用程序,比
3、如電子郵件(SMTP)、文件傳輸訪問(FTP)、遠(yuǎn)程登錄(Telnet)等。19傳輸層提供進(jìn)程間端到端的通信。在TCP/IP協(xié)議族中,主要有兩種不同的傳輸協(xié)議:傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報(bào)協(xié)議(UDP)。TCP提供面向連接的、可靠的(沒有數(shù)據(jù)重復(fù)或丟失),全雙エ的數(shù)據(jù)流傳輸服務(wù)。而UDP則提供的是不可靠的面向無連接的數(shù)據(jù)傳輸服務(wù),其可靠性應(yīng)由上層應(yīng)用程序來支持。網(wǎng)絡(luò)層,主要負(fù)責(zé)數(shù)據(jù)包的分組及路由選擇。在TCP/IP協(xié)議族中,網(wǎng)絡(luò)層協(xié)議包括網(wǎng)際協(xié)議IP、互連網(wǎng)控制報(bào)文協(xié)議ICMP、地址轉(zhuǎn)換協(xié)議ARP和反向地址轉(zhuǎn)換協(xié)議RARR。鏈路層處于四層結(jié)構(gòu)的最低層,負(fù)責(zé)接收IP數(shù)據(jù)報(bào)
4、并通過網(wǎng)絡(luò)發(fā)送之,或從網(wǎng)絡(luò)上接收物理幀,抽出IP數(shù)據(jù)報(bào),交給IP層。通常包括網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序及網(wǎng)絡(luò)接口卡等。3.TCP/IP協(xié)議的系統(tǒng)設(shè)計(jì)以Windows網(wǎng)絡(luò)體系結(jié)構(gòu)為基礎(chǔ),參照WindowsDDK中關(guān)于網(wǎng)絡(luò)協(xié)議驅(qū)動(dòng)與傳輸驅(qū)動(dòng)接口(TDI)的相關(guān)資料,以及考慮到與原有系統(tǒng)TCP/IP兼容,提出的設(shè)計(jì)方案如圖2所示。圖2TCP/IP協(xié)議設(shè)計(jì)框圖應(yīng)用程序也就是根據(jù)協(xié)議開發(fā)的特定應(yīng)用。這里是針對(duì)開發(fā)的TCP/IP協(xié)議編寫的一個(gè)FTP小應(yīng)用程序,用來測試開發(fā)的協(xié)議。應(yīng)用程序通過Wm32API[3]接口將其操作轉(zhuǎn)化成相應(yīng)的請(qǐng)求提交給TDI客戶。19傳輸驅(qū)動(dòng)程序接口(TDI)客戶是核心態(tài)
5、的驅(qū)動(dòng)程序。它的主要功能是完成上層應(yīng)用程序的請(qǐng)求,或者根據(jù)該請(qǐng)求產(chǎn)生相應(yīng)的TDI操作,并將該操作傳遞給下層的TDI傳輸器。TDI客戶通過Win32API接口與上層應(yīng)用程序交互;通過TDI接口與下層TDI傳輸器進(jìn)行交互。TDI傳輸提供者(TDITransportProvider)又稱為TDI傳輸器,NDIS協(xié)議驅(qū)動(dòng)程序,以及協(xié)議驅(qū)動(dòng)程序,是工作在核心態(tài)的協(xié)議驅(qū)動(dòng)程序。其中TCP協(xié)議,IP協(xié)議,ARP協(xié)議等都是在這個(gè)模塊中實(shí)現(xiàn)。它通過TDI接口與上層的TDI客戶進(jìn)行交互;通過NDIS接口與下層微端口驅(qū)動(dòng)進(jìn)行交互。NDIS下層微端口驅(qū)動(dòng)程序是工作在核心態(tài)的驅(qū)動(dòng)程序,它負(fù)責(zé)將TDI傳
6、輸器接入至特定的網(wǎng)絡(luò)適配器。它通過NDIS接口與上下層進(jìn)行交互。4.TCP/IP協(xié)議的系統(tǒng)實(shí)現(xiàn)由圖2中可以看出,整個(gè)系統(tǒng)可分為四部分,應(yīng)用程序、TDI客戶、TDI傳輸器和下層微端口驅(qū)動(dòng)。事實(shí)上對(duì)于下層微端口驅(qū)動(dòng)并不需要考慮,因?yàn)榭梢灾苯诱{(diào)用NDIS庫函數(shù)將數(shù)據(jù)轉(zhuǎn)發(fā)到這層,處于這層上的驅(qū)動(dòng)會(huì)自動(dòng)將數(shù)據(jù)送出網(wǎng)絡(luò)適配器。因此真正需要開發(fā)的也就是上面三個(gè)部分。應(yīng)用程序是用來實(shí)現(xiàn)簡単文件傳輸?shù)?,因此考慮開發(fā)兩個(gè)小應(yīng)用程序,一個(gè)為服務(wù)器端,一個(gè)為客戶端,服務(wù)器端用來監(jiān)聽和處理來自客戶端的連接請(qǐng)求。客戶端主要是向服務(wù)器端請(qǐng)求連接和發(fā)送數(shù)據(jù)。TDI客戶負(fù)責(zé)將來自應(yīng)用程序的請(qǐng)求進(jìn)行相應(yīng)的處理之
7、后轉(zhuǎn)發(fā)給下層的TDI傳輸驅(qū)動(dòng)。TDI傳輸驅(qū)動(dòng)主要是實(shí)現(xiàn)TCP,IP等功能,并與下層的NDIS接口進(jìn)行交互。4.1應(yīng)用程序的實(shí)現(xiàn)客戶端可以通過本地的某個(gè)端口向?qū)Ψ桨l(fā)送數(shù)據(jù)。并顯示一些錯(cuò)誤狀態(tài)。服務(wù)器端,可以指定在本地的某個(gè)端口監(jiān)聽連接請(qǐng)求,接收數(shù)據(jù),并顯示一些狀態(tài)。實(shí)現(xiàn):通過DeviceIOControl及相應(yīng)ControlCode來將命令傳輸?shù)较聦拥腡DI客戶。主要接口函數(shù):CreateFile和DeviceIoControlCreateFile函數(shù)原型:HANDLECreateFile(LPCTSTR