計算機網絡課設-模擬Ethernet幀的發送過程_第1頁
計算機網絡課設-模擬Ethernet幀的發送過程_第2頁
計算機網絡課設-模擬Ethernet幀的發送過程_第3頁
計算機網絡課設-模擬Ethernet幀的發送過程_第4頁
計算機網絡課設-模擬Ethernet幀的發送過程_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、-. z.學 號:*課 程 設 計課程名稱計算機網絡學 院計算機科學與技術學院專 業軟件工程專業班 級*姓 名*指導教師*20142015學年 第2學期課程實踐設計任務書學生*:* 專業班級:* 指導教師: *東飛 工作單位: 計算機學院 題目二: 模擬Ethernet幀的發送過程 初始條件:1學習相關知識2C/C+/VC/VB/JAVA語言3PC機一臺要求完成的主要任務: 包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求編寫程序模擬Ethernet節點的數據發送流程。具體要求:1用兩個線程a和b來模擬Ethernet上的兩臺主機。2用一個雙字類型變量Bus來模擬總線將其初始化為0,并

2、且總線等于0時表示總線空閑。3兩個子線程向總線發送自己的數據。數據用該線程的線程號進展模擬,發送數據用線程號和Bus的或操作進展模擬即BusBus|ID,ID為該線程的線程號。4每臺主機需向總線上成功發送10次數據,如果其中*次數據發送失敗,則該線程完畢。5發送流程必須遵循CSMA/CD。隨即延遲算法中的沖突窗口取0.005。在數據發送成功即BusID后,報告ID send success,產生沖突即Bus!ID后報告ID send conllision,發送失敗即沖突計數值為0后報告ID send failure。隨著主機發送成功次數增加,報告其已發送成功的次數,如主機A發送成功數3。時間安

3、排:第一、二天:查閱資料,學習算法第三、四天:編程調試第五天:書寫報告指導教師簽名: 年 月 日系主任或責任教師簽名: 年 月 日目錄 TOC o 1-3 h z u HYPERLINK l _Toc422613926一、知識背景 PAGEREF _Toc422613926 h 5HYPERLINK l _Toc4226139271.網絡協議 PAGEREF _Toc422613927 h 5HYPERLINK l _Toc4226139282.以太網 PAGEREF _Toc422613928 h 5HYPERLINK l _Toc4226139293.CSMA/CD協議 PAGEREF _

4、Toc422613929 h 5HYPERLINK l _Toc4226139304.截斷二進制指數退避算法 PAGEREF _Toc422613930 h 6HYPERLINK l _Toc422613931二、程序設計分析 PAGEREF _Toc422613931 h 7HYPERLINK l _Toc4226139321.程序框架 PAGEREF _Toc422613932 h 8HYPERLINK l _Toc4226139332.環境介紹 PAGEREF _Toc422613933 h 8HYPERLINK l _Toc4226139343.數據構造 PAGEREF _Toc422

5、613934 h 9HYPERLINK l _Toc4226139354.子線程 PAGEREF _Toc422613935 h 9HYPERLINK l _Toc4226139365.獲得子線程ID PAGEREF _Toc422613936 h 9HYPERLINK l _Toc4226139376.發送數據 PAGEREF _Toc422613937 h 10HYPERLINK l _Toc422613938三、實驗截圖 PAGEREF _Toc422613938 h 11HYPERLINK l _Toc422613939四、課設總結 PAGEREF _Toc422613939 h 13

6、HYPERLINK l _Toc422613940五、程序清單 PAGEREF _Toc422613940 h 13知識背景網絡協議開放系統互連參考模型 (Open System Interconnect 簡稱OSI是國際標準化組織(ISO)和國際電報咨詢委員會(CCITT)聯合制定的開放系統互連參考模型,為開放式互連信息系統提供了一種功能構造的框架。它從低到高分別是:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層TCP/IP協議定義了一個在因特網上 傳輸的包,稱為IP數據報(IP Datagram)。這是一個與硬件無關的虛擬包, 由首部和數據兩局部組成,其格式如下圖。首部的前一局

7、部是固定長度,共20字節,是所有IP數據報必須具有的。在首部的固定局部的后面是一些可選字段, 其長度是可變的。首部中的源地址和目的地址都是IP協議地址。以太網以太網(Ethernet)指的是由*ero*公司創立并由*ero*、Intel和DEC公司聯合開發的基帶局域網規*,是當今現有局域網采用的最通用的通信協議標準。以太網絡使用CSMA/CD載波監聽多路訪問及沖突檢測技術,并以10M/S的速率運行在多種類型的電纜上。以太網與IEEE802.3系列標準相類似。包括標準的以太網10Mbit/s)、快速以太網100Mbit/s和10G10Gbit/s以太網。它們都符合IEEE802.3CSMA/CD

8、協議CSMA/CDCarrier Sense Multiple Access with Collision Detection即帶沖突檢測的載波監聽多路訪問技術。在傳統的共享以太網中,所有的節點共享傳輸介質。如何保證傳輸介質有序、高效地為許多節點提供傳輸效勞,就是以太網的介質訪問控制協議要解決的問題CSMA/CD是一種爭用型的介質訪問控制協議。它起源于美國夏威夷大學開發的ALOHA網所采用的爭用型協議,并進展了改良,使之具有比ALOHA協議更高的介質利用率。主要應用于現場總線Ethernet中。另一個改良是,對于每一個站而言,一旦它檢測到有沖突,它就放棄它當前的傳送任務。換句話說,如果兩個站都

9、檢測到信道是空閑的,并且同時開場傳送數據,則它們幾乎立刻就會檢測到有沖突發生。它們不應該再繼續傳送它們的幀,因為這樣只會產生垃圾而已;相反一旦檢測到沖突之后,它們應該立即停頓傳送數據。快速地終止被損壞的幀可以節省時間和帶寬。CSMA/CD控制方式的優點是:原理比擬簡單,技術上易實現,網絡中各工作站處于平等地位 ,不需集中控制,不提供優先級控制。但在網絡負載增大時,發送時間增長,發送效率急劇下降。CSMA/CD應用在 OSI 的第二層數據鏈路層它的工作原理是: 發送數據前 先偵聽信道是否空閑 ,假設空閑,則立即發送數據。假設信道忙碌,則等待一段時間至信道中的信息傳輸完畢后再發送數據;假設在上一段

10、信息發送完畢后,同時有兩個或兩個以上的節點都提出發送請求,則判定為沖突。假設偵聽到沖突,則立即停頓發送數據,等待一段隨機時間,再重新嘗試。其原理簡單總結為:先聽后發,邊發邊聽,沖突停發,隨機延遲后重發截斷二進制指數退避算法截斷二指數指數退避算法并不復雜。具體的退避算法如下:確定根本退避時間,它就是爭用期。以太網把爭用期定為51.2us。對于10Mb/s以太網,在爭用期內可發送512bit,即64字節。也可以說爭用期是512比特時間。1比特時間就是發送1比特所需要的時間。所以這種時間單位與數據率密切相關。從離散的整數集合0,1,中隨機取出一個數,記為r。重傳應推后的時間就是r倍的爭用期。上面的參

11、數k按下面的公式計算:k=Min重傳次數,10可見當重傳次數不超過10時,參數k等于重傳次數;但當重傳次數超過10時,k就不在增大而一直等于10。當重傳達16次仍不能成功時(這說明同時打算發送的數據站太多,以致連續發生沖突),則丟棄該,并向高層報告。例如,在第1次重傳時,k=1,隨機數r從整數0,1中選一個數。因此重傳推遲的時間是0或爭用期,在這兩個時間中隨機選擇一個。假設再發生碰撞,則重傳時,k=2,隨機數r就從整數0,1,2,3中選一個數。因此重傳推遲的時間是在0,2,4和6這4個時間中隨機抽取一個。同樣,假設在發生碰撞,則重傳時k=3,隨機數r就從整數0,1,2,3,4,5,6,7中選一

12、個數。以此類推。假設連續屢次發生沖突,就說明可能有較多的站參與爭用信道。但使用退避算法可使重傳需要推遲的平均時間隨重傳次數而增大這也稱為動態退避,因而減小發生碰撞的概率,有利于整個系統的穩定。我們還注意到,適配器每發送一個新的幀,就要執行一次CMSA/CD算法。適配器對過去發生過的碰撞并無記憶功能。因此,當好幾個適配器正在執行指數退避算法時,很可能有*一個適配器發送的新幀能夠碰巧立即成功插入到信道中,得到了發送權。我們可以看出,以太網在發送數據時,如果幀的前64字節之內沒有發生沖突,則后續的數據就不會發生沖突。換句話 說,如果發生沖突就立即中止發送,這時已經發送出去的數據一定小于64字節,因此

13、以太網規定了最短有效的幀長為64字節,凡長度小于64字節的幀都是由于 沖突而異常中止的無效幀。收到了這種無效幀就應當立即丟棄。程序設計分析程序框架環境介紹操作系統 Ubuntu 14.04數據構造wchar_t BUS=0; /雙字類型變量Bus來模擬總線wchar_t BUS=0; /雙字類型變量Bus來模擬總線const int conflictma*=16;const int conflictwindow=0.005;使用wchar_t 來表示雙字節。而在C+中推薦使用const來代替define子線程std:thread t1(call_thread,A);std:thread t1(

14、call_thread,A);std:thread t2(call_thread,B);t2.join();t1.join();C+11開場支持多線程編程,之前多線程編程都需要系統的支持,在不同的系統下創立線程需要不同的API如 pthread_create(),Createthread(),beginthread()等,使用起來都比擬復雜,C+11提供了新頭文 件、等用于支持多線程。在主函數中使用thread的構造函數可以調用子線程并且傳參數。主線程調用thread對象t1、t2的join函數等待線程執行完畢。獲得子線程IDstd:stringstream ss;std:stringstre

15、am ss;ss 10) return; else RepeatCounter+; /重發次數加一 if(RepeatCounter=16) printf(ID %s send failedn,ss.str().c_str(); return; else /使用截斷二進制退避算法 uniform_int_distribution randnum(0,pow(2,min(RepeatCounter,10)-1); default_random_engine e; printf(ID %s send conllisionn,ss.str().c_str(); auto sleeptime=rand

16、num(e); sleep(sleeptime); continue; 在此函數中 如果BuS=0 的時候才能執行,否則一直循環。使用位運算BUS|=Pid模擬線路上的電壓變化。使用uniform_int_distribution需要引入頭文件,這個是C+11中新的隨機數方式,在之前都是使用C語言中的方式。而是用這種方式,出現的rand數是真隨機數,而非C語言中的假隨機數。使用randnum(0,pow(2,min(RepeatCounter,10)-1)來實現截斷二進制指數退避算法。如果RepeatCounter=16,則放棄發送此包。注意,此處使用printf而非cout,因為cout不是

17、線程平安的,易出現字符串打斷現象。而printf是線程平安的。可以直接使用。在編譯這個程序的時候,需要使用g+ g+ -std=c+0* pthread main.cpp其中std=c+0*是指使用的是C+11的標準。 pthread 是指需要引入pthread 頭文件。然后在同文件夾下會生成a.out的程序。使用./a.out即可運行程序。實驗截圖課設總結這個課設的題目我非常喜歡,看似簡單的題目實際包含了很多東西:多線程、CSMA/CD協議、以及對截斷二進制指數退避算法的理解。在我做這個的時候,實際上之前很少使用多線程技術,尤其是C+11這種網上資料還比擬少的多線程庫。在做這個的時候,我分別

18、參考了C+標準庫-自學教程與參考手冊中對thread庫的說明,以及深入理解計算機系統中并發編程局部對pthread的講解。感覺收獲很大。在做這個課設的時候,我專門把開發環境搬到了Linu*上面去做。之前一直很少使用Ubuntu,但這次卻從搭建環境,編譯程序各局部,對Linu*有了一個初步的認識。以后也會將開發環境越來越多的向Linu*下遷移。在學習理論知識的時候,雖然對這局部很熟悉。但總感覺缺少了些什么,做了這個題目之后才有了更深的體會和理解。明白了這些協議的重要性。受益匪淺!程序清單#include #include #include #include #include #include #include using namespace std;wchar_t BUS=0; /雙字類型變量Bus來模擬總線const int conflictma*=16;const int conflictwindow

溫馨提示

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

評論

0/150

提交評論