版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)書學(xué)院計(jì)算機(jī)與信息工程學(xué)院專業(yè)網(wǎng)絡(luò)工程課程名稱計(jì)算機(jī)網(wǎng)絡(luò)題目滑動(dòng)窗口協(xié)議仿真完成期限自2015年6月23日至2015年6月29日共1周一、項(xiàng)目的目的掌握滑動(dòng)窗口協(xié)議的工作原理,并能夠用所學(xué)計(jì)算機(jī)高級 語言進(jìn)行編程模擬其運(yùn)行過程;培養(yǎng)學(xué)生的動(dòng)手實(shí)踐和思考能 力。二,項(xiàng)目任務(wù)的主要容和要求(1) 本次設(shè)計(jì)任務(wù)是根據(jù)滑動(dòng)窗口協(xié)議的工作原理,在Visual C+ 6.0的平臺(tái)上用C+語言編寫一個(gè)基本TCP滑動(dòng)窗口協(xié)議的 模擬程序。(2) 要求該程序能夠?qū)崿F(xiàn)滑動(dòng)窗口協(xié)議的發(fā)送和接收數(shù)據(jù)幀 功能,在此功能上體現(xiàn)滑動(dòng)窗口協(xié)議的運(yùn)作。容及任務(wù)(3) 程序按照滑動(dòng)窗口協(xié)議實(shí)現(xiàn)端對端的數(shù)據(jù)傳送。
2、包括協(xié) 議的各種策略,如包丟失、停等應(yīng)答、超時(shí)等都應(yīng)有所仿真實(shí)現(xiàn);(4) 顯示數(shù)據(jù)傳送過程中的各項(xiàng)具體數(shù)據(jù)。雙方幀的個(gè)數(shù)變 化,幀序號(hào),發(fā)送和接受速度,暫停或重傳提示等;三、項(xiàng)目設(shè)計(jì)(研究)思路(1) 查閱相關(guān)資料,理解滑動(dòng)窗口協(xié)議的工作原理;(2) 設(shè)計(jì)滑動(dòng)窗口協(xié)議實(shí)現(xiàn)端對端數(shù)據(jù)傳送的功能流程圖;(3) 編寫代碼實(shí)現(xiàn)滑動(dòng)窗口協(xié)議工作的模擬程序,包括包丟失、停等應(yīng)答、超時(shí)等;(4) 測試程序功能的實(shí)現(xiàn)情況。四、具體成果形式和要求(1) 滑動(dòng)窗口協(xié)議實(shí)現(xiàn)端對端數(shù)據(jù)傳送的模擬程序。(2) 按照要求撰寫課程設(shè)計(jì)報(bào)告并準(zhǔn)備答辯。起止日期工作容2015.6.23-2015了解網(wǎng)絡(luò)協(xié)議編程的基本知識(shí);進(jìn).
3、6. 24度2015.6. 25-2015了解滑動(dòng)窗口協(xié)議的工作機(jī)制;安.6. 26排2015. 6. 27-2015使用編程語言編寫一個(gè)滑動(dòng)窗口協(xié)議的模擬.6. 28程序,按要現(xiàn)程序。2015. 6. 29最后匯總,調(diào)試,答辯1希仁.計(jì)算機(jī)網(wǎng)絡(luò)M. 4版.:電子工業(yè),2003.2仁發(fā).何彥.基于虛擬實(shí)驗(yàn)方法的滑動(dòng)窗口協(xié)議分析J.主系統(tǒng)仿真學(xué)報(bào).2002. 8 (14) ; 1026 - 1063.要3建中,冬冬.滑動(dòng)窗口規(guī)模的動(dòng)態(tài)調(diào)整算法J.軟件學(xué)報(bào).參2004. 12 (15):1800 - 1814.考4王栩,建中,王偉平.基于滑動(dòng)窗口的數(shù)據(jù)流壓縮技術(shù)及連資續(xù)查詢處理方法J .計(jì)算機(jī)研究
4、與發(fā)展.2004. 10 (41):料1639- 1644.5特南鮑姆.計(jì)算機(jī)網(wǎng)絡(luò)(第四版).清華指導(dǎo)教師意見(簽字):X年X月X日系(教研室)主任(簽字):X年X月X日意見學(xué)院名稱: 班級名稱: 學(xué)生:_ 學(xué) 號(hào): 題指導(dǎo)教師姓 名:計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)說明書(封面)計(jì)算機(jī)與信息工程學(xué)院網(wǎng)絡(luò)工程一班201321滑動(dòng)窗口協(xié)議仿真邵雪梅起止日期:2015.6. 23-2015.6. 29第一部分:正文部分一,選題背景早期的網(wǎng)絡(luò)通信中,通信雙方不會(huì)考慮網(wǎng)絡(luò)的擁擠情況直接發(fā)送 數(shù)據(jù)。由于大家不知道網(wǎng)絡(luò)擁塞狀況,一起發(fā)送數(shù)據(jù),導(dǎo)致中間結(jié)點(diǎn) 阻塞掉包,誰也發(fā)不了數(shù)據(jù)。在數(shù)據(jù)傳輸過程中,我們總是希望數(shù)據(jù) 傳
5、輸?shù)母煲恍?,但如果發(fā)送方把數(shù)據(jù)發(fā)送的過快,接收方就可能來不及 接收,這就造成數(shù)據(jù)的丟失。因此就有了滑動(dòng)窗口機(jī)制來解決這些問 題。早期我們使用的是lbit滑動(dòng)窗口協(xié)議,一次只發(fā)送一個(gè)幀,等 收到ack確認(rèn)才發(fā)下一個(gè)幀,這樣對信道的利用率太低了。因此提出 了一種采用累積確認(rèn)的連續(xù)ARQ協(xié)議,接收方不必對收到的幀逐個(gè)發(fā)送 ack確認(rèn),而是收到幾個(gè)幀后,對按序到達(dá)的最后一個(gè)幀發(fā)送ack確認(rèn)。 同lbit滑動(dòng)窗口協(xié)議相比,大大減少了 ack數(shù)量,并消除了延遲ack對 傳輸效率的影響。但是,這會(huì)產(chǎn)生一個(gè)新的問題,如果發(fā)送方發(fā)送了 5個(gè) 幀,而中間的第3個(gè)幀丟失了。這時(shí)接收方只能對前2個(gè)幀發(fā)出確認(rèn)。發(fā) 送
6、方無法知道后面三個(gè)幀的下落,只好把后面的3個(gè)幀再重傳一次,這就 是回退N協(xié)議。為了解決這個(gè)問題,又提出了選擇重傳協(xié)議。當(dāng)接收方 發(fā)現(xiàn)某幀出錯(cuò)后,繼續(xù)接受后面送來的正確的幀,只是不交付它們, 存放在自己的緩沖區(qū)中,并且要求發(fā)送方重傳出錯(cuò)的那一幀。一旦收 到重傳來的幀后,就可以將存于緩沖區(qū)中的其余幀一并按正確的順序 遞交給主機(jī)。本文主要介紹如何根據(jù)滑動(dòng)窗口協(xié)議的原理,在Visual C+ 的平臺(tái)上設(shè)計(jì)一個(gè)滑動(dòng)窗口協(xié)議模擬程序,并最終使該程序得以實(shí)現(xiàn)。本 次程序設(shè)計(jì)分兩部分:第一部分是發(fā)送方,第二部分是接收方。通過發(fā)送 方和接收方之間的數(shù)據(jù)幀傳輸模擬,學(xué)習(xí)滑動(dòng)窗口協(xié)議控制流量的原理和 方法,以及滑動(dòng)
7、窗口協(xié)議的工作機(jī)制。二、設(shè)計(jì)理念2.1滑動(dòng)傷口協(xié)議工作原理TCP滑動(dòng)窗口用來暫存兩臺(tái)計(jì)算機(jī)間要傳送的數(shù)據(jù)分組。每臺(tái)運(yùn)行TCP協(xié)議 的計(jì)算機(jī)有兩個(gè)滑動(dòng)窗口: 一個(gè)用于數(shù)據(jù)發(fā)送,另一個(gè)用于數(shù)據(jù)接收。發(fā)送端待 發(fā)數(shù)據(jù)分組在緩沖區(qū)排隊(duì)等待送出。被滑動(dòng)窗口框入的分組,是可以在未收到接 收確認(rèn)的情況下最多送出的部分?;瑒?dòng)窗口左端標(biāo)志X的分組,是已經(jīng)被接收端 確認(rèn)收到的分組。隨著新的確認(rèn)到來,窗口不斷向右滑動(dòng)?;瑒?dòng)窗口算法工作過程如下:首先,發(fā)送方為每1幀賦一個(gè)序號(hào)(sequence number),記作SeqNum?,F(xiàn) 在,我們忽略SeqNuni是由有限大小的頭部字段實(shí)現(xiàn)的事實(shí),而假設(shè)它能無限增 大。發(fā)送
8、方維護(hù)3個(gè)變量:發(fā)送窗口大小(send window size),記作SWS,給 出發(fā)送方能夠發(fā)送但未確認(rèn)的幀數(shù)的上界;LAR表示最近收到的確認(rèn)幀(last acknowledgement received)的序號(hào);LFS 表示最近發(fā)送的幀(last frame sent) 的序號(hào),發(fā)送方還維持如下的不變式:LAR-LFSWSWS 。2-1滑動(dòng)窗口協(xié)議工作圖窗口協(xié)議算法有三個(gè)功能:在不可靠鏈路上可靠地傳輸幀保持幀的傳輸順序支持流量控制2.2選擇重傳協(xié)議在選擇重傳協(xié)議中,當(dāng)接收方發(fā)現(xiàn)某幀出錯(cuò)后,其后繼續(xù)送來的正確的幀雖 然不能立即遞交給接收方的高層,但接收方仍可收下來,存放在一個(gè)緩沖區(qū)中, 同時(shí)
9、要求發(fā)送方重新傳送出錯(cuò)的那一幀。一旦收到重新傳來的幀后,就可以原已 存于緩沖區(qū)中的其余幀一并按正確的順序遞交髙層。這種方法稱為選擇重發(fā) (SELECTICE REPEAT),其工作過程如圖所示。顯然,選擇重發(fā)減少了浪費(fèi),但要 求接收方有足夠大的緩沖區(qū)空間。婭幀0 12ld4l5l67234579 10 W窪wxw接收幀0 1卜;卜41 11 Z.itZ16-J2f791()111213 14R存*遞交,毅6依次遞交尙層2-2選擇重傳協(xié)議原理圖三、過程論述(1) 發(fā)送方程序流程圖:發(fā)送方按收方校驗(yàn)和檢査發(fā)送幷燉定時(shí)器恢炒報(bào)文滋主機(jī)不對對期待峽號(hào)4 期待禎號(hào)收到帕的仔夸 鋼待輸號(hào)巻待發(fā)送幀號(hào)釧 發(fā)
10、送幀號(hào)警待 Ack腋|0 一發(fā)送皆號(hào) %|從主亦對5刃3-1發(fā)送方程序流程圖(2) 接收方程序流程圖:32接受方程序流程圖3.2功能實(shí)現(xiàn)(1)發(fā)送方程序:本程序設(shè)有四個(gè)變量:一是窗口大小變量,二是第一幀序列號(hào)變量,三是最近發(fā)送的幀變量,最后一個(gè)是最近收到的確認(rèn)幀變量。swpstatel. head=NlLL; /變量初始值為空swpstate1. sendq=sendq rear=(structsendq slot*)malloc(sizeof(structsen dq_slot);if (!swpstate1. sendq) exit (1):sendq_rear-next=NULL;pri
11、ntf(請輸入窗口大?。骸?;scanf (M%ld,r tftswpstatel. sws) ;/輸入窗 口大小 swpstatel. rws=swpstatel. sws; /把窗 口大小的值賦給變量 if (swpstate1. sws0)printf(請輸入第一幀的序列號(hào):”);scanf (U%1 d,r,&swpstate 1. hdr. seqnum) ;/輸入第一幀序列號(hào)swpstatel. nfe=swpstatel. hdr. seqnum; /把第一幀的值放進(jìn)緩沖池 sendp= (struct sendq_slot*) malloc (size of (struct s
12、endq slot): if (!sendp) exit (1); sendp-msg=swpstate1. hdr seqnum; sendp-t imeout=l; sendp-next二NULL; sendq_rear-next=sendp; sendq_rear=sendp; 一一swpstate1. sws;swpstatel. lfs=swpstatel. hdr. seqnum; /最近發(fā)送的幀取值 swpstatel. lar=swpstatel. hdr. seqnum; /最近收到的確認(rèn)幀取值 dowhile(swpstatel. sws0) 當(dāng)窗口大小大于0時(shí),執(zhí)行以下的
13、循環(huán)sendp=(struct sendq_slot*)malloc(sizeof(struct sendqslot); if (!sendp) exit (1);sendp-msg二swpstatel. lfs+1;/如果輸入的幀序號(hào)大于之前幀序號(hào),那么窗口向前滑動(dòng)sendp-t imeout=l; /時(shí)延為 1sendp-next=NULL;sendq_rear-next=sendp;sendq rear=sendp;swpstate1. sws;+swpstate1. lfs;swpstatel. hdr. acknum二0; /ACK 清空swpstatel. hdr. flags=0
14、; /存儲(chǔ)緩沖池清空 printf (n 最近收到的 ACK 的幀序號(hào):%ldnH, swpstatel. lar); 輸出最近收到的ACK幀序號(hào) printf (最近發(fā)送的幀序號(hào)(發(fā)送新幀后):%ldnu, swpstatel. lfs); /輸出最近發(fā)送幀序號(hào)(2)接收方的接收原則從總體上看是先判斷輸入的數(shù)據(jù)幀是否在接收圍之,若 是,則繼續(xù)判斷是否符合其他接收條件;若不是,則馬上丟棄該數(shù)據(jù)幀,不再進(jìn) 行其他條件的判斷。struct sendq slot *sendq_rear, *sendp, *p3, *p4;/設(shè)定變量struct recvqslot *recvp,*recvq_rea
15、r,*pl,*p2;if(swpstate1 hdr flags=0)上次輸入的數(shù)據(jù)幀被放置在緩存區(qū),輸入?yún)^(qū)被清空do 如果繼續(xù)接收數(shù)據(jù)幀則實(shí)施下面循環(huán)printf(H請輸入收到的數(shù)據(jù)幀號(hào):);scanf(”Id,&a);if (a=swpstatel. nfe&anext=NULL;recvq_rear-next=recvp; recvq_rear=recvp;elseprintf (*所輸數(shù)據(jù)不在接收窗口 !);break ;/跳出該循環(huán)(3) 若輸入數(shù)據(jù)幀在接收圍則繼續(xù)判斷并進(jìn)行以下循環(huán)。recvp-msg=a;if (recvp-msg=swpstatel. nfe) /是否放入緩存判
16、斷recvp-received二1;elserecvp-received二0;一一swpstate1. rws;if(recvp-received=l) /數(shù)據(jù)幀被接收,則進(jìn)行下面語句 a=a-l;do a=a+l;if (swpstate1. head=NULL)break;pl=swpstate1. head;flag=O;while (a!=pl-msg)&(pl-next!=NULL)p2=pl;pl=pl-next;)if (a=pl-msg)flag=l;if(pl=swpstate1 head)swpstate1. head=swpstatel. head-next;else p
17、2-next=pl-next;swpstate1. nfe=a+l:swpstate1 hdr acknuma+l:swpstate1. hdr flags=l;while(flag=l);printf (UACK 號(hào)(期待的下一幀的序號(hào)):%ldnh, swpstatel. nfe); printf(沒按序接受的序號(hào):nw);pl=swpstate1. head;while(pl!=NULL)printf (M%ldtr,,pl-msg);pl二pl-next;(4) 當(dāng)接收完一個(gè)數(shù)據(jù)幀時(shí),我們可以選擇終止下面的繼續(xù)接收,也可以選擇 繼續(xù)接收。如果繼續(xù)接收,那么程序跳到判斷循環(huán),繼續(xù)判斷是否
18、接收下一個(gè)數(shù) 據(jù)幀,原理與上面相當(dāng)。while(swpstatel. rws0)&(b=l);if (swpstate1. hdr flags=l)p3=swpstate1. sendq-next;flag=O;while(swpstate1. hdr acknum)!=p3-msg&p3一next!二NULL)p4=p3;p3二p3-next;if(swpstate1. hdr acknum二二p3一msg)flag=l;if(p3-msg=swpstate1. sendq-next-msg)swpstateI. sendq-next=p3; else swpstate1. sendq-ne
19、xt=p3;swpstate1. sws=swpstate1. sws+(swpstate1. sendq一next一msg一swpstate1. lar );swpstate1. lar二swpstate1. sendq一nextmsg;swpstate 1. hdr seqntnn 二 swpstate 1 hdr ack num;printf(w最近收到的 ACK 的幀序號(hào)(收到 ACK 后):%ldn,r, swpstatel. lar);printf(”最近發(fā)送的幀序號(hào)(此時(shí)還未發(fā)送新的數(shù) 據(jù)):%ldnu, swpstatel. lfs);四、結(jié)果分析滑動(dòng)窗口協(xié)議的基本原理就是在任
20、意時(shí)刻,發(fā)送方都維持了一個(gè)連續(xù) 的允許發(fā)送的幀的序號(hào),稱為發(fā)送窗口;同時(shí),接收方也維持了一個(gè)連續(xù) 的允許接收的幀的序號(hào),稱為接收窗口。發(fā)送窗口和接收窗口的序號(hào)的上 下界不一定要一樣,甚至大小也可以不同。不同的滑動(dòng)窗口協(xié)議窗口大小 一般不同。發(fā)送方窗口的序號(hào)代表了那些已經(jīng)被發(fā)送,但是還沒有被確認(rèn) 的幀,或者是那些可以被發(fā)送的幀。接受方為其窗口的每一個(gè)序號(hào)保留了一個(gè) 緩沖區(qū)。與每個(gè)緩沖區(qū)相關(guān)聯(lián)的還有一位,用來指明該緩沖區(qū)是滿的還是空的。若從滑動(dòng)窗口的觀點(diǎn)來統(tǒng)一看待1比特滑動(dòng)窗口、后退n及選擇重傳三 種協(xié)議,它們的差別僅在于各自窗口尺寸的大小不同而已。1比特滑動(dòng)窗口 協(xié)議:發(fā)送窗口 =1,接收窗口
21、=1;后退N協(xié)議:發(fā)送窗口 1,接收窗口 =1; 選擇重傳協(xié)議:發(fā)送窗口 1,接收窗口五、結(jié)論(或總結(jié))下面我以窗口大小為11,第一幀序列號(hào)為3,做程序的測試貳 *Ht Dobucj&2W 口協(xié)設(shè)鍛躋沃、冠口大?。回?憩址嘗劉阿U:K迥獅序號(hào),3 簷瞰萸器羅點(diǎn)聲嚴(yán)切13 養(yǎng)糜瞬噱喚杪3 址線按收血 若繪.鍬入,.若不是.沒技序聶或h序弓*迪綸挨也忱7若是.舗入1若不是. 馨譎站3 和綸養(yǎng)ifei彤若是播入,.若不是.沒按序謔或亦序號(hào)=地金挨也忱7若是.舗入1若不是. 加朋刪譎為 衩按序按涵序號(hào)=堆綸養(yǎng)世助?若是.做入,.若不是.沒技序按灑序號(hào):矗維挨收忱彳若是.觸入一 若不是. 川驚翻樂瞬諾號(hào)一 9 汝按序扶受藥序號(hào)=輸入叭錨入叭錨入叭錨入叭圖5測試結(jié)果(1)整體窗口展示,命令行界面5-1圖(2)輸入窗口大小及第一幀序列號(hào)-rj|x滑動(dòng)宙口協(xié)誼.Rie購1 序曜皤 T的Kfr龍 sAc唄的 T呦旳列 mB更收 收苓八幀3 3新 務(wù)35-2圖(3)當(dāng)輸入的接收幀并不是ACK期待的幀,那么根據(jù)滑動(dòng)窗口協(xié)議該幀不被 接收,且把該幀存放在緩沖區(qū)。ACK (期持的卞一幀的序號(hào)):3 沒按序養(yǎng)芟旳序號(hào):65-3圖(4)若輸入的幀超過了窗口大小,那么系統(tǒng)會(huì)顯示該幀不在接收圍,并拒絕接
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年協(xié)議修改確認(rèn)書格式
- 江蘇省鹽城市某校2024-2025學(xué)年四年級上學(xué)期期中素養(yǎng)大賽語文試卷
- 大數(shù)據(jù)在金融市場預(yù)測與決策支持中的應(yīng)用前景考核試卷
- 巖巷快速施工技術(shù)巷道事故考核試卷
- 智能家居設(shè)備的發(fā)展趨勢考核試卷
- 游樂園智能導(dǎo)覽系統(tǒng)應(yīng)用與推廣考核試卷
- 油炸食品制造業(yè)的食品安全風(fēng)險(xiǎn)預(yù)警與應(yīng)對考核試卷
- 上海開放大學(xué)杜詩精讀計(jì)分作業(yè)參考答案
- 水利工程中的施工資料管理考核試卷
- 光學(xué)透射電流檢測器考核試卷
- 砌筑工-技能評分記錄表3
- 司索工安全操作規(guī)程
- 人教版數(shù)學(xué)五年級上冊課本習(xí)題(題目)
- 鋼筋合格證(共6頁)
- BIM技術(shù)全過程工程管理及應(yīng)用策劃方案
- 彎扭構(gòu)件制作工藝方案(共22頁)
- 水利工程填塘固基、堤身加固施工方法
- 中醫(yī)針灸的骨邊穴怎樣定位
- 人教版八年級上冊英語單詞表默寫版(直接打印)
- 電脫水、電脫鹽講解
- 違約損失率(LGD)研究
評論
0/150
提交評論