版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 芙蓉學(xué)院 計算機網(wǎng)絡(luò)課程設(shè)計報告 課 題: 模擬Ethernet幀的發(fā)送過程 姓 名: 劉珊岑 學(xué) 號: 12170106 專業(yè)班級: 計算機科學(xué)與技術(shù) 1201 指導(dǎo)教師: 聶方彥 設(shè)計時間: 2015年上學(xué)期 地 點: E3-A501 評閱意見:評定成績: 指導(dǎo)老師簽名: 年 月 日目錄一、課程設(shè)計目的和意義1二、課程設(shè)計題目描述和要求1三、可行性分析21.技術(shù)可行性22.功能分析2四、幀結(jié)構(gòu)分析2幀的介紹2五. Ethernet幀的發(fā)送與接收流程41 .Ethernet幀的發(fā)送流程42 Ethernet幀的接收流程4六.詳細(xì)設(shè)計61.設(shè)計中的重點及難點62.核心代碼73.程序流程74.
2、完整程序8七.運行結(jié)果11八.總結(jié)13九.參考文獻(xiàn)13 一、課程設(shè)計目的和意義幀是在數(shù)據(jù)鏈路層數(shù)據(jù)進(jìn)行傳輸與交換的基本單位。構(gòu)造幀對于理解網(wǎng)絡(luò)協(xié)議的概念、協(xié)議執(zhí)行過程以及網(wǎng)絡(luò)問題處理的一般方法具有重要的意義。本次課程設(shè)計的目的是應(yīng)用數(shù)據(jù)鏈路層與介質(zhì)訪問控制層的知識,根據(jù)數(shù)據(jù)鏈路層的基本原理,通過構(gòu)造一個具體的Ethernet幀,從而深入理解網(wǎng)絡(luò)協(xié)議的基本概念與網(wǎng)絡(luò)問題處理的一般方法。二、課程設(shè)計題目描述和要求題目:編寫程序模擬Ethernet結(jié)點的數(shù)據(jù)發(fā)送流程設(shè)計要求:(1)用兩個線程a,b來模擬Ethernet上的兩臺主機。(2)用一個雙字類型變量Bus來模擬總線(將其初始化為“/0”,并且
3、總線等于“/0”時表示總線空閑)。(3)兩個子線程向總線發(fā)送自己的數(shù)據(jù)。數(shù)據(jù)用該線程的線程信號進(jìn)行模擬,發(fā)送數(shù)據(jù)用線程號和Bus的“或”操作進(jìn)行模擬(即Bus=Bus|ID,ID為該線程的線程號)。(4)每臺主機須向總線成功發(fā)送10次數(shù)據(jù),如果其中某次數(shù)據(jù)發(fā)送失敗,則該線程結(jié)束。(5)發(fā)送流程須遵循CSMA/CD。隨機延遲算法中的沖突窗口取0.005。在數(shù)據(jù)發(fā)送成功(即Bus=ID)后,報告“ID send success”,產(chǎn)生沖突(即Bus!=ID)后,報告“ID send collision”,發(fā)送失?。礇_突計數(shù)器值為0)后報告“ID send failure”。隨著主機發(fā)送成功次數(shù)的
4、增加,報告其已發(fā)送成功的次數(shù),如“主機A發(fā)送成功次數(shù)=3”。 三、可行性分析1.技術(shù)可行性 技術(shù)可行性分析包括:風(fēng)險分析、資源分析和技術(shù)分析。風(fēng)險分析的任務(wù)是,在給定的約束條件下,判斷能否設(shè)計并實現(xiàn)系統(tǒng)所需功能和性能。資源分析的任務(wù)是,論證是否具有系統(tǒng)開發(fā)所需的各類人員(管理人員和各類專業(yè)技術(shù)人員)、軟件、硬件資源和工作環(huán)境等。技術(shù)分析的任務(wù)是,論證當(dāng)前的科學(xué)技術(shù)是否支持系統(tǒng)開發(fā)的全過程。其中最主要的是分析技術(shù)條件是否能順利完成開發(fā)工作,硬、軟件能否滿足開發(fā)者的需要等。2.功能分析基本功能1.在一臺計算機上實現(xiàn),用多個程序或線程來模擬多個計算機2.使用一個共享數(shù)據(jù)區(qū)來模擬總線3.模擬實現(xiàn)載波監(jiān)
5、聽的過程 4. 模擬實現(xiàn)發(fā)生沖突的過程和沖突的處理機制四、幀結(jié)構(gòu)分析幀的介紹術(shù)語“幀”來源于串行線路上的通信。其中,發(fā)送者在發(fā)送數(shù)據(jù)的前后各添加特殊的字符,使它們成為一個幀。Ethernet從某種程序上可以被看作是機器這間的數(shù)據(jù)鏈路層連接。首先我們來認(rèn)識一下Ethernet幀結(jié)構(gòu),Ethernet V2.0規(guī)范和IEEE802.3標(biāo)準(zhǔn)中的Ethernet幀結(jié)構(gòu)有一些差別,這里我們按802.3標(biāo)準(zhǔn)的幀結(jié)構(gòu)進(jìn)行討論,圖一給出了Ethernet幀結(jié)構(gòu)圖。前導(dǎo)碼幀前定界符目的地址源地址長度字段數(shù)據(jù)字段校驗字段(7B)(1B)(2/6B)(2/6B)(2B)(長度可變)(4B)圖一 Ethernet幀結(jié)
6、構(gòu)如圖一所示,802.3標(biāo)準(zhǔn)的Ethernet幀結(jié)構(gòu)由6部分組成。(1)前導(dǎo)碼與幀前定界符字段前導(dǎo)碼由56位(7B)的1010101101010位序列組成。幀前定界符可以視為前導(dǎo)碼的延續(xù)。1B的幀前定界符結(jié)構(gòu)為10101011。如果將前導(dǎo)碼與幀定界符一起看,那么在62位1010101010位序列之后出現(xiàn)11。在11之后是Ethernet幀的目的地址字段。前導(dǎo)碼與幀前定界符主要是保證接收同步,這8B接收后不需要保留,也不記入幀頭長度中。(2)目的地址和源地址目的地址(DA)與法制地址(SA)分別表示幀的接收結(jié)點地址與發(fā)送結(jié)點的硬件地址。l 在Ethernet幀中,目的地址和法制地址字段長度可以是
7、2B或6B。目前的Ethernet都使用6B(即48位)長度的地址。l Ethernet幀的目的地址可以是單播地址(unicast address)、多播地址(multicast address)與廣播地址(broadcast address),目的地址的第一位為0表示單播地址,為1表示多播地址,目的地址為全1表示廣播地址。(3)長度字段8023標(biāo)準(zhǔn)中的幀用2B定義數(shù)據(jù)字段包含的字節(jié)數(shù)。協(xié)議規(guī)定,幀數(shù)據(jù)的最小長度為46B,最大長度為1500B。設(shè)置最小幀長度的目的是使每個接收結(jié)點能夠有足夠的時間檢測到?jīng)_突。(4)數(shù)據(jù)字段幀數(shù)據(jù)字段的最小長度為46B。如果幀的LLC數(shù)據(jù)少于46B,則應(yīng)將數(shù)據(jù)字段
8、填充至46B。填充字符是任意的,不計入長度字段值中。(5)檢驗字段幀校驗字段(FCS)采用32位的CRC校驗。校驗的范圍包括目的地址字段、源地址字段、長度字段、LLC數(shù)據(jù)字段。此處,為了簡便起見,采用8位的CRC校驗。CRC校驗的生成多項式為:G(x)= x8+ x2+x+1 某些幀結(jié)構(gòu)中還會包括幀類型字段,用來識別些帖所承載的數(shù)據(jù)的類型。當(dāng)一個幀到達(dá)指定的計算機時,操作系統(tǒng)根據(jù)幀類型決定用哪個協(xié)議軟件模塊對它進(jìn)行處理。自識別幀的主要優(yōu)點是,可以在同一物理網(wǎng)絡(luò)中使用多個協(xié)議而互不干擾。五. Ethernet幀的發(fā)送與接收流程1 .Ethernet幀的發(fā)送流程1)載波偵聽過程。Ethernet中
9、每個結(jié)點利用總線發(fā)送數(shù)據(jù),總線是每個結(jié)點共享的公共傳輸介質(zhì)。所以結(jié)點在發(fā)送一個幀前,必須偵聽總線是否空閑。由于Ethernet的數(shù)據(jù)采用曼徹斯特編碼方式,所以可以通過判斷總線電平是否跳變來確定總線是否空閑。若總線空閑,就可以啟動發(fā)送,否則繼續(xù)偵聽。2)沖突檢測。在數(shù)據(jù)發(fā)送過程中,可能會產(chǎn)生沖突(沖突是指總線上同時出現(xiàn)兩個或兩個以上的發(fā)送信號,他們疊加后的信號波形與任何發(fā)送結(jié)點的輸出波形都不相同)。因為可能有多個主機都在偵聽總線,當(dāng)它們偵聽到總線空閑時,就會往總線上發(fā)送數(shù)據(jù)。所以在發(fā)送數(shù)據(jù)的過程中,也應(yīng)該進(jìn)行沖突檢測,只要發(fā)現(xiàn)沖突就應(yīng)該立即停止發(fā)送數(shù)據(jù)。3)隨即延遲后重發(fā)。在檢測到?jīng)_突、停止發(fā)送
10、后,結(jié)點進(jìn)行隨機延遲后重發(fā)。若發(fā)16次后還沒成功,則宣告發(fā)送失敗,取消該幀的發(fā)送。隨機延遲的算法一般采用截斷的二進(jìn)制指數(shù)退避算法。當(dāng)出現(xiàn)線路沖突時,如果沖突的各站點都采用同樣的退避間隔時間,則很容易產(chǎn)生二次、三次的碰撞。因此,要求各個站點的退避間隔時間具有差異性。這要求通過退避算法來實現(xiàn)。當(dāng)一個站點發(fā)現(xiàn)線路忙時,要等待一個延時時間M,然后再進(jìn)行偵聽工作。延時時間M由以下算法決定:M=2k*R*a。其中a為沖突窗口值(沖突窗口為總線最大長度和電磁波在介質(zhì)中傳播速度比值的2倍),R為隨機數(shù),k的取值為k=min(n,16),n為該幀已被發(fā)送的次數(shù)。圖1給出了Ethernet幀的發(fā)送流程。2. Et
11、hernet幀的接收流程幀的接收流程大致可以分為以下三個步驟:1)檢查是否發(fā)生沖突,若發(fā)生沖突,則丟棄該幀;若沒有沖突,進(jìn)入下一步。2)檢查該幀的目的地址看是否可以接收該幀,若可以接收,則進(jìn)入下一步。3)檢查CRC檢驗和LLC數(shù)據(jù)長度。若都正確,接受該幀,否則丟棄。YNYY發(fā)送幀裝配幀總線忙啟動發(fā)送沖突?發(fā)送完成?發(fā)送成功沖突加強沖突次數(shù)加1等待后退延遲時間計算后退延遲發(fā)送失敗沖突次數(shù)>16?YNNN圖1 Ethernet幀的發(fā)送流程六.詳細(xì)設(shè)計1.設(shè)計中的重點及難點1)模擬沖突過程,在這個程序中不要使用任何線程同步機制。2)若程序中不能模擬出沖突,可以在某些地方加入延時。2.核心代碼i
12、nt i=0; /發(fā)送成功次數(shù)int CollisionCounter=16; /沖突計數(shù)器初始值為16double CollisionWindow=0.005; /沖突窗口值取值0.005int randNum=rand()%3; /隨機數(shù)loop: if(Bus=0) /總線空閑 Bus=Bus|ID1; /模擬發(fā)送包 Sleep(12); if (Bus=ID1) /無沖突 printf("%d Send Successnn",ID1); /發(fā)送成功 Bus=0; /內(nèi)存清零 CollisionCounter=16; /復(fù)原沖突計數(shù)器 Sleep(rand()%10)
13、; /隨即延時 i+; printf("主機a發(fā)送成功次數(shù)=%dnn",i); if(i<10) goto loop; /發(fā)送次數(shù)不夠10次,開始下一次發(fā)送 else printf("%d Send Collisionnn",ID1); /發(fā)生沖突 CollisionCounter- ; Bus=0 ; if(CollisionCounter>0) /隨即延遲重發(fā),延遲算法用截斷的二進(jìn)制指數(shù)退避算法 Sleep(randNum*(int)pow(2,(CollisionCounter>10)?10: CollisionCounter)*
14、CollisionWindow); goto loop; /下一次嘗試發(fā)送 else printf("%d Send Failurenn", ID1 ); else /總線忙 goto loop; /繼續(xù)載波偵聽 return 0;3.程序流程圖2 主程序流程圖開始啟動線程A啟動線程B結(jié)束4.完整程序/注意:編譯時需設(shè)置工程屬性(菜單中工程設(shè)置使用MFC作為靜態(tài)鏈接庫)#include "cmath" /#include "afxwin.h" /#include <iostream> /#include <conio
15、.h> /CWinThread * thread1, * thread2; /定義2個線程對象,分別代表a,bDWORD ID1, ID2, Bus = 0; /2線程ID,總線標(biāo)志UINT aThread(LPVOID pParam); /線程a,代表主機aUINT bThread(LPVOID pParam); /線程b,代表主機busing namespace std;int main(int argc, char* argv, char * envp)int nRetCode = 0;thread1 = :AfxBeginThread(aThread, NULL); /啟動線程a
16、ID1 = thread1->m_nThreadID;thread2 = :AfxBeginThread(bThread, NULL); /啟動線程bID2 = thread2->m_nThreadID;getch(); /主線程等待,按任意鍵退出程序return nRetCode;UINT aThread(LPVOID pParam)int i=0; /發(fā)送成功次數(shù)int CollisionCounter=2; /沖突計數(shù)器初始值為16double CollisionWindow=0.000001; /沖突窗口值取值0.005int randNum=rand()%3; /隨機數(shù)w
17、hile(1)if(Bus=0) /總線空閑Bus=Bus|ID1; /模擬發(fā)送包Sleep(12);if (Bus=ID1) /無沖突 printf("%d Send Successnn",ID1); /發(fā)送成功 Bus=0; /內(nèi)存清零 CollisionCounter=2; /復(fù)原沖突計數(shù)器 Sleep(rand()%10); /隨即延時 i+; printf("主機a發(fā)送成功次數(shù)=%dnn",i); if(i>=10) break;/發(fā)送次數(shù)不夠10次,開始下一次發(fā)送 elseprintf("%d Send Collisionnn
18、",ID1); /發(fā)生沖突 CollisionCounter-; /沖突次數(shù)加1 Bus=0; /沖突加強 停止發(fā)送數(shù)據(jù) 等待下面延時if(CollisionCounter>0) /隨即延遲重發(fā),延遲算法用截斷的二進(jìn)制指數(shù)退避算法Sleep(randNum*(int)pow(2,(CollisionCounter>10)?10: CollisionCounter)*CollisionWindow); continue; /下一次嘗試發(fā)送elseprintf("%d Send Failurenn",ID1); return 0;UINT bThread(
19、LPVOID pParam)int i=0; /發(fā)送成功次數(shù)int CollisionCounter=16; /沖突計數(shù)器初始值為16double CollisionWindow=0.005; /沖突窗口值取值0.005int randNum=rand()%3; /隨機數(shù)while(1)if(Bus=0) /總線空閑 Bus=Bus|ID2; /模擬發(fā)送包Sleep(12);if (Bus=ID2) /無沖突Sleep(rand()%10); printf("%d Send Successnn",ID2); /發(fā)送成功 Bus=0; /內(nèi)存清零 CollisionCounter=16; /復(fù)原沖突計數(shù)器 Sleep(rand()%10); /隨即延時 i+; printf("主機b發(fā)送成功次數(shù)=%dnn",i); if(i>=10) break;/發(fā)送次數(shù)不夠10次,開始下一次發(fā)送 elseprintf("%d Send Collisionnn",ID2); /發(fā)生沖突 CollisionCounter-; /沖突次數(shù)加1 Bus=0; /沖突加強 停止發(fā)送數(shù)據(jù) 等待下面延時if(Collision
溫馨提示
- 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年度母嬰護(hù)理服務(wù)與嬰幼兒用品團(tuán)購合同范本3篇
- 二零二五年度二手房過戶買賣合同(含智能家居安全)6篇
- 2024年統(tǒng)編版2024高二化學(xué)上冊階段測試試卷
- 2025年外研銜接版一年級語文上冊月考試卷
- 2024年滬科版選修1化學(xué)上冊月考試卷
- 二零二五年度城市安全PPP項目投資合同
- 2025年度物聯(lián)網(wǎng)應(yīng)用解決方案承包合同2篇
- 2025年滬教版三年級語文上冊月考試卷
- 2025年統(tǒng)編版八年級科學(xué)下冊月考試卷含答案
- 高效推進(jìn)研究生培養(yǎng)模式創(chuàng)新的策略與路徑
- 編譯原理考試題及答案匯總
- 【蘇州市軌道交通安全管理現(xiàn)狀、問題及優(yōu)化建議分析4300字(論文)】
- 國家開放大學(xué)2023年7月期末統(tǒng)一試《11132衛(wèi)生管理》試題及答案-開放本科
- 咽喉癌病歷書寫
- 2023年自然資源部所屬事業(yè)單位招聘(208人)筆試參考題庫(共500題)答案詳解版
- 自身免疫性肝炎診斷和治療指南(2021版)解讀
- 淺析小班幼兒角色游戲的年齡特點及游戲指導(dǎo)
- 全州疫苗接種與免疫規(guī)劃培訓(xùn)班講話稿
- 詩化小說示范課
- 有機合成化學(xué)3-基團(tuán)的保護(hù)與基團(tuán)的反應(yīng)性轉(zhuǎn)換
- 康復(fù)醫(yī)學(xué)治療技術(shù)(士)《基礎(chǔ)知識》測試題(含答案)
評論
0/150
提交評論