Ethernet幀結(jié)構(gòu)解析程序.doc_第1頁
Ethernet幀結(jié)構(gòu)解析程序.doc_第2頁
Ethernet幀結(jié)構(gòu)解析程序.doc_第3頁
Ethernet幀結(jié)構(gòu)解析程序.doc_第4頁
Ethernet幀結(jié)構(gòu)解析程序.doc_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Ethernet幀的解析、封裝和模擬發(fā)送說明文檔姓名:周建偉 學(xué)號:2120100402一、 背景知識TCP/IP支持多種不同的鏈路層協(xié)議,這取決于網(wǎng)絡(luò)所使用的硬件,如Ethernet,令牌環(huán)網(wǎng),F(xiàn)DDI(Fiber Distributed Data Interface,光纖分布式數(shù)據(jù)接口)等。基于不同的硬件的網(wǎng)絡(luò)使用不同形式的幀結(jié)構(gòu),Ethernet是當(dāng)今應(yīng)用最廣泛的局域網(wǎng)技術(shù)。Ethernet V2.0的幀結(jié)構(gòu):前導(dǎo)碼幀前定界符目的地址DA源地址SA類型字段數(shù)據(jù)字段幀校驗字段7B1B6B6B2B461500B4B1. 前導(dǎo)碼和幀前定界符。字段前導(dǎo)碼由56位(7B)的101010.1010比特序列組成,幀前定界符由一個8位的字節(jié)組成,其比特序列為10101011。 如果將前導(dǎo)碼與幀前定界符一起看,那么在62位101010.1010比特序列之后出現(xiàn)11。在這個11之后便是Ethernet幀的目的地址字段。從Ethernet物理層角 度看,接收電路從開始接收比特到進入穩(wěn)定狀態(tài),需要一定的時間。設(shè)計前62位1和0的交替比特序列的目的是保證接收電路在幀的目的地址到來之前到達正常狀 態(tài)。接收端在收到最后兩位11時,標(biāo)志在他之后應(yīng)該是幀的目的地址。前導(dǎo)碼與幀前定界符主要起到接收同步的作用,這8個字節(jié)接收后不需要保留,也不計入幀 頭長度。2. 目的地址和源地址。目的地址與源地址分別表示幀的接收節(jié)點與發(fā)送節(jié)點的硬件地址。硬件地址一般稱作MAC地址,物理地址或Ethernet地址。地址長度為6B(即48位)。為了方便起見,通常使用十六進制數(shù)字書寫。 Ethernet幀的目的地址可分為3種:l 單播地址(unicast address):目的地址的第一位為0表示單播地址。目的地址是單播地址,則表示該幀只被與目的地址相同的節(jié)點所接收l 多播地址(multicast address):目的地址第一位為1表示多播地址。目的地址是多播地址,則表示該幀被一組節(jié)點所接收。l 廣播地址(broadcast address):目的地址全為1表示廣播地址。目的地址是廣播地址,則表示該幀被所有所有節(jié)點接收。3. 類型字段類型字段表示的是網(wǎng)絡(luò)層使用的協(xié)議類型。常見的協(xié)議類型:0800表示網(wǎng)絡(luò)層使用IP協(xié)議,0806表示網(wǎng)絡(luò)層使用ARP協(xié)議,8137表示網(wǎng)絡(luò)層使用Novell IPX協(xié)議,809b表示網(wǎng)絡(luò)層使用Apple Talk協(xié)議。4. 數(shù)據(jù)字段IEEE 802.3協(xié)議規(guī)定數(shù)據(jù)的長度在461500B之間。如果數(shù)據(jù)的長度少于46B,需要加填充字節(jié),補充到46B。填充字節(jié)是任意的,不計入長度字段中。 幀頭部分長度為18B,包括6B的目的地址字段,6B的源地址字段,2B的類型字段和4B的幀校驗和字段,而前導(dǎo)碼與幀前界定符不計入幀頭長度中,那 么,Ehternet幀的最小長度為64B(46B+18B),最大長度為1518B(1500B+18B)。設(shè)置最小幀長度的一個目的是使每個接收節(jié)點 能夠有足夠的時間檢測到?jīng)_突5. 幀校驗字段幀校驗字段FCS采用32位CRC校驗。校驗的范圍包括目的地址字段、源地址字段、長度字段、LLC數(shù)據(jù)字段。在接收端進行校驗,如果發(fā)現(xiàn)錯誤,幀將被丟棄。在本次作業(yè)中,為了簡便起見,采用8位的CRC校驗。8位CRC校驗的生成多項式為:二、 開發(fā)環(huán)境平臺:Windows XP SP3;環(huán)境:Visual Studio 2005語音:C#三、 程序介紹3.1 運行方式1. 點桌面的“開始”菜單-“運行”-鍵入“cmd”-進入控制臺界面;2. 進入可執(zhí)行程序所在文件夾;運行界面3. 從上圖可見,本程序能執(zhí)行三種命令l 幫助命令“EthernetFrame /h”l 解析命令“EthernetFrame /u 數(shù)據(jù)文件名”l 封裝命令 “EthernetFrame /e 數(shù)據(jù)文件名”命令說明:1、不區(qū)分大小寫;2、數(shù)據(jù)文件名自行定義;3、執(zhí)行封裝命令時,若當(dāng)前目錄中已經(jīng)存在同名文件,會被覆蓋掉。3.2 程序流程圖1、主流程圖解析命令/h -u -e用戶鍵入命令 輸入不合法處理封裝命令-e-u處理解析命令/h處理幫助命令2、 封裝命令流程圖用戶輸入一段文字將文字轉(zhuǎn)變?yōu)樽止?jié)流最多1500字節(jié)填充到數(shù)據(jù)字段,不足46字節(jié)的填充0校驗CRC發(fā)送幀將幀寫入文件發(fā)送完成?3、 解析命令流程圖讀二進制文件尋找?guī)^找到?封裝幀顯示幀3.3 核心代碼分析1、主流程Frame frame = new Frame();/定義一個Ethernet幀 frame.FileName = args1; switch (args0.ToUpper() case -E:/封裝幀 frame.Package(); break; case -U:/解析幀 frame.Analyse(); break; default: /其他命令,待擴展 break;命令ToUpper()的目的是不區(qū)分命令的大小寫。2、封裝幀message = Console.ReadLine();/輸入字段文字 byteMessage = Encoding.ASCII.GetBytes(message);/將其轉(zhuǎn)變?yōu)樽止?jié)流 count = byteMessage.Length / 1500 + 1;/被封裝成多少個幀/逐個封裝并發(fā)送幀for (int blockIndex = 0; blockIndex count; blockIndex+ ) this.length = 幀長; this.dataField = new bytethis.length;/數(shù)據(jù)字段 for (int index = 0; index dataLength; index+ ) /填充數(shù)據(jù)字段 this.dataFieldindex = byteMessageindex + point; this.fcs = CheckSum();/計算校驗和 WriteFrame();/將幀寫入文件 SendFrame(); /發(fā)送封裝后的幀 封裝幀是將用戶輸入的文字轉(zhuǎn)變?yōu)樽止?jié)流,并封裝成一個一個的幀并模擬發(fā)送,最后寫入文件。值得注意的是幀的長度應(yīng)為461500B。3、解析幀index = 0; fileStream = new FileStream(this.fileName, FileMode.Open);/讀文件 binaryReader = new BinaryReader(fileStream);/以二進制方式讀文件 while (index fileStream.Length) Console.WriteLine(沒有找到完整幀頭,解析終止); break;/從文件中讀出目的地址、源地址、長度,并填充到相應(yīng)字段 this.destAddress = binaryReader.ReadBytes(this.destAddress.Length); this.sourceAddress = binaryReader.ReadBytes(this.sourceAddress.Length); this.Length = (short)(binaryReader.ReadByte() 8); this.Length |= (short)binaryReader.ReadByte(); this.dataField = new bytedataLength; this.dataField = binaryReader.ReadBytes(this.dataField.Length); this.fcs = binaryRea

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論