版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上山西大學軟件學院 數(shù)字通訊與計算機網絡課程設計報告書題 目 Ethernet的幀封裝(按802.3標準) 專 業(yè) 軟件工程 班 級 1528 姓 名 王鑄 學 號 3 指導教師 吳勇 2016 年 12 月 28 日目錄一、設計題目及需求分析.3二、總體設計.4 1.幀結構分析.4 2.CRC校驗分析.63、 詳細設計.8. 1.幀封裝過程.8 (1)填充幀頭部字段.8 (2)填充數(shù)據(jù)字段.8 (3)CRC校驗.9 2.源程序代碼.11四、測試.14五、總結.15六、參考資料.151、 設計題目及需求分析設計題目:Ethernet的幀封裝(按802.3標準)需求分析:
2、編寫程序,根據(jù)給出的原始數(shù)據(jù),組裝一個802.3標準格式的幀,要求程序為命令行程序,如:framer inputfile outputfile其中,framer 為可執(zhí)行文件名framer.exe,inputfile為原始數(shù)據(jù)文件,outputfile為輸出結果文件。操作系統(tǒng)及所使用的語言和編譯環(huán)境不限。2、 總體設計 1.幀結構分析 術語“幀”來源于串行線路上的通信。其中,發(fā)送者在發(fā)送數(shù)據(jù)的前后分 別添加特殊的字符,使它們成為一個幀。Ethernet從某種程度上可以被看做是機器之間的數(shù)據(jù)鏈路層連接。 首先我們來認識一下幀結構,EthernerV2.0規(guī)范和IEEE802.3標準中的Ether
3、net幀結構有一些差別,這里我們按802.3標準的幀結構進行討論。圖為幀結構圖 前導碼 幀前定界符 目的地址 源地址 長度字段 數(shù)據(jù)字段 校驗字段 (7B) (1B) (2/6B) (2/6B) (2B) (長度可變) (4B)如上圖所示,802.3標準的Ethernet幀結構由7部分組成。 (1) 前導碼與幀前定界符字段 前導碼由56位(7B)的位序列組成。幀前定界符可以視為前導碼的延續(xù)。1B的幀前定界符結構為.
4、60; 如果將前導碼與幀前定界符一起看,那么在62位1010位序列之后出現(xiàn)11。在11之后是Ethernet幀的目的地址字段。前導碼與幀前定界符主要是保證接收同步,這8B接收后不需要保留,也不記入幀頭長度中。 (2) 目的地址和源地址 目的地址(DA)與源地址(SA)分別表示幀的接收結點地址與發(fā)送結點的硬件地址。 在Ethernet幀中,目的地址和源地址字段長度可以是2B或6B。目前的Ethernet都使用6B長度的地址。 Ethernet幀的目的地址可以是單播地址、多播地址與廣播地址,目的地址的第一位為0表示單播地址,為1表示多播地址,
5、目的地址為全1則表示廣播地址。 (3) 長度字段 Ethernet幀用2B定義數(shù)據(jù)字段包含的字節(jié)數(shù)。協(xié)議規(guī)定,幀數(shù)據(jù)的最小長度為46B,最大長度為1500B。設置最小幀長度的目的是使每個接收結點能夠有足夠時間檢測到沖突。 (4) 數(shù)據(jù)字段 幀數(shù)據(jù)字段的最小長度為46B。如果幀的LLC數(shù)據(jù)少于46B,則應將數(shù)據(jù)字段填充只46B。填充字符是任意的,不計入長度字段值中。 (5) 校驗字段 幀校驗字段(FCS)采用32位的CRC校驗。校驗的范圍包括目的地址字段、源地址字段、長度字段、LLC數(shù)據(jù)字段。
6、0; 此處,為了簡便起見,采用8位的CRC校驗。CRC校驗的生成多項式為: G(X)=X8+X2+X+1 某些幀結構中還會包括幀類型字段,用來識別此幀所承載的數(shù)據(jù)的類型。當一個幀到達指定的計算機時,操作系統(tǒng)根據(jù)幀類型決定用哪個協(xié)議軟件模塊對它進行處理。自識別幀的主要優(yōu)點是,可以在同一物理網絡中使用多個協(xié)議而互不干擾。2.CRC校驗 循環(huán)冗余編碼的編碼方式。 過程:在發(fā)送端,根據(jù)要傳送的k位二進制碼序列,以一定的規(guī)則產生一個校驗用的r位監(jiān)督碼,附在原始信息的后
7、邊,構成一個新的二進制碼序列,然后發(fā)送出去。在接收端,根據(jù)信息碼和CRC碼之間所遵循的規(guī)則進行檢驗,以確定傳送中是否出錯。 (1) CRC編碼的代數(shù)學原理 將一個碼組表示為一個多項式,碼組中的各碼元作為多項式的系數(shù)。設編碼前的原始信息多項式為P(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ā)生,
8、否則說明傳輸有錯誤。 (2) CRC的基本實現(xiàn) 以CRC-8(X8+X2+X1為例,它由多個移位寄存器和加法器組成。編碼、解碼前將各寄存器初始化為0,輸入位作為最右邊異或操作的輸入之一。三個寄存器上的移位操作同時進行,均為左移一位,左邊的寄存器的最左一位作為三個異或操作的輸入之一。每次移位時,最右邊的寄存器內容作為中間異或操作的輸入之一,中間的寄存器的內容作為最左邊異或操作輸入之一,各個異或操作的結果作為與它左邊那個寄存器的移入位。重復以上步驟,每輸入一位就做一次移位操作,直到輸入了所有要計算的數(shù)據(jù)為止。這時,這個寄存器組中的數(shù)據(jù)就是CRC-8的結果。
9、; 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校驗碼的檢錯能力很強,不僅能檢查出離散錯誤,還能檢查出突發(fā)錯誤.CRC校驗碼具有以下的檢錯能力:CRC校驗碼可檢測出所有單個錯誤,所有奇數(shù)位錯誤,所有雙位的錯誤,所有小于、等于校驗位長度的突發(fā)錯誤。 3、 詳細設計1.幀封裝
10、過程(1)填充幀頭部字段 要完成一次幀封裝的過程,首先要完成的是幀頭部的裝入,這一過程只要將前導碼、定界符、目的地址、源地址、長度字段的相應數(shù)值按順序寫入就可以了。其中,長度字段的值即為要發(fā)送的數(shù)據(jù)的實際長度。有以下兩種方式來獲得長度字段的值。 方法一: While(!in.eof() in.get(a); bufj=a; j+; 方法二: infile.open(argv1,ios:binary); infile.seekg(0,ios:end); short lengt
11、h=(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(len<46) for(i=len;i<46;i+) fr.datai=0x00; data_len=len; (3)CRC校驗 幀封裝的最后一步就是對數(shù)據(jù)進行校驗,并將校驗結果記入幀校驗字段。CRC編碼實際上就是一個循環(huán)移位的模二運算。流程描述為: 把CRC中的值置為0 在原始數(shù)據(jù)input后
13、添加8個0 while(數(shù)據(jù)未處理完) begin if(crc首位是1) crc=crc XOR 把crc中的值左移一位,從input中讀取一位新的數(shù)據(jù)并置于crc的0位 endcrc中的后8位就是經過CRC-8校驗的余數(shù)。這樣,我們只需要看后8位即可,因此上面流程可以簡化。構造一個8位的寄存器crc,初始值為0,數(shù)據(jù)依次移入crc的0位,同時crc的7位移出。當移出的數(shù)據(jù)為1時,crc才和進
14、行XOR運算;移出數(shù)據(jù)為0時,不做運算。每次crc中數(shù)據(jù)位為1時還需要對crc0位進行處理 偽代碼: while(數(shù)據(jù)未處理完) begin if(crc的首位是1) crc左移1位 crc=crc XOR else crc左移1位 &
15、#160;if(從input中讀入的新的數(shù)據(jù)為1) End2. 程序代碼#include<iostream.h> #include<fstream.h> void main(int argc,char*argv) if(argc!=3) cout<<"請按以下格式輸入命令行: framer inputfile outputfile"<<endl; return; fstream file; file.open(argv2,ios:i
16、n|ios:out|ios:binary|ios:trunc); for(int i=0;i<7;i+) file.put(char(0xaa); file.put(char(0xab); long pCrcs=file.tellp(); char dst_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.se
17、ekg(0,ios:end); short length=(short)infile.tellg(); file.put(char(length/256); file.put(char(length%256); char*data=new charlength; infile.seekg(0,ios:beg); infile.read(data,length); infile.close(); delete data; if(length<46) for(int i=0; i<46-length;i+) file.put(char(0x00); long pCrc=file.tel
18、lp(); file.put(char(0x00); short total=short(file.tellp()-(short)pCrcs; file.seekg(pCrcs,ios:beg); unsigned char crc=0; while(total-) unsigned char temp; file.get(temp); for(unsigned char i=(unsigned char)0x80;i>0;i>>=1) if(crc&0x80) crc<<=1; if(temp&i) crc=0x01; crc=0x07; else crc<<=1;if(temp&i) crc=0x01; file.seekg(pCrc,ios:beg); file.put(crc); while(!file.eof() unsigned char temp; file.get(temp); cout<<hex<<(short)temp<<endl; cout<<"幀文件 &
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 賓館承包合同協(xié)議書寫法
- 臨時工聘用合同樣本
- 2024廣告服務合同模板
- 無擔保眼鏡購買分期付款合同范本
- 2024公寓租賃合同模板【公寓租賃合同】
- 城市糧食采購合同模板
- 服裝行業(yè)銷售管理系統(tǒng)經銷合同
- 環(huán)保工程維保合同模板
- 高校畢業(yè)就業(yè)協(xié)議書樣本
- 商標許可協(xié)議書
- 高中語文人教版高中必修文言文定語后置
- 傳統(tǒng)孝道人物虞舜
- 確定積極分子會議記錄范文七篇
- 長江三峽水利樞紐可行性報告
- 江蘇省某高速公路結構物臺背回填監(jiān)理細則
- 電大護理本科臨床實習手冊內容(原表)
- 當代德國學校勞動教育課程構建的經驗與啟示共3篇
- “小金庫”治理與防范 習題及答案
- 王偉核桃經濟價值及加工利用
- 新生兒胎糞吸入綜合征臨床路徑標準住院流程及路徑表單
- 氯化鈉特性表
評論
0/150
提交評論