數(shù)據(jù)鏈路層滑動(dòng)窗口協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
數(shù)據(jù)鏈路層滑動(dòng)窗口協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
數(shù)據(jù)鏈路層滑動(dòng)窗口協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
數(shù)據(jù)鏈路層滑動(dòng)窗口協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
數(shù)據(jù)鏈路層滑動(dòng)窗口協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)鏈路層滑動(dòng)窗口協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)PAGEPAGE1數(shù)據(jù)鏈路層滑動(dòng)窗口協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告一、實(shí)驗(yàn)任務(wù)及內(nèi)容利用所學(xué)數(shù)據(jù)鏈路層原理,設(shè)計(jì)一個(gè)滑動(dòng)窗口協(xié)議并在仿真環(huán)境下編程實(shí)現(xiàn)有噪音信道環(huán)境下的可靠的雙工通信。信道模型為8000bps全雙工衛(wèi)星信道,信道傳播時(shí)延270毫秒,信道誤碼率為10-5,信道提供字節(jié)流傳輸服務(wù),網(wǎng)絡(luò)層分組長(zhǎng)度在240~256字節(jié)范圍。實(shí)現(xiàn)有噪音信道環(huán)境下的無(wú)差錯(cuò)傳輸。運(yùn)行程序并檢查在信道沒(méi)有誤碼和存在誤碼兩種情況下的信道利用率。提高滑動(dòng)窗口協(xié)議信道利用率,根據(jù)信道實(shí)際情況合理地為協(xié)議配置工作參數(shù),包括滑動(dòng)窗口的大小和重傳定時(shí)器時(shí)限以及ACK搭載定時(shí)器的時(shí)限。實(shí)驗(yàn)環(huán)境Windows7環(huán)境PC機(jī),MicrosoftVisualC++6.0集成化開(kāi)發(fā)環(huán)境二、協(xié)議設(shè)計(jì)協(xié)議的分層結(jié)構(gòu)及層服務(wù):包括物理層,數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層三層。該實(shí)驗(yàn)主要設(shè)計(jì)數(shù)據(jù)鏈路層協(xié)議,為實(shí)現(xiàn)有噪聲環(huán)境下高信道利用率傳輸,我們采用回退n幀(gobackn)技術(shù)的協(xié)議。發(fā)送方窗口大小為31;通過(guò)捎帶確認(rèn)來(lái)完成可靠的數(shù)據(jù)通信;出現(xiàn)信道誤碼導(dǎo)致收幀出錯(cuò)時(shí),接受方丟棄所有后續(xù)幀,待定時(shí)器超時(shí)后發(fā)送方重發(fā)。該層提供服務(wù):從網(wǎng)絡(luò)層接受要發(fā)送的數(shù)據(jù)包,將之分拆成數(shù)據(jù)幀;按一定的成幀方案完成分幀,加校驗(yàn)碼,加ack等操作;進(jìn)行適當(dāng)?shù)牧髁颗袛嗪蛽砣刂疲粏?dòng)定時(shí)器將之傳遞給物理層。數(shù)據(jù)幀經(jīng)信道傳送給接受方,接受方數(shù)據(jù)鏈路層執(zhí)行與成幀相逆的操作;處理ack信息,終止定時(shí)器(或啟動(dòng)ack定時(shí)器,ack成幀傳送);判斷是否為欲接受數(shù)據(jù),數(shù)據(jù)是否出錯(cuò),提交給網(wǎng)絡(luò)層。退回N步工作原理示意圖:實(shí)驗(yàn)所形成幀(成幀方案):DATAFramen+=========+========+========+===============+========+|KIND(1)|ACK(1)|SEQ(1)|DATA(240~256)|CRC(4)|+=========+========+========+===============+========+ACKFrame+=========+========+========+|KIND(1)|ACK(1)|CRC(4)|+=========+========+========+NAKFrame+=========+========+========+|KIND(1)|ACK(1)|CRC(4)|+=========+========+========+CRC校驗(yàn)和的多項(xiàng)式定義:本次實(shí)驗(yàn)采用的CRC校驗(yàn)方案為CRC-32,與IEEE802.3以太網(wǎng)校驗(yàn)和生成多項(xiàng)式相同。生成多項(xiàng)式為:x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+1校驗(yàn)和附加在數(shù)據(jù)幀尾部,接受方用帶校驗(yàn)和的數(shù)據(jù)來(lái)邏輯除以生成多項(xiàng)式,余數(shù)為零則數(shù)據(jù)無(wú)誤碼,反之有誤碼等待發(fā)送方重傳??煽客ㄐ藕驼`碼控制方案:通過(guò)捎帶確認(rèn)來(lái)完成可靠的數(shù)據(jù)通信;出現(xiàn)信道誤碼導(dǎo)致收幀出錯(cuò)時(shí),接受方丟棄所有后續(xù)幀,此時(shí)發(fā)送方長(zhǎng)久接受不到確認(rèn)信息,引發(fā)定時(shí)器超時(shí)后發(fā)送方重發(fā);接受方無(wú)數(shù)據(jù)傳送導(dǎo)致發(fā)送方無(wú)法收到捎帶確認(rèn)時(shí),接受方確認(rèn)定時(shí)器超時(shí),構(gòu)造一確認(rèn)幀單獨(dú)傳送。三、軟件設(shè)計(jì)給出程序的數(shù)據(jù)結(jié)構(gòu),模塊之間的調(diào)用關(guān)系和功能,程序流程。本次實(shí)驗(yàn)我們對(duì)go-back-N協(xié)議進(jìn)行了編寫(xiě),描述如下:數(shù)據(jù)結(jié)構(gòu):typedefenum{false,true}boolean;//blooleantypetypedefunsignedcharseq_nr;//sequenceoracknumberstypedefunsignedcharpacket[PKT_LEN];//用數(shù)組存放數(shù)據(jù)/*FRAMEkind*/#defineData1#defineAck2#defineNak3staticintphl_ready://物理層狀態(tài)next_frame_to_send;//MAX_SEQ>1;usedforoutboundstream,andinitianizenextframegoingoutack_expected;//oldestframeasyetunacknowledged,andinitianizenextackexpectedinboundframe_expected;//nextframeexpectedoninboundstream,andinitializenumberofframeexpectedinboundbuffer[MAX_SEQ+1];//buffersfortheoutboundstreamnbuffered;//outputbufferscurrentlyinuse,andinitiallynopacketsarebufferedbufferLen[MAX_SEQ+1]//bufferLen存儲(chǔ)每個(gè)buffer中數(shù)據(jù)的有效長(zhǎng)度typedefstruct{//幀結(jié)構(gòu) unsignedcharkind;seq_nrack;seq_nrseq;packetinfo;unsignedcharcrc[4];}frame;模塊結(jié)構(gòu):給出程序中所設(shè)計(jì)的子程序完成的功能,子程序每個(gè)參數(shù)的意義。A)staticbooleanbetween(seq_nra,seq_nrb,seq_nrc)//判斷b是否是在a、c之間的幀B)staticvoidput_frame(unsignedchar*frame,intlen)//crc編碼并向物理層發(fā)送C)send_data(unsignedcharkind,seq_nrframe_nr,seq_nrframe_expected,packetbuffer[],intdlen[])//生成幀D)intmain()//主函數(shù),分為五個(gè)事件(1)NETWORK_LAYER_READY,事件發(fā)生后從網(wǎng)絡(luò)層讀數(shù)據(jù),成幀;若當(dāng)前物理層可用,發(fā)送。(2)PHYSICAL_LAYER_READY,事件發(fā)生后,若有未發(fā)送的幀,發(fā)送,否則置物理層狀態(tài)為可用。(3)DATA_INCOMING,事件發(fā)生后,來(lái)了arg個(gè)字節(jié)的數(shù)據(jù),每接受一個(gè)數(shù)據(jù),判斷是否為幀尾;若為幀尾,提取一幀,去掉填充,進(jìn)行校驗(yàn);若校驗(yàn)結(jié)果正確,處理ack,然后處理數(shù)據(jù)。接受完arg個(gè)字節(jié),跳出。(4)ACK_TIMEOUT,事件發(fā)生后,產(chǎn)生一個(gè)不含數(shù)據(jù)的ack幀,等待直到物理層有效,發(fā)送。(5)DATA_TIMEOUT,事件發(fā)生后,重發(fā)ack_expected和next_frame_to_send之間的幀。算法流程:畫(huà)出流程圖,描述算法的主要流程。結(jié)束發(fā)送完畢否數(shù)據(jù)幀是否丟失A生成幀并發(fā)送,B接收幀,并返回信息是是回退重傳否連接是否成功新建A、B兩站自動(dòng)連接開(kāi)始結(jié)束發(fā)送完畢否數(shù)據(jù)幀是否丟失A生成幀并發(fā)送,B接收幀,并返回信息是是回退重傳否連接是否成功新建A、B兩站自動(dòng)連接開(kāi)始四、實(shí)驗(yàn)結(jié)果分析(1)描述你所實(shí)現(xiàn)的協(xié)議軟件是否實(shí)現(xiàn)了誤碼信道環(huán)境中無(wú)差錯(cuò)傳輸功能此協(xié)議軟件實(shí)現(xiàn)了誤碼信道環(huán)境中無(wú)差錯(cuò)傳輸功能(2)程序的健壯性在較低誤碼率的信道條件下,該程序運(yùn)行平穩(wěn),未出現(xiàn)任何差錯(cuò),健壯性良好,在高誤碼率的信道條件下,程序運(yùn)行有時(shí)會(huì)出現(xiàn)中斷,但大多數(shù)時(shí)候均運(yùn)行超過(guò)二十分鐘以上,故本程序健壯性良好,但仍有值得改進(jìn)之處。(3)協(xié)議參數(shù)的選取:滑動(dòng)窗口的大小為7,重傳定時(shí)器的時(shí)限2000,ACK搭載定時(shí)器的時(shí)限為300。在go_back_n協(xié)議中(假設(shè)接受方一直有數(shù)據(jù)發(fā)送,即無(wú)ack定時(shí)器超時(shí)現(xiàn)象),滑動(dòng)窗口的大小M,信道傳輸時(shí)延a,發(fā)送速率c,幀大小f在滿(mǎn)足如下關(guān)系時(shí)信道利用率(M*(f/c)/[2a+2(f/c)])接近100%:M>=[2a+2*(f/c)]/(f/c);由于實(shí)際數(shù)據(jù)傳送很可能在某段時(shí)間類(lèi)接受方無(wú)數(shù)據(jù)反送,涉及ack幀單獨(dú)傳送問(wèn)題,故一般信道利用率不可能達(dá)到100%,但M的選擇至少要滿(mǎn)足公式。至于防止M過(guò)大的問(wèn)題,可通過(guò)實(shí)際測(cè)試的結(jié)果分析來(lái)得到合適的M值。滑動(dòng)窗口大小的選擇直接涉及到信道利用率和數(shù)據(jù)擁塞的問(wèn)題;若太小,會(huì)導(dǎo)致信道空閑,利用率很低;若太大,數(shù)據(jù)發(fā)送過(guò)快,會(huì)造成接受方數(shù)據(jù)鏈路層來(lái)不及處理,數(shù)據(jù)物理層及信道發(fā)生擁塞現(xiàn)象導(dǎo)致數(shù)據(jù)丟失,出錯(cuò)率增大,重傳率高。8000kbps的信道發(fā)送256字節(jié)的幀需要256*8/8000=256ms(256+270*2)/256=3.X,最大窗口應(yīng)該7就行了.重傳定時(shí)器的大小由發(fā)送速率、信道時(shí)延及接受方的發(fā)送頻率等確定,太小會(huì)頻繁重發(fā),太大也會(huì)降低信道利用率。結(jié)合多項(xiàng)測(cè)試最終定為2000ms。ack搭載定時(shí)器的時(shí)限由本站的發(fā)送頻率決定,一方面,為了節(jié)省帶寬應(yīng)該盡量搭載使用。另一方面當(dāng)本站長(zhǎng)時(shí)間無(wú)數(shù)據(jù)發(fā)送時(shí)應(yīng)該盡量早點(diǎn)發(fā)送ack幀。經(jīng)過(guò)數(shù)項(xiàng)測(cè)試,定位300ms。(4)理論分析:無(wú)差錯(cuò)條件下分組層能獲得的最大信道利用率應(yīng)該是256/262*100%=97.7,而在誤碼率為1e-5的情況下應(yīng)為256/262(1+262*8*0.00001)=95.5。(5)實(shí)驗(yàn)結(jié)果分析:你的程序運(yùn)行實(shí)際達(dá)到了什么樣的效率,比對(duì)理論推導(dǎo)給出的結(jié)論,有沒(méi)有差距?給出原因。有沒(méi)有改進(jìn)的辦法?如果沒(méi)有時(shí)間把這些方法付諸編程實(shí)施,介紹你的方案。序號(hào)命令說(shuō)明運(yùn)行時(shí)間(秒)效率(%)備注AB1datalinkaudatalinkbu無(wú)誤碼信道數(shù)據(jù)傳輸1957.41352.5896.972datalinkadatalinkb站點(diǎn)A分組層平緩方式發(fā)出數(shù)據(jù),站點(diǎn)B周期性交替“發(fā)送100秒,停發(fā)100秒”1525.15648.5787.693datalinkafudatalinkbfu無(wú)誤碼信道,站點(diǎn)A和B的分組層都洪水式產(chǎn)生分組1586.40996.9796.974datalinkafdatalinkbf站點(diǎn)A/B的分組層都洪水式產(chǎn)生分組1899.68885.7985.805datalinkaf–ber1e-4datalinkbf–ber1e-4站點(diǎn)A/B的分組層都洪水式產(chǎn)生分組,線(xiàn)路誤碼率設(shè)為10-41028.14938.0838.60實(shí)驗(yàn)成果離預(yù)期效果存在差距,尤其在有誤碼的條件下,信道利用率與理論之相比相差很大。原因有幾個(gè)方面:填充字節(jié)和發(fā)送時(shí)候的延遲,這一方面無(wú)法縮短;信道空閑,只是因?yàn)榇翱诖笮?、重傳定時(shí)器的時(shí)限和ACK搭載定時(shí)器的時(shí)限的選擇不是很恰當(dāng),這方面,需要多做測(cè)試來(lái)確定發(fā)送端、接收端的延時(shí),再確定具體數(shù)值;另外,ack的發(fā)送可能有些滯后,沒(méi)有一個(gè)非常合理的發(fā)送機(jī)制。還有一點(diǎn),從網(wǎng)絡(luò)層受到數(shù)據(jù)后,我是把數(shù)據(jù)成幀后存起來(lái)的,現(xiàn)在看來(lái),考慮到ack的更新,在發(fā)送時(shí)再成幀更有效率些。(6)存在的問(wèn)題:在“表3性能測(cè)試記錄表”中給出了7種測(cè)試方案,在測(cè)試中你的程序有沒(méi)有失敗,或者,雖未失敗,但表現(xiàn)出來(lái)的性能仍有差距,你的程序中還存在哪些問(wèn)題?測(cè)試中沒(méi)有失敗,不過(guò)性能差距挺大。主要是超時(shí)時(shí)限和窗口大小的問(wèn)題。五、研究和探索的問(wèn)題1.start_timer()不是在啟動(dòng)時(shí)就計(jì)時(shí),而是在物理層發(fā)送了才開(kāi)始計(jì)時(shí);相對(duì)的,start_ack_timer()是以啟動(dòng)就開(kāi)始計(jì)時(shí)。前者要考慮發(fā)送緩沖區(qū)的等待時(shí)間,而后者考慮的是ack是否被裝到了幀上。2.重傳時(shí)限設(shè)定得比較長(zhǎng),大部分情況下都不會(huì)超時(shí)。實(shí)踐證明,這種情況下效率相對(duì)更高一點(diǎn)。3.流量控制方面,首先窗口的大小可以控制。然后發(fā)送和接收緩存區(qū)的大小也限制了流量。六、實(shí)驗(yàn)總結(jié)和心得體會(huì)(1)完成本次實(shí)驗(yàn)的實(shí)際上機(jī)調(diào)試時(shí)間是多少?三天,第一天花了大概7小時(shí)討論程序結(jié)構(gòu)以及函數(shù)的調(diào)用,第二天完成編程并調(diào)試,第三天寫(xiě)文檔和性能測(cè)試,(2)編程工具方面遇到了哪些問(wèn)題?包括Windows環(huán)境和VC軟件的安裝問(wèn)題。該實(shí)驗(yàn)要用vc++6.0,并且要在doc系統(tǒng)運(yùn)行生成的exe文件。(3)編程語(yǔ)言方面遇到了哪些問(wèn)題?包括C語(yǔ)言使用和對(duì)C語(yǔ)言操控能力上的問(wèn)題。大概沒(méi)遇到什么問(wèn)題。。遇到的只是一些函數(shù)的調(diào)用上。(4)協(xié)議方面遇到了哪些問(wèn)題?包括協(xié)議機(jī)制的設(shè)計(jì)錯(cuò)誤,發(fā)現(xiàn)協(xié)議死鎖,或者不能正確工作,協(xié)議參數(shù)的調(diào)整等問(wèn)題。成幀時(shí),開(kāi)始我們幀結(jié)構(gòu)是(ack幀序號(hào)數(shù)據(jù)長(zhǎng)度數(shù)據(jù)內(nèi)容校驗(yàn)和),長(zhǎng)度在256時(shí)成了0,后來(lái)在成幀時(shí)去掉了數(shù)據(jù)長(zhǎng)度這項(xiàng)。(5)開(kāi)發(fā)庫(kù)方面遇到了哪些問(wèn)題?包括庫(kù)程序中的BUG,庫(kù)函數(shù)文檔不夠清楚導(dǎo)致誤解,庫(kù)函數(shù)設(shè)計(jì)在所提供的功能結(jié)構(gòu)上的缺憾導(dǎo)致編程效率低下。這些問(wèn)題或

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論