




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 實 驗 報 告 課程名稱 網(wǎng)絡(luò)應(yīng)用編程 題目名稱 滑動窗口協(xié)議模擬程序 學(xué)生學(xué)院 計算機學(xué)院 專業(yè)班級 網(wǎng)絡(luò)工程(3)班 學(xué) 號 3112006432 學(xué)生姓名 李龍 指導(dǎo)教師 孫為軍 2015 年6月25日目錄一、 實驗?zāi)康暮鸵?二、 實驗環(huán)境5三、 實驗原理6四、 實驗步驟和結(jié)果記錄9五、 關(guān)鍵源代碼10六、 實驗體會161、 實驗?zāi)康暮鸵?、 實驗?zāi)康谋菊戮幊逃?xùn)練的目的是通過對數(shù)據(jù)鏈路層滑動窗口協(xié)議及tcp滑動窗口協(xié)議的模擬掌握滑動窗口的概念以及滑動窗口協(xié)議的實現(xiàn)方法,從而加深對數(shù)據(jù)重傳與流量控制機制的理解。2、 實驗要求(1) 通過可視化編程將程序所有功能簡潔地展示出來。(2)
2、由一臺pc向另一臺pc發(fā)送數(shù)據(jù)包,界面中必須動態(tài)顯示數(shù)據(jù)幀的發(fā)送和接收情況,以表明模擬協(xié)議的正確運作過程。(3) 接收方應(yīng)具有固定大小的滑動窗口。當(dāng)發(fā)送方速度過快或幀丟失時,接收方應(yīng)發(fā)送消息,要求暫停或重傳。接收方要求按序向網(wǎng)絡(luò)層提交收到的幀。(4) 發(fā)送方發(fā)送速度可以調(diào)節(jié);發(fā)送方重傳時只須重傳需要的幀;可指定滑動窗口數(shù)目、停等的時間間隔以及發(fā)送類型等參數(shù)。2、 實驗環(huán)境操作系統(tǒng):windows7 sp2開發(fā)語言:c+ / mfc編譯環(huán)境:ms visual c+6.03、 實驗原理1、 窗口機制滑動窗口協(xié)議的基本原理就是在任意時刻,發(fā)送方都維持了一個連續(xù)的允許發(fā)送的幀的序號,稱為發(fā)送窗口;同
3、時,接收方也維持了一個連續(xù)的允許接收的幀的序號,稱為接收窗口。發(fā)送窗口和接收窗口的序號的上下界不一定要一樣,甚至大小也可以不同。不同的滑動窗口協(xié)議窗口大小一般不同。發(fā)送方窗口內(nèi)的序號代表了那些已經(jīng)被發(fā)送,但是還沒有被確認(rèn)的幀,或者是那些可以被發(fā)送的幀。接受方為其窗口內(nèi)的每一個序號保留了一個緩沖區(qū)。與每個緩沖區(qū)相關(guān)聯(lián)的還有一位,用來指明該緩沖區(qū)是滿的還是空的。 若從滑動窗口的觀點來統(tǒng)一看待1比特滑動窗口、后退n及選擇重傳三種協(xié)議,它們的差別僅在于各自窗口尺寸的大小不同而已。1比特滑動窗口協(xié)議:發(fā)送窗口=1,接收窗口=1;后退n協(xié)議:發(fā)送窗口>1,接收窗口=1;選擇重傳協(xié)議:發(fā)送窗口>
4、1,接收窗口>1。2、1bit滑動窗口協(xié)議當(dāng)發(fā)送窗口和接收窗口的大小固定為1時,滑動窗口協(xié)議退化為停等協(xié)議(stopandwait)。該協(xié)議規(guī)定發(fā)送方每發(fā)送一幀后就要停下來,等待接收方已正確接收的確認(rèn)(acknowledgement)返回后才能繼續(xù)發(fā)送下一幀。由于接收方需要判斷接收到的幀是新發(fā)的幀還是重新發(fā)送的幀,因此發(fā)送方要為每一個幀加一個序號。由于停等協(xié)議規(guī)定只有一幀完全發(fā)送成功后才能發(fā)送新的幀,因而只用一比特來編號就夠了。其發(fā)送方和接收方運行的流程圖如圖所示。3、后退n協(xié)議由于停等協(xié)議要為每一個幀進(jìn)行確認(rèn)后才繼續(xù)發(fā)送下一幀,大大降低了信道利用率,因此又提出了后退n協(xié)議。后退n協(xié)議中
5、,發(fā)送方在發(fā)完一個數(shù)據(jù)幀后,不停下來等待應(yīng)答幀,而是連續(xù)發(fā)送若干個數(shù)據(jù)幀,即使在連續(xù)發(fā)送過程中收到了接收方發(fā)來的應(yīng)答幀,也可以繼續(xù)發(fā)送。且發(fā)送方在每發(fā)送完一個數(shù)據(jù)幀時都要設(shè)置超時定時器。只要在所設(shè)置的超時時間內(nèi)仍收到確認(rèn)幀,就要重發(fā)相應(yīng)的數(shù)據(jù)幀。如:當(dāng)發(fā)送方發(fā)送了n個幀后,若發(fā)現(xiàn)該n幀的前一個幀在計時器超時后仍未返回其確認(rèn)信息,則該幀被判為出錯或丟失,此時發(fā)送方就不得不重新發(fā)送出錯幀及其后的n幀。從這里不難看出,后退n協(xié)議一方面因連續(xù)發(fā)送數(shù)據(jù)幀而提高了效率,但另一方面,在重傳時又必須把原來已正確傳送過的數(shù)據(jù)幀進(jìn)行重傳(僅因這些數(shù)據(jù)幀之前有一個數(shù)據(jù)幀出了錯),這種做法又使傳送效率降低。由此可見,
6、若傳輸信道的傳輸質(zhì)量很差因而誤碼率較大時,連續(xù)測協(xié)議不一定優(yōu)于停止等待協(xié)議。此協(xié)議中的發(fā)送窗口的大小為k,接收窗口仍是1。4、選擇重傳協(xié)議在后退n協(xié)議中,接收方若發(fā)現(xiàn)錯誤幀就不再接收后續(xù)的幀,即使是正確到達(dá)的幀,這顯然是一種浪費。另一種效率更高的策略是當(dāng)接收方發(fā)現(xiàn)某幀出錯后,其后繼續(xù)送來的正確的幀雖然不能立即遞交給接收方的高層,但接收方仍可收下來,存放在一個緩沖區(qū)中,同時要求發(fā)送方重新傳送出錯的那一幀。一旦收到重新傳來的幀后,就可以原已存于緩沖區(qū)中的其余幀一并按正確的順序遞交高層。這種方法稱為選擇重發(fā)(selectice repeat),其工作過程如圖所示。顯然,選擇重發(fā)減少了浪費,但要求接收
7、方有足夠大的緩沖區(qū)空間。5、流量控制tcp的特點之一是提供體積可變的滑動窗口機制,支持端到端的流量控制。tcp的窗口以字節(jié)為單位進(jìn)行調(diào)整,以適應(yīng)接收方的處理能力。處理過程如下: (1)tcp連接階段,雙方協(xié)商窗口尺寸,同時接收方預(yù)留數(shù)據(jù)緩存區(qū); (2)發(fā)送方根據(jù)協(xié)商的結(jié)果,發(fā)送符合窗口尺寸的數(shù)據(jù)字節(jié)流,并等待對方的確認(rèn); (3)發(fā)送方根據(jù)確認(rèn)信息,改變窗口的尺寸,增加或者減少發(fā)送未得到確認(rèn)的字節(jié)流中的字節(jié)數(shù)。調(diào)整過程包括:如果出現(xiàn)發(fā)送擁塞,發(fā)送窗口縮小為原來的一半,同時將超時重傳的時間間隔擴大一倍。(4)滑動窗口機制為端到端設(shè)備間的數(shù)據(jù)傳輸提供了可靠的流量控制機制。然而,它只能在源端設(shè)備和目的
8、端設(shè)備起作用,當(dāng)網(wǎng)絡(luò)中間設(shè)備(例如路由器等)發(fā)生擁塞時,滑動窗口機制將不起作用。4、 實驗步驟和結(jié)果記錄1、 給出發(fā)送端滑動窗口協(xié)議基本算法的偽代碼2、 給出接收端滑動窗口協(xié)議基本算法的偽代碼3、 sender與receiver之間的udp通信端口設(shè)置4、 定義滑動窗口的公共數(shù)據(jù)結(jié)構(gòu)5、 發(fā)送端模擬代碼說明6、 接收端模擬代碼說明7、 實驗結(jié)果截圖(1) 發(fā)送方:(2) 接收方:5、 關(guān)鍵源代碼1、 發(fā)送方代碼/ sender.cpp : defines the class behaviors for the application.#include "stdafx.h"#
9、include "sender.h"#include "senderdlg.h"#ifdef _debug#define new debug_new#undef this_filestatic char this_file = _file_;#endif/ csenderappbegin_message_map(csenderapp, cwinapp)/afx_msg_map(csenderapp)/ note - the classwizard will add and remove mapping macros here./ do not edit
10、what you see in these blocks of generated code!/afx_msgon_command(id_help, cwinapp:onhelp)end_message_map()/ csenderapp constructioncsenderapp:csenderapp()/ todo: add construction code here,/ place all significant initialization in initinstance/ the one and only csenderapp objectcsenderapp theapp;/
11、csenderapp initializationbool csenderapp:initinstance()afxenablecontrolcontainer();/ standard initialization/ if you are not using these features and wish to reduce the size/ of your final executable, you should remove from the following/ the specific initialization routines you do not need.#ifdef _
12、afxdllenable3dcontrols();/ call this when using mfc in a shared dll#elseenable3dcontrolsstatic();/ call this when linking to mfc statically#endifcsenderdlg dlg;m_pmainwnd = &dlg;int nresponse = dlg.domodal();if (nresponse = idok)/ todo: place code here to handle when the dialog is/ dismissed wit
13、h okelse if (nresponse = idcancel)/ todo: place code here to handle when the dialog is/ dismissed with cancel/ since the dialog has been closed, return false so that we exit the/ application, rather than start the application's message pump.return false;2、 接收方代碼/ receiver.cpp : defines the class
14、 behaviors for the application./#include "stdafx.h"#include "receiver.h"#include "receiverdlg.h"#ifdef _debug#define new debug_new#undef this_filestatic char this_file = _file_;#endif/ creceiverappbegin_message_map(creceiverapp, cwinapp)/afx_msg_map(creceiverapp)/ note
15、- the classwizard will add and remove mapping macros here./ do not edit what you see in these blocks of generated code!/afx_msgon_command(id_help, cwinapp:onhelp)end_message_map()/ creceiverapp constructioncreceiverapp:creceiverapp()/ todo: add construction code here,/ place all significant initiali
16、zation in initinstance/ the one and only creceiverapp objectcreceiverapp theapp;/ creceiverapp initializationbool creceiverapp:initinstance()if (!afxsocketinit()afxmessagebox(idp_sockets_init_failed);return false;afxenablecontrolcontainer();/ standard initialization/ if you are not using these featu
17、res and wish to reduce the size/ of your final executable, you should remove from the following/ the specific initialization routines you do not need.#ifdef _afxdllenable3dcontrols();/ call this when using mfc in a shared dll#elseenable3dcontrolsstatic();/ call this when linking to mfc statically#en
18、difcreceiverdlg dlg;m_pmainwnd = &dlg;int nresponse = dlg.domodal();if (nresponse = idok)/ todo: place code here to handle when the dialog is/ dismissed with okelse if (nresponse = idcancel)/ todo: place code here to handle when the dialog is/ dismissed with cancel/ since the dialog has been closed, return false s
溫馨提示
- 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至2030中國脫水設(shè)備行業(yè)發(fā)展研究與產(chǎn)業(yè)戰(zhàn)略規(guī)劃分析評估報告
- 2025至2030中國脂質(zhì)調(diào)節(jié)劑行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 重磅資訊!盲盒行業(yè)的下一個增長點:城市記憶產(chǎn)品解析
- 2025至2030中國羊毛角蛋白行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 2025至2030中國網(wǎng)絡(luò)訪問控制軟件行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 2025至2030中國網(wǎng)板行業(yè)深度研究及發(fā)展前景投資評估分析
- 2025至2030中國綠砂鑄造行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國經(jīng)導(dǎo)管二尖瓣修復(fù)裝置行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 人教版六年級上冊數(shù)學(xué)提分復(fù)習(xí)計劃
- 彈性排班制度在提升醫(yī)院運營效率中的作用
- 【南通】2025年江蘇省通州區(qū)西亭鎮(zhèn)招聘民政協(xié)理員1人筆試歷年典型考題
- 2025年商務(wù)英語(BEC)中級考試真題卷:商務(wù)英語模擬面試與應(yīng)對策略試題
- 光伏電站安全管理課件
- 編輯校對員筆試試題及答案
- 廣西玉林職業(yè)技術(shù)學(xué)院招聘教職人員考試真題2024
- 耳鼻喉護(hù)理教學(xué)查房
- 2025年七一黨課-作風(fēng)建設(shè)永遠(yuǎn)在路上學(xué)習(xí)教育黨課
- 2025年高考數(shù)學(xué)全國二卷試題真題及答案詳解(精校打?。?/a>
- 遼寧省文體旅集團(tuán)所屬兩家企業(yè)招聘筆試題庫2025
- 2025年江蘇省惠隆資產(chǎn)管理有限公司招聘筆試參考題庫含答案解析
- 消除“艾梅乙”醫(yī)療歧視-從我做起
評論
0/150
提交評論