下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、完美 WORD 格式專業(yè)整理知識分享長沙理工大學(xué)網(wǎng)絡(luò)協(xié)議編程課程設(shè)計報告梁碧瑩院計算機與通信工程專級 網(wǎng)絡(luò) 08-02學(xué)業(yè) 網(wǎng)絡(luò)工程號 200858080205完美 WORD 格式專業(yè)整理知識分享學(xué)生姓名梁碧瑩指導(dǎo)教師王靜_完美 WORD 格式專業(yè)整理知識分享完美 WORD 格式專業(yè)整理知識分享課程成績 _完成日期 2011 年 7 月2旦課程設(shè)計任務(wù)書課程名稱網(wǎng)絡(luò)協(xié)議編程課程設(shè)計時間20102011學(xué)年第二學(xué)期1819周學(xué)生姓名梁碧瑩指導(dǎo)老師土靜題目滑動窗口協(xié)議模擬程序的設(shè)計與實現(xiàn)主要內(nèi)容:(1) 了解網(wǎng)絡(luò)協(xié)議編程的基本知識;(2) 了解滑動窗口協(xié)議的工作機制;(3) 使用編程語言編寫一個滑
2、動窗口協(xié)議的模擬程序,按要求實現(xiàn)程序。要求:(1)按要求編寫課程設(shè)計報告書,能正確闡述設(shè)計結(jié)果。(2) 通過課程設(shè)計培養(yǎng)學(xué)生嚴謹?shù)目茖W(xué)態(tài)度,認真的工作作風和團隊 協(xié)作精神。(3)學(xué)會文獻檢索的基本方法和綜合運用文獻能力。(4)在老師的指導(dǎo)下,要求每個學(xué)生獨立完成課程設(shè)計的全部內(nèi)容計算機與通信工程學(xué)院網(wǎng)絡(luò)工程專業(yè)完美 WORD 格式專業(yè)整理知識分享應(yīng)當提交的文件:(1) 課程設(shè)計報告。(2) 課程設(shè)計附件(源程序、各類圖紙、實驗數(shù)據(jù)、運行截圖等)課程設(shè)計成績評定學(xué) 院計算機通信工程專 業(yè)網(wǎng)絡(luò)工程班 級 網(wǎng)絡(luò) 08-02 班 學(xué) 號 200858080205學(xué)生姓名梁碧瑩_指導(dǎo)教師王靜_課程成績_
3、完成日期 2011 年 7 月 2 日指導(dǎo)教師對學(xué)生在課程設(shè)計中的評價評分項目優(yōu)良中及格不及格課程設(shè)計中的創(chuàng)造性成果學(xué)生掌握課程內(nèi)容的程度課程設(shè)計完成情況課程設(shè)計動手能力文字表達學(xué)習(xí)態(tài)度規(guī)范要求課程設(shè)計論文的質(zhì)量完美 WORD 格式專業(yè)整理知識分享指導(dǎo)教師對課程設(shè)計的評定意見綜合成績指導(dǎo)教師簽字年 月曰滑動窗口協(xié)議模擬程序的設(shè)計與實現(xiàn)學(xué)生:梁碧瑩指導(dǎo)老師:王靜摘要:本文主要介紹如何根據(jù)滑動窗口協(xié)議的原理,在Visual C+的平臺上設(shè) 計一個滑動窗口協(xié)議模擬程序,并最終使該程序得以實現(xiàn)。本次程序設(shè)計分兩部 分:第一部分是發(fā)送方,第二部分是接收方。通過發(fā)送方和接收方之間的數(shù)據(jù)幀傳輸模擬,學(xué)習(xí)滑動
4、窗口協(xié)議控制流量的原理和方法,以及滑動窗口協(xié)議的工作機制。完美 WORD 格式專業(yè)整理知識分享關(guān)鍵詞:滑動窗口協(xié)議 流量控制工作機制模擬程序Desig n and Impleme ntati on of Slid ingWin dow Protocol ProceduresStude nt: Lia ng Biyi ngIn structor: Wang JingAbstract: This paper describes the prin ciple of Slidi ng Window Protocol and how todesign and implement a procedure
5、about the Sliding Win dow Protocol. The programdesig n in two parts, one is thesender, the other is the receiver. After all, studying the principle and method of howthe Sliding Window Protocol control the flow, and how the Sliding Window Protocolworks through the transmission of data betwee n the se
6、n der and the receiver.Keywords:Slidi ng wi ndowprotocol Flow con trol Worki ngmecha nismSimulatio n program目錄1引言.11.1滑動窗口協(xié)議概述 .11.2本次設(shè)計任務(wù).22滑動窗口協(xié)議介紹 .22.1滑動窗口協(xié)議工作原理 .2完美 WORD 格式專業(yè)整理知識分享2.2滑動窗口算法.33設(shè)計方案及分析.63.1窗口機制總體設(shè)計及分析 .63.2協(xié)議選擇及分析.73.3發(fā)送方與接收方設(shè)計流程.84程序測試.185總結(jié).215.1程序改進與完善 .215.2設(shè)計總結(jié).22參考文獻.22附錄.
7、23完美 WORD 格式專業(yè)整理知識分享1 引言隨著網(wǎng)絡(luò)的不斷壯大,用戶數(shù)量、信息量的需求不斷增加,網(wǎng)絡(luò)負荷越來越 重。此時,我們迫切需要一種機制來控制網(wǎng)絡(luò)的流量,減少網(wǎng)絡(luò)擁堵的幾率,提 高傳輸?shù)男?。因此,一種名為滑動窗口的協(xié)議應(yīng)運而生?;瑒哟翱趨f(xié)議,是TCP使用的一種流量控制方法。該協(xié)議允許發(fā)送方在停 止并等待確認前可以連續(xù)發(fā)送多個分組。由于發(fā)送方不必每發(fā)一個分組就停下來 等待確認,因此該協(xié)議可以加速數(shù)據(jù)的傳輸。 經(jīng)測試證明,該協(xié)議還能有效地解 決TCP的高協(xié)議處理開銷和UDP的低可靠性之間的矛盾,1.1滑動窗口協(xié)議概述滑動窗口協(xié)議,是TCP使用的一種流量控制方法?;瑒哟翱趨f(xié)議也稱為Go-
8、Back-N(GBN)協(xié)議。在該協(xié)議中,允許發(fā)送方傳輸多個分組(當有多個分 組時)而不需等待確認,但它也受限于在流水賬中未確認的分組數(shù)不能超過最大 允許數(shù)N。只有在接收窗口向前滑動時(與此同時也發(fā)送了確認),發(fā)送窗口才 有可能向前滑動。收發(fā)兩端的窗口按照以上規(guī)律不斷地向前滑動,因此這種協(xié)議又稱為滑動窗口協(xié)議。當發(fā)送窗口和接收窗口的大小都等于1時,就是停止等待協(xié)議。當發(fā)送窗口大于1,接收窗口等于1時,就是回退N步協(xié)議。當發(fā)送窗 口和接收窗口的大小均大于1時,就是選擇重發(fā)協(xié)議。協(xié)議中規(guī)定,對于窗口內(nèi) 未經(jīng)確認的分組需要重傳。這種分組的數(shù)量最多可以等于發(fā)送窗口的大小,即滑動窗口的大小n減去1(因為發(fā)
9、送窗口不可能大于(n-1),起碼接收窗口要大 于等于1) 。完美 WORD 格式專業(yè)整理知識分享1.2本次設(shè)計任務(wù)本次的設(shè)計任務(wù)是根據(jù)滑動窗口協(xié)議的工作原理,在Visual C+ 6.0的平臺上用C+語言編寫一個基于TCP滑動窗口協(xié)議的模擬程序。要求該程序能夠?qū)崿F(xiàn)滑動窗口協(xié)議的發(fā)送和接收數(shù)據(jù)幀功能,在此功能上體現(xiàn)滑動窗口協(xié)議的運作,女口:發(fā)送幀被接收與否的判斷,幀超時重發(fā),幀緩存等。2 滑動窗口協(xié)議介紹2.1 滑動窗口協(xié)議工作原理TCP協(xié)議在工作時,如果發(fā)送端的TCP協(xié)議軟件每傳輸一個數(shù)據(jù)分組后, 必須等待接收端的確認才能夠發(fā)送下一個分組,由于網(wǎng)絡(luò)傳輸?shù)臅r延,將有大量時間被用于等待確認,導(dǎo)致傳
10、輸效率低下。為此TCP在進行數(shù)據(jù)傳輸時使用了 滑動窗口機制。TCP滑動窗口用來暫存兩臺計算機間要傳送的數(shù)據(jù)分組。每臺運行TCP協(xié)議的計算機有兩個滑動窗口: 一個用于數(shù)據(jù)發(fā)送,另一個用于數(shù)據(jù)接收。發(fā)送端 待發(fā)數(shù)據(jù)分組在緩沖區(qū)排隊等待送出。 被滑動窗口框入的分組,是可以在未收到 接收確認的情況下最多送出的部分?;瑒哟翱谧蠖藰酥綳的分組,是已經(jīng)被接收端確認收到的分組。隨著新的確認到來,窗口不斷向右滑動。TCP協(xié)議軟件依靠滑動窗口機制解決傳輸效率和流量控制問題。 它可以在收 到確認信息之前發(fā)送多個數(shù)據(jù)分組。這種機制使得網(wǎng)絡(luò)通信處于忙碌狀態(tài),提高 了整個網(wǎng)絡(luò)的吞吐率,它還解決了端到端的通信流量控制問題,
11、 允許接收端在擁 有容納足夠數(shù)據(jù)的緩沖之前對傳輸進行限制。 在實際運行中,TCP滑動窗口的大完美 WORD 格式專業(yè)整理知識分享時間小是可以隨時調(diào)整的。收發(fā)端TCP協(xié)議軟件在進行分組確認通信時,還交換滑 動窗口控制信息,使得雙方滑動窗口大小可以根據(jù)需要動態(tài)變化,達到在提高數(shù)據(jù)傳輸效率的同時,防止擁塞的發(fā)生。稱窗口左邊沿向右邊沿靠近為窗口合攏,這種現(xiàn)象發(fā)生在數(shù)據(jù)被發(fā)送和確認時。當窗口右邊沿向右移動時將允許發(fā)送更多的數(shù)據(jù),稱之為窗口張開。這種現(xiàn)象發(fā)生在另一端的接收進程讀取已經(jīng)確認的數(shù)據(jù)并釋放了TCP的接收緩存時。當右邊沿向左移動時,稱為窗口收縮。Host Requireme nts RFC強烈建議
12、 不要使用這種方式。但TCP必須能夠在某一端產(chǎn)生這種情況時進行處理。如果左邊沿到達右邊沿,則稱其為一個零窗口。2.2滑動窗口算法滑動窗口算法工作過程如下:首先,發(fā)送方為每1幀賦一個序號(sequenee number),記作SeqNum?,F(xiàn)在,我們忽略SeqNum是由有限大小的頭部字段實現(xiàn)的事實,而假設(shè)它能無 限增大。發(fā)送方維護3個變量:發(fā)送窗口大小(send window size),記作SWS, 給出發(fā)送方能夠發(fā)送但未確認的幀數(shù)的上界;LAR表示最近收到的確認幀(last ack no wledgeme ntreceived)的序號;LFS表示最近發(fā)送的幀(last framesent)的
13、序號,發(fā)送方還維持如下的不變式:LAR-LFS LAF,那么幀不在接收窗口內(nèi),于是被丟棄;如果LFRvSeqNumWLAF,那么幀在接收窗口內(nèi),于是被接收?,F(xiàn)在接收方需要決定是否發(fā)送一個ACK。設(shè)SeqNum To ACK表示未被確認幀的最大序號,則序 號小于或等于SeqNum To ACK的幀都已收到。即使已經(jīng)收到更高序號的分組, 接收方仍確認SeqNum To ACK的接收。這種確認被稱為是累積的(cumulative)然后它設(shè)置LFA = SeqNum To ACK,并調(diào)整LFA = LFR + RWS圖 2-3 接收方的滑動窗口完美 WORD 格式專業(yè)整理知識分享窗口協(xié)議算法有三個功能
14、:在不可靠鏈路上可靠地傳輸幀保持幀的傳輸順序支持流量控制完美 WORD 格式專業(yè)整理知識分享3 設(shè)計方案及分析3.1 窗口機制總體設(shè)計及分析設(shè)計分析:(1)初始態(tài),發(fā)送方?jīng)]有幀發(fā)出,發(fā)送窗口前后沿相重合。接收方0號窗口打 開,等待接收0號幀;(2)發(fā)送方打開0號窗口,表示已發(fā)出0幀但尚未確認返回信息。此時接收 窗口狀態(tài)不變;(3)發(fā)送方打開0、1號窗口,表示0、1號幀均在等待確認之列。至此,發(fā) 送方打開的窗口數(shù)已達規(guī)定限度,在未收到新的確認返回幀之前,發(fā)送方 將暫停發(fā)送新的數(shù)據(jù)幀。接收窗口此時狀態(tài)仍未變;(4)接收方已收到0號幀,0號窗口關(guān)閉,1號窗口打開,表示準備接收1號 幀。此時發(fā)送窗口狀
15、態(tài)不變;圖 3-1 發(fā)送方和接收方狀態(tài)示意圖 接收確 認1號抽完美 WORD 格式專業(yè)整理知識分享(5)發(fā)送方收到接收方發(fā)來的0號幀確認返回信息,關(guān)閉0號窗口,表示從 重發(fā)表中刪除0號幀。此時接收窗口狀態(tài)仍不變;(6)發(fā)送方繼續(xù)發(fā)送2號幀,2號窗口打開,表示2號幀也納入待確認之列。至此,發(fā)送方打開的窗口又已達規(guī)定限度,在未收到新的確認返回幀之前, 發(fā)送方將暫停發(fā)送新的數(shù)據(jù)幀,此時接收窗口狀態(tài)仍不變;(7)接收方已收到1號幀,1號窗口關(guān)閉,2號窗口打開,表示準備接收2號 幀。此時發(fā)送窗口狀態(tài)不變;(8)發(fā)送方收到接收方發(fā)來的1號幀收畢的確認信息,關(guān)閉1號窗口,表示從重發(fā)表中刪除1號幀。此時接收窗
16、口狀態(tài)仍不變。3.2 協(xié)議選擇及分析在設(shè)計過程中,我主要運用了選擇重傳協(xié)議,該協(xié)議能很好地彌補了1比特 滑動窗口協(xié)議和后退n協(xié)議的缺點,是比較完善的滑動窗口協(xié)議。在選擇重傳協(xié)議中,當接收方發(fā)現(xiàn)某幀出錯后,其后繼續(xù)送來的正確的幀雖 然不能立即遞交給接收方的高層,但接收方仍可收下來,存放在一個緩沖區(qū)中, 同時要求發(fā)送方重新傳送出錯的那一幀。一旦收到重新傳來的幀后,就可以原已 存于緩沖區(qū)中的其余幀一并按正確的順序遞交高層。這種方法稱為選擇重發(fā)(SELECTICE REPEAT,其工作過程如圖所示。顯然,選擇重發(fā)減少了浪費,但 要求接收方有足夠大的緩沖區(qū)空間。完美 WORD 格式專業(yè)整理知識分享3.3
17、 發(fā)送方與接收方設(shè)計流程由于我設(shè)計的程序為模擬程序,因此我把發(fā)送方和接收方集合在同一版面上。它們各自的功能同時在同一版面上實現(xiàn)及顯示。在程序?qū)崿F(xiàn)后,我們可以通過在同一版面根據(jù)提示輸入相關(guān)信息,即可得到模擬過程。雖然只有一個版面,但是發(fā)送方和接收方的功能是清晰的、 相對齊全的。發(fā) 送方和接收方的設(shè)計流程如下:沁幀01234n6734 5K9101() 11 12 13 140接收輔圖 3-2選擇重傳協(xié)議原理圖A詒下遞交將?&他補朋空廿層完美 WORD 格式專業(yè)整理知識分享戎送幀號印1一發(fā)送幀號圖 3-3 發(fā)送方與接收方設(shè)計流程根據(jù)流程圖的實現(xiàn)步驟,我編寫了以下的代碼(1)發(fā)送方程序:本程
18、序設(shè)有四個變量:一是窗口大小變量,二是第一幀序列號變量,三是最近發(fā)送的幀變量,最后一個是最近收到的確認幀變量swpstate1.head=NULL;/變量初始值為空swpstate1.se ndq=se ndq_rear=(structse ndq_slot*)malloc(sizeof(structsen dq_slot);if(!swpstate1.sendq) exit(1);發(fā)送方發(fā)送幀號0-期待幀號從主機取報文到這恢量報機八叫發(fā)寇序號不対期待幀號創(chuàng)一期待帔號完美 WORD 格式專業(yè)整理知識分享sen dq_rear- n ext=NULL;完美 WORD 格式專業(yè)整理知識分享prin
19、tf(請輸入窗口大?。?;seanf(%ld,&swpstate1.sws); /輸入窗 口大小swpstate1.rws=swpstate1.sws; /把窗 口大小的值賦給變量if (swpstate1.sws0)printf(請輸入第一幀的序列號:);scanf(%ld,&swpstate1.hdr.seqnum);/輸入第一幀序列號swpstate1.nfe=swpstate1.hdr.seqnum;/把第一幀的值放進緩沖池內(nèi)sen dp=(struct sen dq_slot*) malloc (size of(struct sen dq_slot);if(!send
20、p) exit(1);sen dp-msg=swpstate1.hdr.se qnum;sen dp-timeout=1;sen dp-n ext=NULL;sen dq_rear- n ext=se ndp;sen dq_rear=se ndp;-swpstate1.sws;swpstate1fs=swpstate1.hdr.seqnum;/最近發(fā)送的幀取值swpstate1ar=swpstate1.hdr.seqnum;/最近收至U的確認幀取值do完美 WORD 格式專業(yè)整理知識分享while(swpstate1.sws0) /當窗口大小大于0時,執(zhí)行以下的循環(huán)sen dp=(struct
21、 sen dq_slot*)malloc(sizeof(struct sen dq_slot);if(!sendp) exit(1);sendp-msg=swpstate1.lfs+1;/如果輸入的幀序號大于之前幀序號,那么窗口向前滑動sendp-timeout=1;/時延為1sen dp-n ext=NULL;sen dq_rear- n ext=se ndp;sen dq_rear=se ndp;-swpstate1.sws;+swpstate1 .lfs;swpstate1.hdr.acknum=0;/ACK清空swpstate1.hdr.flags=O;/存儲緩沖池清空printf(最
22、近收到的ACK的幀序號:%ldn,swpstate1.lar);/輸出最近收到的ACK幀序號printf(”最近發(fā)送的幀序號(發(fā)送新幀后):%ldn,swpstate1.lfs);/輸出最近發(fā)送幀序號完美 WORD 格式專業(yè)整理知識分享(2)接收方程序:完美 WORD 格式專業(yè)整理知識分享圖 3-4 數(shù)據(jù)包接收過程接收方的接收原則從總體上看是先判斷輸入的數(shù)據(jù)幀是否在接收范圍之內(nèi), 若是,則繼續(xù)判斷是否符合其他接收條件;若不是,則馬上丟棄該數(shù)據(jù)幀, 不再進行其他條件的判斷。struct sendq_slot *sendq_rear,*sendp,*p3,*p4;/設(shè)定變量struct recvq
23、_slot *recvp,*recvq_rear,*p1,*p2;if(swpstate1.hdr.flags=O)/上次輸入的數(shù)據(jù)幀被放置在緩存區(qū),輸入?yún)^(qū)被清空完美 WORD 格式專業(yè)整理知識分享do /如果繼續(xù)接收數(shù)據(jù)幀則實施下面循環(huán)printf(請輸入收到的數(shù)據(jù)幀號:);scan f(%ld,&a);if(a=swpstate1.nfe&an ext=NULL;swpstate1.head=recvp;elseif(swpstate1.head!=NULL)recvp=(struct recvq_slot*)malloc(sizeof(struct recvq_slot)
24、;recvp-n ext=NULL;recvq_rear- n ext=recvp;recvq_rear=recvp;else完美 WORD 格式專業(yè)整理知識分享printf(所輸數(shù)據(jù)不在接收窗口內(nèi)!);break; /跳出該循環(huán)若輸入數(shù)據(jù)幀在接收范圍內(nèi)則繼續(xù)判斷并進行以下循環(huán)。recvp-msg=a;if(recvp-msg=swpstate1.nfe)/是否放入緩存判斷recvp-received=1;elserecvp-received=0;-swpstate1.rws;if(recvp-received=1)/數(shù)據(jù)幀被接收,則進行下面語句 a=a-1;doa=a+1;if(swpsta
25、te1.head=NULL)break;p1=swpstate1.head;flag=0;while(a!=p1-msg)&( p1- next!=NULL)完美 WORD 格式專業(yè)整理知識分享p2=p1;p1=p1- n ext;if(a=p1-msg)flag=1;if(p1=swpstate1.head)swpstate1.head=swpstate1.head-n ext; else p2-next=p1- n ext;swpstate1. nfe=a+1;swpstate1.hdr.ack num=a+1; swpstate1.hdr.flags=1;while(flag=1
26、);printf(ACK號(期待的下一幀的序號):ldn,swpstate1.nfe); printf(沒按序接受的序號:n);p1=swpstate1.head;while(p1!=NULL)prin tf(%ldt,p1-msg);p1=p1- n ext;完美 WORD 格式專業(yè)整理知識分享當接收完一個數(shù)據(jù)幀時,我們可以選擇終止下面的繼續(xù)接收,也可以選擇繼 續(xù)接收。如果繼續(xù)接收,那么程序跳到判斷循環(huán),繼續(xù)判斷是否接收下一個 數(shù)據(jù)幀,原理與上面相當。while(swpstate1.rws0)&(b=1);if(swpstate1.hdr.flags=1)p3=swpstate1.s
27、e ndq-n ext;flag=0;while(swpstate1.hdr.ack num)!=p3-msg&p3- next!=NULL)p4=p3;p3=p3- next;if(swpstate1.hdr.ack num=p3-msg)flag=1;if(p3-msg=swpstate1.se ndq-n ext-msg)swpstate1.se ndq-n ext=p3;else swpstate1.se ndq-n ext=p3;swpstate1.sws=swpstate1.sws+(swpstate1.se ndq-n ext-msg-swpstate1 .lar);sw
28、pstatel .1 ar=swpstate1.se ndq-n ext-msg;swpstate1.hdr.se qnum=swpstate1.hdr.ack num;printf(最近收到的ACK的幀序號(收到ACK后):%ldn,swpstate1.lar);prin tf(最近發(fā)送的幀序號(此時還未發(fā)送新的數(shù)完美 WORD 格式專業(yè)整理知識分享據(jù)):%ldn,swpstate1.lfs);4 程序測試F面我以窗口大小為11,第一幀序列號為3,做程序的測試。圖 4-1 程序測試整體圖完美 WORD 格式專業(yè)整理知識分享(1)整體窗口展示,命令行界面(2)輸入窗口大小及第一幀序列號圖 4-
29、3 信息設(shè)置輸入(3)當輸入的接收幀并不是ACK期待的幀,那么根據(jù)滑動窗口協(xié)議該幀不被接收,且把該幀存放在緩沖區(qū)。圖 4-4 幀不被接收的情況(4)當前面輸入的都不是系統(tǒng)所期待的幀,那么這些幀會一直被存放在緩沖區(qū)直到輸入下一個輸入的幀的序號比前面輸入的幀的序號大,且是系統(tǒng)所期 待的幀時,之前和當前輸入的幀會一并被接收,緩沖區(qū)清空。繼續(xù)接收命 令,進行新的幀的檢測及接收。13圖 4-2 整體窗口展示磺AGAG聘口一的的到后貞希.完美 WORD 格式專業(yè)整理知識分享(5)若輸入的幀超過了窗口大小,那么系統(tǒng)會顯示該幀不在接收范圍內(nèi),并拒7還:91賤勰盼號收到RCK圖 4-5 幀被接收的情況數(shù)接序是的
30、在幀?杲的嗎曙送行入數(shù)務(wù)完美 WORD 格式專業(yè)整理知識分享圖 4-6 幀超出窗口大小范圍完美 WORD 格式專業(yè)整理知識分享5 總結(jié)5.1 程序改進與完善該滑動窗口協(xié)議模擬程序還有進一步完善的余地,例如可以對以下一些地方進行改進:(1)改模擬程序通過命令行來實行,缺少形象直觀的界面,希望日后可以設(shè)計比較簡單明了的界面來展示程序的主要模擬功能。(2)現(xiàn)在我們模擬的只是一些用序號代名的簡單的幀,建議可以改善程序,使 該完美 WORD 格式專業(yè)整理知識分享系統(tǒng)可以模擬更接近真實的數(shù)據(jù)幀。這樣可以聯(lián)系實際更直觀地去驗證滑動窗口協(xié)議。(3)整體來說,滑動窗口在實驗中是固定的,這樣便于處理幀號和ack的
31、確認以及存儲。但建議可以在日后改進使其變成動態(tài)的。5.2設(shè)計總結(jié)以上為我所設(shè)計的滑動窗口模擬程序, 它經(jīng)過多次修改和整理,已是一個比 較不錯的設(shè)計,可以基本實現(xiàn)所需功能,但因為水平有限,此程序中也存在一定 的問題,這需要以后更進一步的改進。參考文獻1謝希仁計算機網(wǎng)絡(luò)M. 4版北京:電子工業(yè)出版社,2003.2李仁發(fā),何彥基于虛擬實驗方法的滑動窗口協(xié)議分析J.系統(tǒng)仿真學(xué)報完美 WORD 格式專業(yè)整理知識分享2002, 8 (14) : 1026 - 1063.3李建中,張冬冬.滑動窗口規(guī)模的動態(tài)調(diào)整算法J.軟件學(xué)報,2004, 12 (15):1800 - 1814.完美 WORD 格式專業(yè)整理
32、知識分享4王栩,李建中,王偉平.基于滑動窗口的數(shù)據(jù)流壓縮技術(shù)及連續(xù)查詢處理方法J .計算機研究與發(fā)展,2004, 10 (41) : 1639- 1644.特南鮑姆.計算機網(wǎng)絡(luò)(第四版).清華出版社附錄#in clude#in clude#in clude main ()struct swphdrseqnum;完美 WORD 格式專業(yè)整理知識分享un sig ned long完美 WORD 格式專業(yè)整理知識分享un sig ned longack num;un sig ned short flags;/*flag=0 幀*/;struct sen dq_slotun sig ned short
33、 timeout;/*1un sig ned longmsg;struct sen dq_slot *n ext;struct recvq_slotun sig ned short received;/un sig ned longmsg;struct recvq_slot *n ext;struct swpstateun sig ned longlar;un sig ned longlfs;un sig ned long sws;struct swphdrhdr;un sig ned long rws;struct sen dq_slot *se ndq; unsig ned longnfe
34、;struct recvq_slot *head;swpstate1;un sig ned long a;int flag,b;表示這是一個數(shù)據(jù)幀,flag=1 表示這是一個 ACK時表示計時啟動,0 時表示已收到確認*/表示順序接收,0 表示錯序接受*/完美 WORD 格式專業(yè)整理知識分享/*發(fā)送*/struct sen dq_slot *se ndq_rear,*se ndp,*p3,*p4;struct recvq_slot *recvp,*recvq_rear,*p1,*p2;swpstate1.head=NULL;swpstate1.se ndq=se ndq_rear=(struc
35、tse ndq_slot*)malloc(sizeof(structse ndq_slot);if(!swpstate1.se ndq) exit(1);sen dq_rear- n ext=NULL;printf(請輸入窗口大?。?;sca nf(%ld, &swpstate1.sws);swpstate1.rws=swpstate1.sws;if (swpstate1.sws0)printf(請輸入第一幀的序列號:);sca nf(%ld, &swpstate1.hdr.se qnu m);swpstatel. nfe=swpstate1.hdr.se qnum;sen d
36、p=(struct sen dq_slot*)malloc(sizeof(struct sen dq_slot);if(!sendp) exit(1);sen dp-msg=swpstate1.hdr.se qnum;sen dp-timeout=1;sen dp-n ext=NULL;sen dq_rear- n ext=se ndp;sen dq_rear=se ndp;-swpstate1.sws;swpstate1 .l fs=swpstate1.hdr.se qnum;swpstate1 .l ar=swpstate1.hdr.se qnum;dowhile(swpstate1.sw
37、s0)sen dp=(struct sen dq_slot*)malloc(sizeof(struct sen dq_slot); if(!sendp) exit(1);sen dp-msg=swpstate1 .l fs+1;sen dp-timeout=1;sen dp-n ext=NULL;sen dq_rear- n ext=se ndp;sen dq_rear=se ndp;-swpstate1.sws;+swpstate1.lfs;swpstate1.hdr.ack num=0;swpstate1.hdr.flags=0;printf(最近收到的 ACK 的幀序號:ldn,swps
38、tate1.lar); printf(最近發(fā)送的幀序號(發(fā)送新幀后):%ldn,swpstate1.lfs);完美 WORD 格式專業(yè)整理知識分享/*接收*/if(swpstate1.hdr.flags=0)doprintf(請輸入收到的數(shù)據(jù)幀號:”);sca nf(%ld,&a);if(a=swpstate1. nfe&an ext=NULL;swpstate1.head=recvp;elseif(swpstate1.head!=NULL)recvp=(struct recvq_slot*)malloc(sizeof(struct recvq_slot); recvp-next=NULL;recvq_rear- n ext=recvp;recvq_rear=recvp;elseprintf(所輸數(shù)據(jù)不在接收窗口內(nèi)!);break;rec
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 口腔設(shè)備組裝調(diào)試工安全宣貫知識考核試卷含答案
- 制球工安全技能測試水平考核試卷含答案
- 2025四川達州萬源市招聘社區(qū)專職工作者16人備考題庫附答案
- 2025年《職業(yè)能力傾向測驗》常識判斷考核試題(各地真題)
- 涂料生產(chǎn)工操作能力考核試卷含答案
- 珍珠巖加工工測試驗證考核試卷含答案
- 氣體分離工崗前班組安全考核試卷含答案
- 管廊運維員QC管理模擬考核試卷含答案
- 墨錠制作工班組建設(shè)競賽考核試卷含答案
- 2024年湖北理工學(xué)院輔導(dǎo)員考試筆試真題匯編附答案
- 深度解析(2026)《MZT 238-2025 監(jiān)測和定位輔助器具 毫米波雷達監(jiān)測報警器》
- 辦公用品、耗材采購服務(wù)投標方案
- 遼寧省大連市2026屆高三上學(xué)期1月雙基模擬考試語文試題(含答案)
- 2025年腫瘤科年度工作總結(jié)匯報
- 浙江省寧波市2025-2026學(xué)年八年級上數(shù)學(xué)期末自編模擬卷
- (正式版)DB51∕T 3336-2025 《零散天然氣橇裝回收安全規(guī)范》
- 初三數(shù)學(xué)備課組年終工作總結(jié)
- 2025年高職工業(yè)機器人(機器人編程調(diào)試)試題及答案
- 湖南名校聯(lián)考聯(lián)合體2026屆高三年級1月聯(lián)考物理試卷+答案
- GB/T 19466.3-2025塑料差示掃描量熱(DSC)法第3部分:熔融和結(jié)晶溫度及熱焓的測定
- 2025版《煤礦安全規(guī)程》學(xué)習(xí)與解讀課件(監(jiān)控與通信)
評論
0/150
提交評論