1. 程式人生 > >乙太網幀格式詳解

乙太網幀格式詳解

淺談乙太網幀格式                                      

一、Ethernet幀格式的發展

1980 DEC,Intel,Xerox制訂了Ethernet I的標準
1982 DEC,Intel,Xerox又制訂了Ehternet II的標準
1982 IEEE開始研究Ethernet的國際標準802.3
1983 迫不及待的Novell基於IEEE的802.3的原始版開發了專用的Ethernet幀格式
1985 IEEE推出IEEE 802.3規範,後來為解決EthernetII與802.3幀格式的相容問題,
推出折衷的Ethernet SNAP格式

(其中早期的Ethernet I已經完全被其他幀格式取代了 ,所以現在Ethernet只能見到後面幾種Ethernet的幀格式,
現在大部分的網路裝置都支援這幾種Ethernet的幀格式,
如:cisco的路由器再設定Ethernet介面時可以指定不同的乙太網的幀格式:arpa,sap,snap,novell-ether)

二.各種不同的幀格式
下面介紹一下各個幀格式 
1.Ethernet II
就是DIX乙太網聯盟推出的。。。。 它由6個位元組的目的MAC地址,6個位元組的源MAC地址,
2個位元組的型別域(用於標示封裝在這個Frame、裡面 資料的型別)以上為Frame Header,
接下來是46--1500位元組的資料,和4位元組的幀校驗
2.Novell Ethernet
它的幀頭與Ethernet有所不同其中EthernetII幀頭中的型別域變成了長度域,
後面接著的兩個位元組為0xFFFF,用於標示這個幀是Novell Ether型別的Frame,
由於前面的0xFFFF站掉了兩個位元組所以資料域縮小為44-1498個位元組,幀校驗不變。
3.IEEE 802.3/802.2
802.3的Frame Header和Ethernet II的幀頭有所不同,EthernetII型別域變成了長度域。
其中又引入802.2協議(LLC)在802.3幀頭後面添加了一個LLC首部,
由DSAP(Destination Service Access Point)1 byte,SSAP(Source SAP),一個控制域--1 byte! SAP用於標示幀的上層協議。

4.Ethernet SNAP
SNAP Frame與802.3/802.2 Frame的最大區別是增加了一個5 Bytes的SNAP ID
其中前面3個byte通常與源mac地址 的前三個bytes相同為廠商程式碼!
有時也可設為0,後2 bytes與Ethernet II的型別域相同。。。


三.如何區分不同的幀格式
  
Ethernet中存在這四種Frame那些網路裝置又是如何識別的呢? 如何區分EthernetII與其他三種格式的Frame
如果幀頭跟隨source mac地址的2 bytes的值大於1500,則此Frame為EthernetII格式的
   
接著比較緊接著的兩bytes如果為0xFFFF則為Novell Ether型別的Frame,
如果為0xAAAA則為Ethernet SNAP格式的Frame ,如果都不是則為Ethernet 802.3/802.2格式的幀

幾種乙太網幀格式
 
 
相當長的一段時間裡我都沒搞明白一個很基礎的問題---乙太網的封裝格式;最近查了查相關文件,總結如下;
 
首先說明一下,Ethernet和802.3並不是一回事,雖然我們經常混用這兩個術語;
 
歷史上乙太網幀格式有五種:
 
1.Ethernet V1:這是最原始的一種格式,是由Xerox PARC提出的3Mbps CSMA/CD乙太網標準的封裝格式,
後來在1980年由DEC,Intel和Xerox標準化形成Ethernet V1標準;
 
2.Ethernet V2(ARPA):這是最常見的一種乙太網幀格式,也是今天乙太網的事實標準,
由DEC,Intel和Xerox在1982年公佈其標準,主要更改了Ethernet V1的電氣特性和物理介面,
在幀格式上並無變化;Ethernet V2出現後迅速取代Ethernet V1成為乙太網事實標準;
Ethernet V2幀頭結構為6bytes的源地址+6bytes的目標地址+2Bytes的協議型別欄位+資料。
常見協議型別如下:
0800       IP
0806       ARP
8137       Novell IPX
809b       Apple Talk
如果協議型別欄位取值為0000-05dc(十進位制的0-1500),則該幀就不是Ethernet V2(ARPA)型別了,而是下面講到的三種802.3幀型別之一;
Ethernet可以支援TCP/IP,Novell IPX/SPX,Apple Talk Phase I等協議;RFC 894定義了IP報文在Ethernet V2上的封裝格式;
 
3.RAW 802.3:這是1983年Novell釋出其劃時代的Netware/86網路套件時採用的私有乙太網幀格式,
該格式以當時尚未正式釋出的802.3標準為基礎;
但是當兩年以後IEEE正式釋出802.3標準時情況發生了變化—IEEE在802.3幀頭中又加入了802.2 LLC(Logical Link Control)頭,
這使得Novell的RAW 802.3格式跟正式的IEEE 802.3標準互不相容;可以看到在Novell的RAW 802.3幀結構中並沒有標誌協議型別的欄位,
而只有Length欄位(2bytes,取值為0000-05dc,即十進位制的0-1500),因為RAW 802.3幀只支援IPX/SPX一種協議;
 
4.802.3/802.2 LLC:這是IEEE 正式的802.3標準,它由Ethernet V2發展而來。
它將Ethernet V2幀頭的協議型別欄位替換為幀長度欄位(取值為0000-05dc;十進位制的1500);
並加入802.2 LLC頭用以標誌上層協議,LLC頭中包含DSAP,SSAP以及Crontrol欄位;
常見SAP值:
0         Null LSAP        [IEEE]
4        SNA Path Control         [IEEE]
6        DOD IP        [79,JBP]
AA         SNAP        [IEEE]
FE        Global DSAP        [IEEE]
SAP值用以標誌上層應用,但是每個SAP欄位只有8bits長,
而且其中僅保留了6位元用於標識上層協議,因此所能標識的協議數有限(不超過32種);
並且IEEE拒絕為某些重要的協議比如ARP協議定義SAP值(奇怪的是同時他們卻定義了IP的SAP值);
因此802.3/802.2 LLC的使用有很大侷限性;
 
5.802.3/802.2 SNAP:這是IEEE為保證在802.2 LLC上支援更多的上層協議同時更好的支援IP協議而釋出的標準,
與802.3/802.2 LLC一樣802.3/802.2 SNAP也帶有LLC頭,但是擴充套件了LLC屬性,
新添加了一個2Bytes的協議型別域(同時將SAP的值置為AA),
從而使其可以標識更多的上層協議型別;
另外添加了一個3Bytes的OUI欄位用於代表不同的組織,RFC 1042定義了IP報文在802.2網路中的封裝方法和ARP協議在802.2 SANP中的實現;
 
今天的實際環境中大多數TCP/IP裝置都使用Ethernet V2格式的幀。
這是因為第一種大規模使用的TCP/IP系統(4.2/3 BSD UNIX)的出現時間介於RFC 894和RFC 1042之間,
它為了避免不能和別的主機互操作的風險而採用了RFC 894的實現;
也由於大家都抱著這種想法,所以802.3標準並沒有如預期那樣得到普及;
 
CISCO裝置的Ethernet Interface預設封裝格式是ARPA(Ethernet V2)

不同廠商對這幾種幀格式通常有不同的叫法,比如:
Frame Type         Novel        Cisco
Ethernet Version 2        Ethernet_II        arpa
802.3 Raw        Ethernet_802.3        novell_ether
IEEE 802.3/802.2        Ethernet_802.2        sap
IEEE 802.3/802.2 SNAP        ETHERNET_SNAP        snap

**************************************************************************************************************************************



一、 乙太網資料幀的格式分析

大家都知道我們目前的區域網大多數是乙太網,但乙太網有多種標準,其資料幀有多種格式,恐怕有許多人不是太清楚,本文的目的就是通過幀格式和Sniffer捕捉的資料包解碼來區別它們。

乙太網這個術語一般是指數字裝置公司(DigitalEquipment)、英特爾公司(Intel)和施樂公司(Xerox)在1982年聯合公佈的一個標準(實際上它是第二版本,第一版本早在1972年就在施樂公司帕洛阿爾託研究中心PARC裡產生了)。它是目前TCP/IP網路採用的主要的區域網技術。它採用一種稱作CSMA/CD的媒體接入方法,其意思是帶衝突檢測的載波偵聽多路接入(Carrier Sense, Multiple Access with CollisionDetection)。它的速率為10 Mb/s,地址為48 bit。

1985年,IEEE(電子電氣工程師協會)802委員會公佈了一個稍有不同的標準集,其中802.3針對整個CSMA/CD網路,802.4針對令牌匯流排網路,802.5針對令牌環網路。這三者的共同特性由802.2標準來定義,那就是802網路共有的邏輯鏈路控制(LLC)。不幸的是,802.2和802.3定義了一個與乙太網不同的幀格式,加上1983年Novell為其Netware開發的私有幀,這些給乙太網造成了一定的混亂,也給我們學習乙太網帶來了一定的影響。

1、通用基礎

資料鏈路層頭(Header)是資料鏈路層的控制資訊的長度不是固定的,根據乙太網資料幀的格式的不同而不同,那麼判斷IEEE802.3、IEEE802.3 SNAP、Ethernet Version2、Netware 802.3“Raw”這些資料幀的最主要依據也源於Header的變化。

從Sniffer捕捉資料包中也可以看出,Sniffer捕捉資料包的時候是掐頭去尾的,不要前面的前導碼,也丟棄後面的CRC校驗(注意它只是不在Decode裡顯示該區域,但並不代表它不去做資料包CRC校驗),這就是很多人困惑為什麼Sniffer捕捉到的資料包長度跟實際長度不相符的原因。那麼,Sniffer是如何來判斷這些不同型別的乙太網格式呢?

Sniffer可以判斷出不同的乙太網格式,這裡需要注意的是,Sniffer在資料包解碼時有自己的格式,所以有Offset之說,offset ØE是指在SnifferHex解碼視窗中從左向右第15位的數值。大家如果有點發懵的話,沒有關係,看完後面的格式分析後再來分析前面提到的,相信一定能夠明白?

下面我們通過一些具體的資料包來說明各種乙太網格式的具體區別。

2、Ethernet Version2

乙太網版本2是先於IEEE標準的乙太網版本。

從資料包中可以看出,EthernetV2通過在DLC頭中2個位元組的型別(Type)欄位來辨別接收處理。型別欄位是用來指定上層協議的(如0800指示IP、0806指示ARP等),它的值一定是大於05FF的,它提供無連線服務的,本身不控制資料(DATA)的長度,它要求網路層來確保資料欄位的最小包長度(46位元組)。

Sniffer捕獲的Ethernet V2幀的解碼,可以看到在DLC層,源DLC地址後緊跟著就是乙太網型別(Etehertype)值0800,代表上層封裝的是IP報文,0800大於05FF,因而我們可以斷定它是Ethernet V2的幀。

3、IEEE802.3

IEEE802.3把DLC層分隔成明顯的兩個子層:MAC層和LLC層,其中MAC層主要是指示硬體目的地址和源地址。LLC層用來提供一些服務:

– 通過SAP地址來辨別接收和傳送方法

– 相容無連線和麵向連線服務

– 提供子網訪問協議(Sub-network Access Protocol,SNAP),型別欄位即由它的首部給出。

MAC層要保證最小幀長度不小於64位元組,如果資料不滿足64位元組長度就必須進行填充。

是Sniffer捕獲的IEEE802.3幀的解碼,可以看到在DLC層源地址後緊跟著就是802.3的長度(Length)欄位0026,它小於05FF,可以肯定它不是Ethernet V2的幀,而接下來的Offset0E處的值“4242”(代表DSAP和SSAP),既不是Novell 802.3 “Raw”的特徵值“FFFF”,也不是IEEE 802.3SNAP的特徵值“AAAA”,因此它肯定是一個IEEE802.3的幀。

4、IEEE802.3 SNAP

SNAP (Sub-Network AccessProtocol)子網訪問協議,是邏輯鏈路控制(Logical LinkControl)的一個子集,它允許協議不用通過服務訪問點(SAP)即可實現IEEE相容的MAC層功能,因此它在DSAP和SSAP域裡的值是固定的(AAAA)。也正源於此,它需要額外提供5個位元組的頭來指定接收方法,3個位元組標識廠商程式碼,2個位元組標識上層協議。

其MAC層保證資料幀長度不小於64位元組,不足的話需要進行資料填充。

是Sniffer捕獲的IEEE802.3SNAP幀的解碼,可以看到在DLC層源地址後緊跟著就是802.3的長度(Length)欄位0175,它小於05FF,可以肯定它不是Ethernet V2的幀,而接下來的Offset 0E處的值“AAAA”(代表DSAP和SSAP),這是IEEE 802.3SNAP的特徵值“AAAA”,因此可以斷定它是一個IEEE802.3 SNAP的幀。

5、Novell Netware 802.3 “Raw”

雖然它的產生先於IEEE802.3規範,但已成為IEEE802.3規範的一部分。它僅使用DLC層的下半部,而不使用LLC。

802.3 “Raw”幀通過在DLC頭中2個位元組的長度(Length)欄位來標記資料幀長度,而在長度欄位後緊跟著就是兩個位元組的十六進位制值FFFF,它是用來標識IPX協議頭的開始。為了確保最小資料幀長度為64位元組,MAC層會進行填充資料區域來確保最小長度。

在所有工作站都使用同一種資料幀型別情況下不會有什麼問題,但如果是在混合乙太網幀型別環境中,Novell的這種乙太網幀會造成負面影響:當Novell發出廣播幀時,其FF欄位正好是IEEE802.3幀中的服務訪問點(SAP)域,它的“FF”值代表著廣播SAP,因此所有的工作站(不管是不是Netware工作站)都會拷貝,這會造成不必要的廣播影響。

Sniffer捕獲的Netware 802.3“RAW”幀的解碼,可以看到在DLC層源地址後緊跟著就是802.3的長度(Length)欄位0120,它小於05FF,可以肯定它不是Ethernet V2的幀,而接下來的Offset 0E處的值“FFFF”(代表IPX協議的開始),這是Netware 802.3“Raw”的特徵值“FFFF”,因此可以斷定它是一個Novell 802.3 “Raw”的幀。

二、 Ethernet V2幀與IEEE 802.3幀的比較

因為這兩種幀是我們在現在的局域網裡最常見的兩種幀,因此,我們對它們進行一些比較。

Ethernet V2可以裝載的最大資料長度是1500位元組,而IEEE802.3可以裝載的最大資料是1492位元組(SNAP)或是1497位元組; Ethernet V2不提供MAC層的資料填充功能,而IEEE802.3不僅提供該功能,還具備服務訪問點(SAP)和SNAP層,能夠提供更有效的資料鏈路層控制和更好的傳輸保證。那麼我們可以得出這樣的結論:Ethernet V2比IEEE802.3更適合於傳輸大量的資料,但EthernetV2缺乏資料鏈路層的控制,不利於傳輸需要嚴格傳輸控制的資料,這也正是IEEE802.3的優勢所在,越需要嚴格傳輸控制的應用,越需要用IEEE802.3或SNAP來封裝,但IEEE802.3也不可避免的帶來資料裝載量的損失,因此該格式的封裝往往用在較少資料量承載但又需要嚴格控制傳輸的應用中。

在實際應用中,我們會發現,大多數應用的乙太網資料包是EthernetV2的幀(如HTTP、FTP、SMTP、POP3等應用),而交換機之間的BPDU(橋協議資料單元)資料包則是IEEE802.3的幀,VLANTrunk協議如802.1Q和Cisco的CDP(思科發現協議)等則是採用IEEE802.3SNAP的幀。大家有興趣的話,可以利用Sniffer等協議分析工具去捕捉資料包,然後解碼檢視是不是這樣的。

相關推薦

乙太網格式

淺談乙太網幀格式                                       一、Ethernet幀格式的發展 1980 DEC,Intel,Xerox制訂了Ethernet I的標準 1982 DEC,Intel,Xerox又制訂了Ehternet

TCP/IP--資料鏈路層 乙太網格式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

乙太網格式、IP資料報格式、TCP段格式+UDP段格式

1、ISO開放系統有以下幾層: 7 應用層 6 表示層 5 會話層 4 傳輸層 3 網路層 2 資料鏈路層 1 物理層 2、TCP/IP 網路協議棧分為應用層(Application)、傳輸層(Transport)、網

TCP/IP--資料鏈路層 & 乙太網格式

鏈路層上最常見的封裝就是乙太網和IEEE 802封裝,這裡就使用乙太網作為講解的物件。一、概述      資料鏈路層屬於計算機網路的底層,使用的通道主要有點對點通道和廣播通道兩種型別。       

乙太網、IP資料報、TCP報文的格式,TCP的三次握手和四次揮手過程

乙太網幀、IP資料報、TCP報文等各級報文在更底層的報文或(幀)中的位置: 乙太網幀格式: 上面的源地址和目的地址是指網絡卡的硬體地址(MAC地址),長度均為6B。 網絡卡晶片(例如DM9000A)收到的資料就是如上所示的一長串資料;其中包括乙太網幀頭、IP報報

PE文件格式,第一講,DOS頭文件格式

www new 中斷 relative fun 意義 word 作用 nor            PE文件格式詳解,第一講,DOS頭文件格式 今天講解PE文件格式的DOS頭文件格式 首先我們要理解,什麽是文件格式,我們常說的EXE可執行程序,就是一個文件格式,那麽

函數中{}輸出格式(C#)

with content c-s sort 命名方式 發現 1-1 原始的 des Console.WriteLine()函數中{}輸出格式詳解(C#) Console.WriteLine()函數的格式一直沒怎麽註意。今天同事問起Console.WriteLine({0

Linux下ps -ef和ps aux的區別及格式

占用內存 style star wid 內存交換 現在 linu pts tar Linux下顯示系統進程的命令ps,最常用的有ps -ef 和ps aux。這兩個到底有什麽區別呢?兩者沒太大差別,討論這個問題,要追溯到Unix系統中的兩種風格,System V風格和BSD

常見圖片格式

size 行為 spn pen huffman androi inux 大堆 aging 標明原作者信息 http://www.cnblogs.com/xiangism 做了幾年有關圖形、圖像的工作,對圖片格式算是小有經驗,在此寫成一文章總結下。雖然一開始並不想講很理

josn格式

mat 之間 imp each 表示法 span table {} none josn格式詳解:!! JSON的全稱是”JavaScript Object Notation”,意思是JavaScript對象表示法,它是一種基於文本,獨立於語言的輕量

TCP報文格式

tail 圖片 緩沖 http 字節 gpo .net segment unix TCP報文是TCP層傳輸的數據單元,也叫報文段。 1、端口號:用來標識同一臺計算機的不同的應用進程。 1)源端口:源端口和IP地址的作用是標識報文的返回地址。 2)目的端口:端口指明接收方計

【轉載】s19文件格式

strong 模式 blog 包含 需要 概述 摩托羅拉 csdn lec 來源:http://blog.csdn.net/xxxl/article/details/19494187 1.概述 為了在不同的計算機平臺之間傳輸程序代碼和數據,摩托羅拉將程序和數據文件以一種可打

RGB格式(二)--索引格式

存儲 簡介 以及 關於 需要 色彩 顏色 針對 表現 本節針對RGB索引格式做簡單介紹,這些格式是比較老的格式,比較節省空間,在計算機發展的初期存儲的成本還是很高的,但是表現的色彩很有限,而隨著存儲成本的不斷降低,以及用戶越來越高的視覺體驗需求,這些格式也就基本被拋棄,不再

json文件格式

with ++ 範例 使用 with open 輕量級 之間 關聯 不同 JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 它基於JavaScript Programming La

常見圖片格式系列(一) ----簡介

圖片格式 png jpg bmp 常見圖片格式介紹 信息時代,豐富多彩的世界,我們用圖片來感知,來記憶,來存儲。多姿多彩的圖片格式,你是否了解其中奧妙呢。接下來的系列文章就要帶大家詳細解析常見圖片格式。 (一) BMP BMP格式,是windows的一種位圖格式,同時也是一種未經過壓縮的格式

常見圖片格式(三)---JPEG

JPEG 圖片格式 編碼 解碼 壓縮 JPEG簡介 JPEG是一種比較成熟的有損的圖像壓縮格式,經過JPEG壓縮,圖像質量會有所損失,但是,人眼不容易分辨出來這種差別。jpeg圖像在質量和存儲空間得到了一個相對平衡的狀態。不過jpeg文件在組織方式上略顯復雜,詳細請向下看。 JPEG文

C#中ToString()格式

padding design otn href 有效 詳解 pattern console AS 以下內容均摘自博客園,僅供資料查詢。原文連接http://www.cnblogs.com/xdotnet/archive/2009/01/17/tostring_format.

Linux下ps -ef和ps aux的區別及格式-轉

進程組 inux 詳解 少見 CP 被鎖 中斷 https www. 原文:https://www.linuxidc.com/Linux/2016-07/133515.htm Linux下顯示系統進程的命令ps,最常用的有ps -ef 和ps aux。這兩個到底有什麽區別呢

[轉載]PDB數據格式

文本格式 charge 第一個 rst ide 小數 編輯 TE 修飾 完整的PDB文件提供了非常多的信息, 包括作者, 參考文獻以及結構說明, 如二硫鍵, 螺旋, 片層, 活性位點. 在使用PDB文件時請記住, 一些建模軟件可能不支持那些錯誤的輸入格式. PDB

AJAX之三種數據傳輸格式

javascrip 無序 post object josn ans 利用 itl tar 一、HTML HTML由一些普通文本組成。如果服務器通過XMLHTTPRequest發送HTML,文本將存儲在responseText屬性中。 從服務器端發送的HTML的代