




已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
網(wǎng)絡(luò)協(xié)議工程實驗報告一 題目描述1. 將6.3節(jié)描述的協(xié)議條件嗎改為:報文和應(yīng)答均會出錯,且都丟失,接收方?jīng)]有無限能力,這就是我們通常所說的使用的停等協(xié)議。請用PROMELA進(jìn)行描述,并用SPIN模擬運行,一般性驗證,無進(jìn)展循環(huán)驗證和認(rèn)為假如錯誤進(jìn)行驗證。2. 請根據(jù)圖6-16寫出著名的AB協(xié)議的PROMELA描述,并驗證“A獲取的每一個報文至少一次是正確的,而B接收的每一個報文至多有一次是正確的(Every messages fetched by A is received error-free at least once and accepted at most once by B)”。二安裝環(huán)境安裝spin之前先要安裝dev-cpp并配置好系統(tǒng)環(huán)境變量。此外,還需要安裝ActiveTcl8.5.11.1.295590-win32-ix86-threaded.exe,我們所用的有窗口界面的xspin430.tcl需要用到tcl8.5。下載pc_spin430.zip文件,解壓pc_spin430.zip然后將spin.exe拷貝到例如d: spin下,安裝完后還需要配置系統(tǒng)環(huán)境變量,主要是添加gcc的目錄。一. 分析停止等待協(xié)議報文和應(yīng)答均會出錯,丟失,接收方?jīng)]有無限接收能力。我們用簡單的停等協(xié)議來解決數(shù)據(jù)的可靠傳輸問題,協(xié)議主要過程為:發(fā)送方發(fā)送報文,等待應(yīng)答,如果是肯定應(yīng)答則發(fā)送下一幀,如果是否定應(yīng)答或者應(yīng)答幀出錯則重發(fā);接收方接收報文,如果是期望的報文則發(fā)送肯定應(yīng)答,否則發(fā)送否設(shè)應(yīng)答,給報文加序號。我們將此協(xié)議稱為RTD4.0。在RTD3.0的基礎(chǔ)上,在mtype = Msg, Ack, Nak, Err, Mis;中添加Mis來模擬報文丟失的情況。在發(fā)送端通過InCh?Mis(0,0)來模擬發(fā)送報文丟失,在接收端通過InCh?Mis(0,0)模擬應(yīng)答報文丟失。如果報文丟失,則需要重發(fā)報文。AB協(xié)議AB(Alternating Bit)協(xié)議是最早的端到端通信協(xié)議之一。在AB協(xié)議系統(tǒng)中,包含有發(fā)送端和接受端兩個實體。發(fā)送端協(xié)議實體從發(fā)送方獲取一個報文,將序號寄存器值賦給報文,然后向接收端實體發(fā)出報文,發(fā)送方發(fā)出報文之后啟動超時時鐘,等待認(rèn)可報文。如果在給定的時間內(nèi)沒有收到認(rèn)可報文,則重發(fā)該報文。如果收到認(rèn)可報文,其序號與發(fā)出報文序號相同,則序號寄存器的內(nèi)容加1模2,然后發(fā)送端實體從發(fā)送方用戶獲取下一個報文;接收端協(xié)議實體在收到報文后,如果確認(rèn)報文無錯誤,并且序號和序號寄存器的值相等,則向發(fā)送端實體發(fā)送認(rèn)可報文(認(rèn)可報文的序號值等于接收報文的序號值),然后將報文遞交給接收方用戶,序號寄存器的內(nèi)容加1模2。如果接收的報文有錯誤,或者序號不正確,則丟失報文。四實驗程序 停止等待協(xié)議:#define MAXSEQ 5mtype=Msg,Ack,Nak,Err,Miss;chan SenderToReceiver=1ofmtype,byte,byte;chan ReceiverToSender=1ofmtype,byte,byte;proctype SENDER(chan InCh,OutCh)byte SendData; /*發(fā)送的數(shù)據(jù)*/byte SendSeq; /*發(fā)送序號*/byte ReceivedSeq; /*接收到的報文序號*/SendData=MAXSEQ-1;do :SendData=(SendData+1)%MAXSEQ;again:if :OutCh!Msg(SendData,SendSeq) /*正常發(fā)送數(shù)據(jù)*/ :OutCh!Err(0,0) /*模擬出現(xiàn)無碼*/ :OutCh!Miss(0,0) /*模擬丟失*/ fi;if :timeout - goto again :InCh?Miss(0,0) -goto again /*模仿ack丟失,重發(fā)報文*/ :InCh?Err(0,0)-goto again /*收到ack誤碼,重發(fā)報文*/ :InCh?Nak(ReceivedSeq,0)- /*收到否定確認(rèn),重發(fā)報文*/ end1:goto again :InCh?Ack(ReceivedSeq,0)-if /*受到肯定應(yīng)答,且序號正確發(fā)送下一個報文*/ :(ReceivedSeq=SendSeq)-goto progress :(ReceivedSeq!=SendSeq)-end2:goto again /*受到肯定應(yīng)答,但序號不正確,重發(fā)前一個報文*/fifi;progress:SendSeq=1-SendSeq; /*產(chǎn)生下一個報文的發(fā)送序列*/od;proctype RECEIVER(chan InCh,OutCh)byte ReceivedData; /*接收到的報文數(shù)據(jù)*/byte ReceivedSeq; /*接收到的報文序號*/ byte ExpectedData; /*期望收到的報文數(shù)據(jù)*/byte ExpectedSeq; /*期望收到的報文序號*/do :InCh?Msg(ReceivedData,ReceivedSeq)- /*接收到正常的報文*/ if:(ReceivedSeq=ExpectedSeq)- /*報文按序到達(dá),發(fā)送肯定確認(rèn)*/assert(ReceivedData=ExpectedData);progress:ExpectedSeq=1-ExpectedSeq;ExpectedData=(ExpectedData+1)%MAXSEQ;if :OutCh!Miss(0,0); /*模擬ack丟失*/ :OutCh!Ack(ReceivedSeq,0); :OutCh!Err(0,0); /*模擬ack出現(xiàn)誤碼*/ExpectedSeq=1-ExpectedSeq;ExpectedData=(ExpectedData+4)%MAXSEQ;fi:(ReceivedSeq!=ExpectedSeq)-if :OutCh!Nak(ReceivedSeq,0); /*報文失序到達(dá),發(fā)送否定確認(rèn)*/ :OutCh!Err(0,0); /*模擬nak出現(xiàn)無碼*/ fifi:InCh?Err(0,0)-OutCh!Nak(ReceivedSeq,0); /*接收到有誤碼的報文*/:InCh?Miss(0,0) -skip; od;initrun SENDER(ReceiverToSender,SenderToReceiver);run RECEIVER(SenderToReceiver,ReceiverToSender);AB協(xié)議mtype=a,b,err;chan AtoB=1ofmtype,byte;chan BtoA=1ofmtype,byte;proctype A(chan InCh,OutCh)s5: if :OutCh!a(0); goto s4; :OutCh!err(0); fi;s4: if:InCh?err(0)-goto s5;:InCh?b(0)-goto s1;:InCh?b(1)-goto s1; fi;s1: if:OutCh!a(1);:OutCh!err(0);fi;goto s2;s2: if:InCh?err(0);goto s5;:InCh?b(1);goto s1;:InCh?b(0);goto s3;fi;s3: InCh?a(1);goto s2;proctype B(chan InCh,OutCh)s4:if :InCh?err(0);goto s5; :InCh?a(0);goto s1; :InCh?a(1);goto s1; fi;s1:if:OutCh!b(1);:OutCh!err(0);fi;goto s2;s2:if :InCh?err(0);goto s5; :InCh?a(0);goto s3; :InCh?a(1);goto s1;
溫馨提示
- 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年中國空壓機機械市場現(xiàn)狀分析及前景預(yù)測報告
- 2025年中國真皮轎車座套項目投資可行性研究報告
- 2025年中國男裝襯衫項目投資可行性研究報告
- 2025年中國電流電壓雙用互感器項目投資可行性研究報告
- 2025年中國電動液壓鉚接機項目投資可行性研究報告
- 2025年中國玻璃鋼餐桌/椅市場調(diào)查研究報告
- 2025年中國特藝品檀香扇項目投資可行性研究報告
- 2025年中國烹飪成套裝置數(shù)據(jù)監(jiān)測報告
- 中學(xué)生性教育
- 公務(wù)員五進(jìn)面試題及答案
- 創(chuàng)業(yè)基礎(chǔ)與實務(wù)-大連理工大學(xué)中國大學(xué)mooc課后章節(jié)答案期末考試題庫2023年
- 2023年廣西壯族自治區(qū)中考?xì)v史真題評析
- 氣瓶托管協(xié)議書
- 青海電廠漂珠安全要求
- 2022-2023學(xué)年天津市重點中學(xué)高三(下)第五次月考物理試卷-普通用卷
- 第一單元大單元教學(xué)設(shè)計 統(tǒng)編版高中語文選擇性必修中冊
- 應(yīng)用PDCA管理工具提高病案歸檔率
- 幼兒園課題-基于商城游戲室的大班幼兒分享交流的策略研究
- Unit6知識點講解(帶練習(xí))課件-人教版八年級英語下冊
- 新外研版三年級英語下冊期中測試卷(匯編)
- GB/T 33084-2016大型合金結(jié)構(gòu)鋼鍛件技術(shù)條件
評論
0/150
提交評論