![封裝Ethernet幀課程設(shè)計_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/2/aeb482a0-c130-4c6a-a580-b95df9174131/aeb482a0-c130-4c6a-a580-b95df91741311.gif)
![封裝Ethernet幀課程設(shè)計_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/2/aeb482a0-c130-4c6a-a580-b95df9174131/aeb482a0-c130-4c6a-a580-b95df91741312.gif)
![封裝Ethernet幀課程設(shè)計_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/2/aeb482a0-c130-4c6a-a580-b95df9174131/aeb482a0-c130-4c6a-a580-b95df91741313.gif)
![封裝Ethernet幀課程設(shè)計_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/2/aeb482a0-c130-4c6a-a580-b95df9174131/aeb482a0-c130-4c6a-a580-b95df91741314.gif)
![封裝Ethernet幀課程設(shè)計_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/2/aeb482a0-c130-4c6a-a580-b95df9174131/aeb482a0-c130-4c6a-a580-b95df91741315.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 沈陽理工大學課程設(shè)計專用紙 No14目錄1 課程設(shè)計目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52 課程設(shè)計要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53 相關(guān)知識. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 4 課程設(shè)計分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
2、5 相關(guān)擴展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106 程序代碼. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147 運行結(jié)果與分析. . . . . . . . . . . . . . . . . . . . . . . . . . . .168 參考文獻. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171課程設(shè)計目的 幀是
3、在數(shù)據(jù)鏈路層中進行數(shù)據(jù)傳輸?shù)幕締挝?。熟悉幀結(jié)構(gòu)對于理解網(wǎng)絡(luò)協(xié)議的概念、網(wǎng)絡(luò)層次結(jié)構(gòu)與協(xié)議執(zhí)行過程具有重要的意義。本課程設(shè)計的主要目的是通過封裝Ethernet幀,了解Ethernet幀中各個字段的含義與用途。2 課程設(shè)計要求根據(jù)后面介紹的IEEE802.3幀結(jié)構(gòu),編寫程序?qū)⒅付〝?shù)據(jù)封裝為Ethernet幀。1)以命令行形式運行: EncapFrame input_file output_file 其中,EncapFrame為程序名,input_file為輸入數(shù)據(jù)文件,output_file為輸出文件。2) 輸出內(nèi)容:Ethernet幀的各字段內(nèi)容。3 相關(guān)知識1.幀 術(shù)語“幀”來源于串行線路
4、上的通信。其中,發(fā)送者在發(fā)送數(shù)據(jù)的前后分別添加特殊的字符,使它們成為一個幀。Ethernet從某種程度上可以被看做是機器之間的數(shù)據(jù)鏈路層連接。首先我們來認識一下幀結(jié)構(gòu),EthernerV2.0規(guī)范和IEEE802.3標準中的Ethernet幀結(jié)構(gòu)有一些差別,這里我們按802.3標準的幀結(jié)構(gòu)進行討論。圖為幀結(jié)構(gòu)圖前導碼幀前定界符目的地址源地址長度字段數(shù)據(jù)字段校驗字段(7B)(1B)(2/6B)(2/6B)(2B)(長度可變)(4B) 圖1.幀結(jié)構(gòu)圖如上圖所示,802.3標準的Ethernet幀結(jié)構(gòu)由7部分組成。(1) 前導碼與幀前定界符字段前導碼由56位(7B)的1010101010101010
5、位序列組成。幀前定界符可以視為前導碼的延續(xù)。1B的幀前定界符結(jié)構(gòu)為10101011.如果將前導碼與幀前定界符一起看,那么在62位1010101010位序列之后出現(xiàn)11。在11之后是Ethernet幀的目的地址字段。前導碼與幀前定界符主要是保證接收同步,這8B接收后不需要保留,也不記入幀頭長度中。(2) 目的地址和源地址目的地址(DA)與源地址(SA)分別表示幀的接收結(jié)點地址與發(fā)送結(jié)點的硬件地址。在Ethernet幀中,目的地址和源地址字段長度可以是2B或6B。目前的Ethernet都使用6B長度的地址。Ethernet幀的目的地址可以是單播地址、多播地址與廣播地址,目的地址的第一位為0表示單播
6、地址,為1表示多播地址,目的地址為全1則表示廣播地址。(3) 長度字段Ethernet幀用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,則應將數(shù)據(jù)字段填充只46B。填充字符是任意的,不計入長度字段值中。(5) 校驗字段幀校驗字段(FCS)采用32位的CRC校驗。校驗的范圍包括目的地址字段、源地址字段、長度字段、LLC數(shù)據(jù)字段。此處,為了簡便起見,采用8位的CRC校驗。CRC校驗的生成多項式為:G(X)=X8+X2+X
7、+1某些幀結(jié)構(gòu)中還會包括幀類型字段,用來識別此幀所承載的數(shù)據(jù)的類型。當一個幀到達指定的計算機時,操作系統(tǒng)根據(jù)幀類型決定用哪個協(xié)議軟件模塊對它進行處理。自識別幀的主要優(yōu)點是,可以在同一物理網(wǎng)絡(luò)中使用多個協(xié)議而互不干擾。2.CRC校驗 循環(huán)冗余編碼的編碼方式。 過程:在發(fā)送端,根據(jù)要傳送的k位二進制碼序列,以一定的規(guī)則產(chǎn)生一個校驗用的r位監(jiān)督碼,附在原始信息的后邊,構(gòu)成一個新的二進制碼序列,然后發(fā)送出去。在接收端,根據(jù)信息碼和CRC碼之間所遵循的規(guī)則進行檢驗,以確定傳送中是否出錯。(1) CRC編碼的代數(shù)學原理將一個碼組表示為一個多項式,碼組中的各碼元作為多項式的系數(shù)。設(shè)編碼前的原始信息多項式為P
8、(x),P(x)最高次冪加1等于k;生成多項式為G(x),它的最高次冪等于r;CRC多項式為R(x);編碼后的帶CRC的信息多項式為T(x)。發(fā)送方編碼的方法是:P(x)乘以xr,再除以G(x),得余式即為R(x)。接收方得解碼方法是:將T(x)除以G(x),如果余數(shù)為0,則說明傳輸中無錯誤發(fā)生,否則說明傳輸有錯誤。(2) CRC的基本實現(xiàn)以CRC-8(X8+X2+X1為例,它由多個移位寄存器和加法器組成。編碼、解碼前將各寄存器初始化為0,輸入位作為最右邊異或操作的輸入之一。三個寄存器上的移位操作同時進行,均為左移一位,左邊的寄存器的最左一位作為三個異或操作的輸入之一。每次移位時,最右邊的寄存
9、器內(nèi)容作為中間異或操作的輸入之一,中間的寄存器的內(nèi)容作為最左邊異或操作輸入之一,各個異或操作的結(jié)果作為與它左邊那個寄存器的移入位。重復以上步驟,每輸入一位就做一次移位操作,直到輸入了所有要計算的數(shù)據(jù)為止。這時,這個寄存器組中的數(shù)據(jù)就是CRC-8的結(jié)果。CRC的工作原理是:CRC在發(fā)送端編碼和接收端校驗時,都可以利用事先約定的生成多項式G(x)來得到,K位要發(fā)送的信息位可對應于一個(k-1)次多項式K(x),r位冗余位對應于一個(r-1)次多項式R(x),由r位冗余位組成的n=k+r位碼對應于一個(n-1)次多項式T(x)=Xr*K(x)+R(x)。(3) 循環(huán)冗余校驗碼的特點CRC校驗碼的檢錯
10、能力很強,不僅能檢查出離散錯誤,還能檢查出突發(fā)錯誤.CRC校驗碼具有以下的檢錯能力:CRC校驗碼可檢測出所有單個錯誤,所有奇數(shù)位錯誤,所有雙位的錯誤,所有小于、等于校驗位長度的突發(fā)錯誤。4 課程設(shè)計分析1.填充幀頭部字段要完成一次幀封裝的過程,首先要完成的是幀頭部的裝入,這一過程只要將前導碼、定界符、目的地址、源地址、長度字段的相應數(shù)值按順序?qū)懭刖涂梢粤?。其中,長度字段的值即為要發(fā)送的數(shù)據(jù)的實際長度。有以下兩種方式來獲得長度字段的值。方法一:While(!in.eof()in.get(a);bufj=a;j+;方法二:infile.open(argv1,ios:binary);infile.s
11、eekg(0,ios:end);short length=(short)infile.tellg();file.put(char(length/256);file.put(char(length%256);2.填充數(shù)據(jù)字段在填充數(shù)據(jù)字段的過程中要注意的主要問題是數(shù)據(jù)字段的長度。802.3標準中規(guī)定了幀數(shù)據(jù)字段的最小長度為46B,最大長度為1500B。如果數(shù)據(jù)不足46B,則需要通過填充0來補足;若數(shù)據(jù)長度超過1500B,則將超過部分封裝入下一個幀進行發(fā)送。由于幀頭部分應該包括6B目的地址、6B源地址、2B長度字段以及4B幀校驗字段,因此幀頭部分長度為18B。前導碼與幀前定界符不計入幀頭長度中。那
12、么,Ethernet幀的最小長度為64B,最大長度為1518B。填充數(shù)據(jù)字段的代碼如下:if(len=1500) len=0;if(len46)for(i=len;i1;if(a) regs.val=0x8408;2.字節(jié)型算法數(shù)字通信系統(tǒng)一般是對一幀數(shù)據(jù)進行CRC校驗,而字節(jié)是幀的基本單位。最常用的是一種按字節(jié)查表的快速算法。該算法基于這樣一個事實:計算本字節(jié)后的CRC碼,等于上一字節(jié)CRC右移8位和本字節(jié)之和再與上一字節(jié)余式CRC碼的低8位左移8位相加后所求得的CRC碼。如果我們把8位二進制序列數(shù)的CRC全部計算出來,放在一個表里,那么編碼時只要從表中查找對應的值進行處理即可。算法如下:1
13、) 寄存器組初始化為全1。2) 寄存器組向右移動一個字節(jié)。3) 剛移出的那個字節(jié)與數(shù)據(jù)字節(jié)進行異或運算,得出一個指向值表的索引。4) 將索引所指的表值與寄存器組做異或運算。5) 數(shù)據(jù)指針加1,如果數(shù)據(jù)沒有全部處理完,則重復步驟2.6) 寄存器組取反,得到CRC,附加在數(shù)據(jù)之后。驗證算法:1) 寄存器組初始化為全1.2) 寄存器組向右移動一個字節(jié)。3) 剛移出的那個字節(jié)與數(shù)據(jù)字節(jié)進行異或運算,得出一個指向值表的索引。4) 將索引所指的表值與寄存器組做異或運算。5) 數(shù)據(jù)指針加1,如果數(shù)據(jù)沒有全部處理完,則重復步驟2.6) 判斷寄存器組的值是否等于“Magic Value”,若相等則通過,7) 否
14、則失敗。圖2程序流程圖: 圖3.CRC計算流程圖6 程序代碼#include#includevoid main(int argc,char*argv)if(argc!=3)cout請按以下格式輸入命令行: framer inputfile outputfileendl;return;fstream file;file.open(argv2,ios:in|ios:out|ios:binary|ios:trunc);for(int i=0;i7;i+) file.put(char(0xaa);file.put(char(0xab);long pCrcs=file.tellp();char dst_
15、addr6=char(0x00),char(0x00),char(0x80),char(0x1a),char(0xe6),char(0x65);file.write(dst_addr,sizeof(dst_addr);ifstream infile;infile.open(argv1,ios:binary);infile.seekg(0,ios:end);short length=(short)infile.tellg();file.put(char(length/256);file.put(char(length%256);char*data=new charlength;infile.se
16、ekg(0,ios:beg);infile.read(data,length);infile.close();delete data;if(length46) for(int i=0; i0;i=1)if(crc&0x80)crc=1;if(temp&i) crc=0x01;crc=0x07;elsecrc=1;if(temp&i) crc=0x01;file.seekg(pCrc,ios:beg);file.put(crc);while(!file.eof()unsigned char temp;file.get(temp);couthex(short)tempendl;cout幀文件 argv2封裝完成end
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級數(shù)學下冊蘇教版《圓的周長》聽評課記錄
- 一年級安全工作計劃
- 北師大版道德與法治九年級上冊第1課 第1站《我們生活的變遷》聽課評課記錄1
- 南京學區(qū)房出租協(xié)議書范本
- 培訓老師人事聘用合同范本
- 湘師大版道德與法治九年級下冊2.3《奔向全面小康》(第2課時)聽課評課記錄
- 滁州九年級聯(lián)考數(shù)學試卷
- 從化區(qū)九年級數(shù)學試卷
- 初中音樂八年級說課稿【7篇】
- 九年級英語上冊 Unit 7 Teenagers should be allowed to choose their own clothes Section B(1a-1e)說課稿(新版)人教新目標版
- 數(shù)學-河南省三門峽市2024-2025學年高二上學期1月期末調(diào)研考試試題和答案
- 二零二五版電力設(shè)施維修保養(yǎng)合同協(xié)議3篇
- 最經(jīng)典凈水廠施工組織設(shè)計
- VDA6.3過程審核報告
- 《心臟血管的解剖》課件
- 小學生讀書卡模板
- 8.3 摩擦力 同步練習-2021-2022學年人教版物理八年級下冊(Word版含答案)
- 生理學教學大綱
- 精美唯美淡雅個人求職簡歷模板 (7)
- 環(huán)保鐵1215物質(zhì)安全資料表MSDS
- “君子教育”特色課程的探索
評論
0/150
提交評論