計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)-幀封裝_第1頁
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)-幀封裝_第2頁
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)-幀封裝_第3頁
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)-幀封裝_第4頁
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)-幀封裝_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告題目:幀封裝問題描述(把你所選的題目及要求說一下)幀封裝,通過輸入目的地址、源地址和數(shù)據(jù),根據(jù)數(shù)據(jù)鏈路層的基本原理,構(gòu)造一個(gè)具體的IEEE802.3格式的幀。軟件環(huán)境:MicrosoftVisualC++6.0概要設(shè)計(jì)(抽象數(shù)據(jù)類型定義) 幀的組成比較簡單,由6個(gè)字段組成。如圖所示前導(dǎo)碼(8)目的地址(6)源地址(6)長度(2)數(shù)據(jù)(46~1500)校驗(yàn)和(4)(1)前導(dǎo)符:由7字節(jié)的前同步碼和1字節(jié)的幀起始定界符構(gòu)成。前同步碼:這個(gè)字段有7個(gè)字節(jié)(56位)交替出現(xiàn)的1和0,它的作用就是提醒接收系統(tǒng)有幀的到來,以及使到來的幀與計(jì)時(shí)器進(jìn)行同步。前同步碼其實(shí)是在物理層添加上去的,并不是(正式的)幀的一部分。前同步碼的目標(biāo)允許物理層在接收到實(shí)際的幀起始符之前檢測載波,并且與接收到的幀時(shí)序達(dá)到穩(wěn)定同步。幀起始定界符:這個(gè)字段用1字節(jié)(10101011)作為幀開始的信號(hào),表示一幀的開始。最后兩位是11,表示下面的字段是目的地址。(2)目的地址(DA)48位,表示幀準(zhǔn)備發(fā)往目的站的地址,共6個(gè)字節(jié),可以是單址(代表單個(gè)站)、多址(代表一組站)或全地址(代表局域網(wǎng)上的所有站)。(3)源地址(SA)48位,表明該幀的數(shù)據(jù)是哪個(gè)網(wǎng)卡發(fā)的,即發(fā)送端的網(wǎng)卡地址。(4)長度,表示幀的數(shù)據(jù)部分長度占兩個(gè)字節(jié)。(5)數(shù)據(jù)字段的最小長度必須為46字節(jié)以保證幀長至少為64字節(jié),這意味著傳輸一字節(jié)信息也必須使用46字節(jié)的數(shù)據(jù)字段:如果填入該字段的信息少于46字節(jié),該字段的其余部分也必須進(jìn)行填充。數(shù)據(jù)字段的默認(rèn)最大長度為1500字節(jié)。(6)幀檢驗(yàn)序列(FCS)是32位冗余檢驗(yàn)碼(CRC),檢驗(yàn)除前導(dǎo)、SFD和FCS以外的內(nèi)容。當(dāng)發(fā)送站發(fā)出幀時(shí),一邊發(fā)送,一邊逐位進(jìn)行CRC檢驗(yàn)。最后形成一個(gè)32位CRC檢驗(yàn)和填在幀尾FCS位置中一起在媒體上傳輸。接收接收后,從DA開始同樣邊接收邊逐位進(jìn)行CRC檢驗(yàn)。最后接收站形成的檢驗(yàn)和若與幀的檢驗(yàn)和相同,則表示媒體上傳輸幀未被破壞。反之,接收站認(rèn)為幀被破壞,則會(huì)通過一定的機(jī)制要求發(fā)送站重發(fā)該幀。 數(shù)據(jù)幀結(jié)構(gòu): typedefstruct{ //前導(dǎo)碼 unsignedcharprefix[8]; //目標(biāo)地址 unsignedchartargetLocation[6]; //源地址 unsignedcharsourceLocation[6]; //數(shù)據(jù) unsignedchardataLength[2]; unsignedchardata[1500]; intlength; //FCS unsignedcharfcs[4]; }frameStruct;三、詳細(xì)設(shè)計(jì)(主要算法和函數(shù)間的調(diào)用關(guān)系) CRC校驗(yàn)算法:得到要校驗(yàn)的數(shù)M,除數(shù)是P,余數(shù)R依次向左移動(dòng)M,直到位數(shù)和P相等且最高位為1,異或取得結(jié)果RM向左移動(dòng)一位加到R的最低位,判斷R的位數(shù)是否與P相等且最高位是否為1,如果不是,執(zhí)行步驟2當(dāng)移到M的最低位,異或所得結(jié)果即為校驗(yàn)位。//計(jì)算校驗(yàn)位intcoculateRemainder(intremainder,intbyte){ //檢驗(yàn)數(shù) intcheckNum=0x80; intcurrentBit=0; inti; for(i=0;i<8;i++,checkNum>>=1) { currentBit=(byte&checkNum)==0?0X0:0X1; //首先將余數(shù)左移1位,并把當(dāng)前位添加到余數(shù)的最低位 remainder<<=1; remainder+=currentBit; //判斷余數(shù)最高位是否為0 //若為1,則將除數(shù)和余數(shù)進(jìn)行異或操作,將結(jié)果保存為余數(shù) //判斷最高位是否為1 if((remainder&0X8000)!=0) { //為1就與除數(shù)異或 remainder=remainder^P; } } returnremainder;}四、調(diào)試分析(調(diào)式過程中出現(xiàn)的問題及如何改正) CRC算法的實(shí)現(xiàn),通過翻閱書籍和上網(wǎng)查詢得到最終結(jié)果 十進(jìn)制轉(zhuǎn)換為二進(jìn)制,用到了遞歸思想//十進(jìn)制轉(zhuǎn)二進(jìn)制voidtenTotwo(intn){ if(n==0) return; tenTotwo(n/2); printf("%d",n%2);}五、心得體會(huì)(組內(nèi)成員的分工及實(shí)習(xí)期間的體會(huì))通過這次課程設(shè)計(jì),我們查閱了一些幀封裝的知識(shí),對(duì)幀及其封裝的方法有了一定程度的了解和掌握。從最開始對(duì)幀的一個(gè)模糊的印象到對(duì)幀的結(jié)構(gòu)的掌握,有了很大的收獲,并且使幀的封裝得以實(shí)現(xiàn)。它不僅鞏固了我們所學(xué)過的知識(shí),而且使我們懂得了理論與實(shí)際相結(jié)合是很重要的。只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,才能提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在該設(shè)計(jì)過程中我

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論