![停止等待協(xié)議的實現(xiàn)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/15/8683e5e0-6e36-4a23-94bb-8f5f05732d3d/8683e5e0-6e36-4a23-94bb-8f5f05732d3d1.gif)
![停止等待協(xié)議的實現(xiàn)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/15/8683e5e0-6e36-4a23-94bb-8f5f05732d3d/8683e5e0-6e36-4a23-94bb-8f5f05732d3d2.gif)
![停止等待協(xié)議的實現(xiàn)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/15/8683e5e0-6e36-4a23-94bb-8f5f05732d3d/8683e5e0-6e36-4a23-94bb-8f5f05732d3d3.gif)
![停止等待協(xié)議的實現(xiàn)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/15/8683e5e0-6e36-4a23-94bb-8f5f05732d3d/8683e5e0-6e36-4a23-94bb-8f5f05732d3d4.gif)
![停止等待協(xié)議的實現(xiàn)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/15/8683e5e0-6e36-4a23-94bb-8f5f05732d3d/8683e5e0-6e36-4a23-94bb-8f5f05732d3d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、v1.0可編輯可修改福建農(nóng)林大學(xué)計算機與信息學(xué)院課程設(shè)計報告11課程名稱:計算機網(wǎng)絡(luò)課程設(shè)計題目:停止等待協(xié)議的實現(xiàn)名:系:業(yè):計算機計算機科學(xué)與技術(shù)級:口,號:指導(dǎo)教師:稱:2011 年 6 月 10 日福建農(nóng)林大學(xué)計算機與信息學(xué)院課程設(shè)計報告結(jié)果評定評語:成績:指導(dǎo)教師簽字:評定日期:1、課程設(shè)計的目的和任務(wù)2、 課程設(shè)計的要求3、課程設(shè)計的分析與設(shè)計設(shè)計任務(wù)分析 設(shè)計方案論證 詳纟田設(shè)計 3、系統(tǒng)實施 4、總結(jié)與體會 5、參考文獻(xiàn) 附錄:源代碼 45579911停止等待協(xié)議的實現(xiàn)1、課程設(shè)計的目的和任務(wù)計算機網(wǎng)絡(luò)課程講述計算機網(wǎng)絡(luò)的原理,尤其是TCP/IP協(xié)議棧的原理和應(yīng)用,是一門理論性
2、、應(yīng)用性、實踐性都比較強的課程。而此次的課程設(shè)計是在學(xué)習(xí)完計算機網(wǎng)絡(luò)課程后進(jìn)行的一次全面的綜合能力的檢驗。計算機網(wǎng)絡(luò)的課程設(shè)計是從原理和實踐的角度,在計算機上編程模擬實現(xiàn)計算機 網(wǎng)絡(luò)的基本協(xié)議。通過本次課程設(shè)計,使我們對計算機網(wǎng)絡(luò)的原理能有更加深刻的認(rèn) 識和理解,同時進(jìn)一步鍛煉自己的動手能力。在這次課程設(shè)計中,我設(shè)計的的是通過編譯語言,編程模擬實現(xiàn)數(shù)據(jù)鏈路層協(xié)議 中的停止等協(xié)議。2、課程設(shè)計的要求通過雙方的收發(fā)數(shù)據(jù)而達(dá)到相互通信的目的。3、課程設(shè)計的分析與設(shè)計設(shè)計任務(wù)分析停止等待協(xié)議是數(shù)據(jù)鏈路層的幾個協(xié)議中最簡單的協(xié)議,是具有最簡單流量控win sock制的數(shù)據(jù)鏈路層協(xié)議,是數(shù)據(jù)鏈路層各種協(xié)議
3、的基礎(chǔ)。此課程設(shè)計是基于 編程,是在VC+勺MFC界面下和控制臺下實現(xiàn)的。它采用客戶機/服務(wù)器(C/S)模 型,即發(fā)送數(shù)據(jù)的一端為客戶端,接收數(shù)據(jù)的一端為服務(wù)器端。停止等待協(xié)議就是通 過雙方的收發(fā)數(shù)據(jù)而達(dá)到相互通信的目的。本課程設(shè)計通過編程模擬實現(xiàn)停止等待協(xié)議, 隨機的發(fā)送數(shù)據(jù),通過服務(wù)器的的 接受結(jié)果和客戶端的接受結(jié)果顯示理解停止等待協(xié)議的原理,掌握其應(yīng)用。設(shè)計方案論證當(dāng)收方收到一個正確的數(shù)據(jù)幀后,便會向發(fā)方發(fā)送一個確認(rèn)幀ACK表示發(fā)送的數(shù)據(jù)正確接收。當(dāng)發(fā)方收到確認(rèn)幀后才能發(fā)送一個新的數(shù)據(jù)幀,這樣就實現(xiàn)了接收方 對發(fā)送方的流量控制。由于通信線路質(zhì)量各方面的影響,數(shù)據(jù)幀從發(fā)送方到接收方傳輸?shù)倪^
4、程中可能會 出現(xiàn)差錯。為了保證數(shù)據(jù)的正確性和完整性, 接收方在收到數(shù)據(jù)后,會用一定的方法 對接收到的數(shù)據(jù)進(jìn)行差錯檢驗,所以接收方很容易檢測出收到的數(shù)據(jù)幀是否出現(xiàn)差錯。當(dāng)接收方發(fā)現(xiàn)收到的數(shù)據(jù)出現(xiàn)差錯時,就會向發(fā)送方發(fā)送一個否認(rèn)幀NAK表示對方發(fā)送的數(shù)據(jù)錯誤。發(fā)送方會根據(jù)接收方發(fā)來的信息做出相應(yīng)的操作。 采用這樣的 有效的檢錯機制,數(shù)據(jù)鏈路層可以對上面的網(wǎng)絡(luò)層提供了可靠的傳輸?shù)姆?wù)。詳細(xì)設(shè)計停止等待協(xié)議的算法如下:為了對停止等待算法有一個完整而準(zhǔn)確的理解, 下面 給出此協(xié)議的算法。具有最簡單流量控制的數(shù)據(jù)鏈路層協(xié)議假定1:鏈路是理想的傳輸信道,所傳送的任何數(shù)據(jù)既不會出差錯也不會丟失。假定2 :不管
5、發(fā)方以多快的速率發(fā)送數(shù)據(jù),收方總是來得及收下,并及時上交 主機。這個假定就相當(dāng)于認(rèn)為:接收端向主機交付數(shù)據(jù)的速率永遠(yuǎn)不會低于發(fā)送端發(fā)送 數(shù)據(jù)的速率?,F(xiàn)在去掉上述的第二個假定。但是,仍然保留第一個假定,即主機A向主機B傳輸數(shù)據(jù)的信道仍然是無差錯的理想信道。 然而現(xiàn)在不能保證接收端向主機交付數(shù)據(jù) 的速率永遠(yuǎn)不低于發(fā)送端發(fā)送數(shù)據(jù)的速率。由收方控制發(fā)方的數(shù)據(jù)流,乃是計算機網(wǎng)絡(luò)中流量控制的一個基本方法。簡單解釋:收方每接受到發(fā)方一幀后,回復(fù)確認(rèn)幀,讓發(fā)方繼續(xù)發(fā)送下一幀,并且 收方將數(shù)據(jù)幀交給上層軟件識別,出現(xiàn)錯誤就將幀丟掉.在接收結(jié)點:等待。(2) 若收到由發(fā)送結(jié)點發(fā)過來的數(shù)據(jù)幀,則將其放入數(shù)據(jù)鏈路層的
6、接收緩存。(3) 將接收緩存中的數(shù)據(jù)幀上交主機。(4) 向發(fā)送結(jié)點發(fā)一信息,表示數(shù)據(jù)幀已經(jīng)上交給主機。轉(zhuǎn)到在發(fā)送結(jié)點:(1)從主機取一個數(shù)據(jù)幀。將數(shù)據(jù)幀送到數(shù)據(jù)鏈路層的發(fā)送緩存。將發(fā)送緩存中的數(shù)據(jù)幀發(fā)送出去。等待。若收到由接收結(jié)點發(fā)過來的信息(此信息的格式與內(nèi)容可由雙方事先商定好),則從主機取一個新的數(shù)據(jù)幀,然后轉(zhuǎn)到(2) 0因此,在設(shè)計編程模擬實現(xiàn)停止等待協(xié)議時,因具體考慮有關(guān)幀的一些知識。幀的結(jié)構(gòu):幀的類型幀的序號幀的確認(rèn)號數(shù)據(jù)信息(可變)校驗位幀的結(jié)構(gòu)幀的類型(frame_kind )分為數(shù)據(jù)幀(data_frame ),確認(rèn)幀(ack_frame )和 否認(rèn)幀(nak_frame)三種
7、。發(fā)送方向接收方發(fā)送數(shù)據(jù),是以幀為單位的,就稱為數(shù)據(jù)幀。它的數(shù)據(jù)信息是可 變的,但最佳的幀長為1500個字節(jié)。接收方接收數(shù)據(jù)后,會對收到的數(shù)據(jù)幀進(jìn)行差錯校驗,當(dāng)數(shù)據(jù)正確時,就會向發(fā) 送方發(fā)送一個確認(rèn)幀,以表示發(fā)送方發(fā)送的數(shù)據(jù)正確接收了, 反之,就會向發(fā)送方發(fā) 送一個否認(rèn)幀,并把這個出錯的數(shù)據(jù)幀丟棄。幀的序號(seq):由于采用的是單工通信,幀的結(jié)構(gòu)中用的控制域也很少,這個域會隨著幀類型的 不同而不同:對數(shù)據(jù)幀來說:序號(seq)表示的是發(fā)送端發(fā)送的幀的序號。它表示seq對確認(rèn)幀來說:序號(seq)表示的是接收方希望接收到的幀的序號,以前的各幀都已經(jīng)正確接收,希望收到序號為seq的幀。對否認(rèn)幀來
8、說:序號(seq)也是表示接收方希望收到的數(shù)據(jù)幀的序號,表示接 收方已經(jīng)收到序號為seq的幀,但是這個幀出現(xiàn)錯誤,希望發(fā)送方重新發(fā)送該數(shù)據(jù)幀。停止等待協(xié)議采用的是單工通信, 接收端向發(fā)送端發(fā)送的確認(rèn)幀和否認(rèn)幀中沒有 數(shù)據(jù)信息,它們的數(shù)據(jù)域為空。由于是單工通信,發(fā)送方只發(fā)送數(shù)據(jù),所以發(fā)送方幀 的“幀的確認(rèn)號”中并沒有包含任何的確認(rèn)信息。3、系統(tǒng)實施此次課程設(shè)計通過C+編程基本上模擬實現(xiàn)了數(shù)據(jù)鏈路層中的停止等待協(xié)議,但是程序中存在一定的不足,沒有能夠完全的體現(xiàn)停止等待協(xié)議的的工作原理。在此課 程設(shè)計中,數(shù)據(jù)的發(fā)送是隨機生成的。運行結(jié)果截圖如下所示:服務(wù)器端的運行截圖:叭''C Da
9、currients and Settings Admin istrator 面©建玄件夾',謝£口卅斗.目回Uaitinsr for client connecting* tips : Ctrl-c t:D quit f客戶端的運行截圖:結(jié)果如下所示:客戶端:武"CDocuments and 3ettingsAdministratorV 面料建文件Visual+*.pacFet racket packet £end<) paclte t paclfet pAclct packet senil< > racket98 lias b
10、een sent* 5? lias been sent! 160 lias been succcssed甲liaslias las liassentiIBl162163164been been been beensent? sentT senti sentsuGcessed165 tiAS beensent?Press an key to continue.服務(wù)器端:曲 T:Documents and Sctt1ngs Adniniratar4laitin9 fo護(hù) client connectinsrt bips r Cti*l+c to quitTAccepted client: 127.
11、0,0,1:373 recuO A success"?i*ecu<> b successdf i*e c u ( >c successd!Fight pftchutfrecw<> d rec> e recw(> f recw<> gsuccessdf successdT successdT succ essd?packet!recwO h £uccefisdfPpess arty kgy to continue4、總結(jié)與體會經(jīng)過這幾天的課程設(shè)計,通過查閱相關(guān)的資料和以前的學(xué)習(xí)以及和同學(xué)之間的交 流最終能夠較成功的實現(xiàn)該課
12、程設(shè)計。停止等待協(xié)議是數(shù)據(jù)鏈路層的一個重要協(xié)議, 也是計算機網(wǎng)絡(luò)中的一個重要協(xié)議。 在進(jìn)行課程設(shè)計時我遇到了不少的困難, 通過同 學(xué)的幫助和查閱相關(guān)的資料,最終解決了問題,模擬實現(xiàn)了停止等待協(xié)議。在設(shè)計過程中,剛開始時,沒有能夠?qū)崿F(xiàn)客戶端和服務(wù)器的連接, 最終導(dǎo)致客戶 端發(fā)送數(shù)據(jù)的失敗,從而導(dǎo)致服務(wù)器端的接收失敗。經(jīng)過查閱相關(guān)的資料,找到了錯 誤的所在,并實現(xiàn)了停止等待協(xié)議的功能。 此外,此次課程設(shè)計中的一個難點就是客 戶端發(fā)送數(shù)據(jù)采用的是隨機函數(shù)rand()產(chǎn)生隨機發(fā)送的數(shù)據(jù)。5、參考文獻(xiàn)謝希仁計算機網(wǎng)絡(luò)電子工業(yè)出版社v1.0可編輯可修改13附錄:源代碼發(fā)送端:()#in elude <
13、;> #in elude <> #in elude <> #p ragma eomme nt(lib,"") #define SERVER_PORT 7300 / 偵聽端口客戶端向服務(wù)器傳送的結(jié)構(gòu):struct BAG char p acket;void main (i nt argc, char *argv)WORD wVersio nRequested;WSADATA wsaData;int ret,i,ra,data=0;地址信息SOCKET sClie nt,sListe n;struct sockaddr_i n saServer;/
14、struct BAG bag;char *ptr = (char *)&bag;BOOL fSuccess = TRUE;Win Sock初始化:wVersio nRequested = MAKEWORD(2, 2);/ 希望使用的 Win Sock DLL 的版本ret = WSAStartu p( wVersio nRequested, &wsaData );if (ret != 0)prin tf("WSAStartu p() failed!n");return;確認(rèn) Win Sock DLL支持版本:if (LOBYTE != 2 | HIBYTE(
15、 ) != 2 )WSAClea nup();prin tf("I nvalid Win sock vers ion!n");return;創(chuàng)建socket,使用TCP協(xié)議:sClie nt = socket(AF_INET, SOCK_STREAM, IPP ROTO_TC P);sListen = socket(AF_INET, SOCK_STREAM, IPP ROTO_TC P);if(sClie nt = INVALID_SOCKET)WSAClea nup();prin tf("socket() failed!n");return;構(gòu)建服務(wù)器
16、地址信息:=AF_INET;/地址家族=htons(SERVER_PORT);/轉(zhuǎn)化為網(wǎng)絡(luò)字節(jié)序連接服務(wù)器:ret = conn ect(sClie nt, (struct sockaddr *)&saServer, sizeof(saServer);if (ret = SOCKET_ERROR)prin tf("c onn ect() successed!n");closesocket(sClie nt);/ 關(guān)閉套接字WSACIea nup();return;按照預(yù)定協(xié)議,客戶端將發(fā)送一個數(shù)字:for(i=97;iv=104;i+)ra = ran d()%11
17、;if(ra%5 = 1) data+=i;else data=i;=data;ret = sen d(sClie nt, (char *)&bag, sizeof(bag), 0);ret = recv(sListe n, ptr, sizeof(bag), 0);if!=i)prin tf("se nd()successed!n");con ti nue;else if=i)prin tf(" packet %d has bee n sen t!n",i+1);closesocket(sClie nt);WSAClea nup ();接受端(
18、):#in clude <> #in clude <>v1.0可編輯可修改#in elude <> #in elude <> #p ragma eomme nt(lib,"") #define SERVER_PORT 7300 / 偵聽端口客戶端向服務(wù)器傳送的結(jié)構(gòu):struct BAGchar p acket;void mai n()WORD wVersio nRequested;WSADATA wsaData;int ret, nLeft,le ngth;地址信息SOCKET sListe n, sServer; /偵聽套接
19、字,連接套接字struct sockaddr_i n saServer, saClie nt;/struct BAG bag;char *p tr,* pp;Win Sock初始化:wVersio nRequested = MAKEWORD(2, 2);/ 希望使用的 Win Sock DLL 的版本ret = WSAStartu p( wVersio nRequested, &wsaData);if (ret != 0)prin tf("WSAStartu p() failed!n");return;確認(rèn) Win Sock DLL支持版本:if (LOBYTE !
20、= 2 | HIBYTE( ) != 2 )#v1.0可編輯可修改WSACIea nup();prin tf("l nvalid Win sock versio n!n");return;創(chuàng)建Socket,使用TCP協(xié)議:sListen = socket(AF_INET, SOCK_STREAM, IPP ROTO_TC P);if(sListen = INVALID_SOCKET)WSAClea nup();prin tf("socket() failed!n");return;構(gòu)建本地地址信息:=AF_INET;/地址家族=htons(SERVER_
21、PORT);/轉(zhuǎn)化為網(wǎng)絡(luò)字節(jié)序=htonl(INADDR_ANY);/ 使用 INADDR_AN指示任意地址綁定:ret = bind(sListen,(struct sockaddr *)&saServer, sizeof(saServer);if (ret = SOCKET_ERROR)prin tf("bi nd() failed! code:%dn", WSAGetLastError();closesocket(sListe n);/關(guān)閉套接字WSAClea nup();return;偵聽連接請求:15v1.0可編輯可修改ret = liste n( sLi
22、ste n, 5);if (ret = SOCKET_ERROR)prin tf("liste n() failed! code:%dn", WSAGetLastError();closesocket(sListe n);/關(guān)閉套接字WSAClea nup();return;prin tf("Waiti ng for clie nt conn ecti ng!n");prin tf("ti ps : Ctrl+c to quit!n");阻塞等待接受客戶端連接:len gth = sizeof(saClie nt);sServer = acce pt(sListe n, (struct sockaddr *)&saClie nt, & le ngth);if(sServe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國蔬菜大棚管行業(yè)投資前景及策略咨詢研究報告
- 2025年濕膜暗裝式加濕器項目可行性研究報告
- 2025年雜物盒組件項目可行性研究報告
- 2025至2031年中國復(fù)合緊襯抗負(fù)壓管道行業(yè)投資前景及策略咨詢研究報告
- 延安2024年陜西延安市縣以下醫(yī)療衛(wèi)生機構(gòu)定向招聘大學(xué)生鄉(xiāng)村醫(yī)生補錄27人筆試歷年參考題庫附帶答案詳解
- 2025年冷軋鋼材料項目可行性研究報告
- 2025年不干膠條碼標(biāo)簽紙項目可行性研究報告
- 2025至2030年高光外墻水性漆項目投資價值分析報告
- 2025至2030年中國銅包鋁鎂線數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國酒店財務(wù)管理系統(tǒng)數(shù)據(jù)監(jiān)測研究報告
- 護(hù)理部用藥安全質(zhì)量評價標(biāo)準(zhǔn)
- 最新小學(xué)二年級口算及豎式計算練習(xí)題
- 校園信息化設(shè)備管理檢查表
- 新版抗拔樁裂縫及強度驗算計算表格(自動版)
- API SPEC 5DP-2020鉆桿規(guī)范
- 創(chuàng)新思維課件(完整版)
- DB34∕T 4161-2022 全過程工程咨詢服務(wù)管理規(guī)程
- 注塑成型工藝參數(shù)知識講解
- 安全生產(chǎn)專業(yè)化管理
- 初中生成長檔案模板
- GB_T 17468-2019 電力變壓器選用導(dǎo)則(高清正版)
評論
0/150
提交評論