結合Wireshark捕獲分組深入理解TCP/IP協議之以太網幀
摘要:
本文摘抄并整理了以太網相關理論知識,包括CSMA/CD協議機制及工作、LAN互連,詳細分析了Ethernet II幀格式,最后給出Ethernet II幀實例。
一、以太網[1]
1.1 概述
以太網(Ethernet)是一種計算機局域網組網技術。IEEE制定的IEEE 802.3標準給出了以太網的技術標準。它規定了包括物理層的連線、電信號和介質訪問層協議的內容。以太網是當前應用最普遍的局域網技術。它很大程度上取代了其他局域網標準,如令牌環網(token ring)、FDDI和ARCNET。 以太網的標準拓撲結構為總線型拓撲,但目前的快速以太網(100BASE-T、1000BASE-T標準)為了最大程度的減少沖突,最大程度的提高網絡速度和使用效率,使用交換機(Switch hub)來進行網絡連接和組織,這樣,以太網的拓撲結構就成了星型,但在邏輯上,以太網仍然使用總線型拓撲和CSMA/CD(Carrier Sense Multiple Access/Collision Detect 即帶沖突檢測的載波監聽多路訪問)的總線爭用技術[1]。
以太網基于網絡上無線電系統多個節點發送信息的想法實現,每個節點必須取得電纜或者信道的才能傳送信息,有時也叫作以太(Ether)。(這個名字來源于19世紀的物理學家假設的電磁輻射媒體-光以太。后來的研究證明光以太不存在。) 每一個節點有全球唯一的48位地址也就是制造商分配給網卡的MAC地址,以保證以太網上所有系統能互相鑒別。由于以太網十分普遍,許多制造商把以太網卡直接集成進計算機主板。
1.2 CSMA/CD
帶沖突檢測的載波偵聽多路訪問 (CSMA/CD)技術規定了多臺電腦共享一個信道的方法。這項技術最早出現在1960年代由夏威夷大學開發的ALOHAnet,它使用無線電波為載體。這個方法要比令牌環網或者主控制網要簡單。CSMA/CD使用了以下機制:
(1)沒有任何使用時隙(適配器可以在任何時刻開始傳輸)
(2)其他適配器傳輸時進行載波偵聽(偵聽到其他適配器在傳輸,它決不會傳輸幀)
(3)傳輸時進行碰撞檢測(檢測到其他適配器在傳輸,它中止自己傳輸)
(4)重傳之前,適配器等待一個隨機時間
注:(2)(3)是以太網適配器通過測量傳輸前和傳輸過程中的電壓等級進行的。
適配器從網絡層獲得數據報,執行以下步驟(CSMA/CD協議工作):
(1)成幀,并把幀放到適配器緩沖區中
(2)如果適配器偵聽到信道空閑(即在96比特時間內,沒有信號能量從信道進入適配器),則開始傳輸該幀,否則等待直到線路空閑
(3)如果適配器在傳輸過程中沒有檢測到其他適配器的信號能量,并且傳輸了整個幀,則成功傳輸,否則停止傳輸,并且傳輸一個48比特的擁塞信號,傳完之后,適配器進入一個指數回退階段。
(4)如果超過最大嘗試次數,則退出傳輸模塊,并向網絡層協議報告發送失敗
指數回退算法是指一幀連續經歷n次碰撞后,適配器隨機從0~(2^m -1)隨機選擇一個值(假設為K),等待K*512比特時間再傳輸。這里m為10和n較小的一個,即m=min(n, 10)。
1.3 LAN互聯
(1)中繼器
因為信號的衰減和延時,以太網段有距離限制(如10BASE5同軸電纜最長距離500米),中繼器可以把電纜中的信號放大再傳送到下一段。中繼器最多連接5個網段,當一段同軸電纜斷開,中繼器可以保證其他網段正常工作。
(2)集線器
隨著應用的拓展,人們逐漸發現星型的網絡拓撲結構最為有效,于是設備廠商們開始研制有多個端口的中繼器。多端口中繼器即為集線器,集線器可以連接到其他集線器或者同軸網絡。集線器是物理層設備,當一比特到達某接口時,集線器增強它的信號能量,傳輸到所有其他接口。
采用集線器組網的以太網盡管在物理上是星型結構,但在邏輯上仍然是總線型的,半雙工的通信方式采用CSMA/CD的沖突檢測方法,集線器對于減少包沖突的作用很小。每一個數據包都被發送到集線器的每一個端口,所以帶寬和安全問題仍沒有解決。
(3)網橋
橋接工作在數據鏈路層,只有格式完整的數據包才能從一個網段進入另一個網段,沖突和錯誤數據包被隔離。通過記錄分析網絡上設備的MAC地址,網橋可以判斷它們都在什么位置,這樣它就不會向非目標設備所在的網段傳遞數據包。
(4)交換機
早期的網橋需要檢測每一個數據包,當同時處理多個端口的時候,數據轉發相對Hub來說要慢。以太網交換機把橋接功能用硬件實現,這樣就能保證轉發數據速率達到線速。
盡管以太網交換機布線同Hub以太網是一樣的,但是交換式以太網比共享介質以太網有很多明顯的優勢,如更大的帶寬和更好地隔離異常設備。交換機端口和所連接的設備必須使用相同的雙工設置,即這些設備通過信號來協調要使用的速率和雙工設置。
交換機加電后,首先也像Hub那樣工作,轉發所有數據到所有端口。接下來,當它學習到每個端口的地址以后,他就只把非廣播數據發送給特定的目的端口。這樣,線速以太網交換就可以在任何端口對之間實現,所有端口對之間的通訊互不干擾。 因為數據包一般只是發送到他的目的端口,所以交換式以太網上的流量要略微小于共享介質式以太網。盡管如此,交換式以太網依然是不安全的網絡技術,因為它還很容易因為ARP欺騙或者MAC滿溢而癱瘓,同時網絡管理員也可以利用監控功能抓取網絡數據包。
二、以太網幀格式
以太網發展到現在,有很多種類型,不同類型的幀具有不同的格式和MTU值,甚至同種物理媒體上都可同時存在[2]。如Ethernet II(ARPA)、Ethernet 802.3 raw(Novell Ethernet)、Ethernet 802.3 SAP、Ethernet 802.3 SNAP、。本文只介紹最常用的以太網幀Ethernet II,其格式如下:
圖1 Ethernet II幀格式
目標MAC地址、源MAC地址
每個適配器都有唯一的MAC地址,IEEE管理著這些物理空間地址。廠商從IEEE購買一個地址空間塊,廠商自己分配設備編號,MAC地址示意圖如下:
圖2 MAC地址示意圖
類型
指示以太網幀所攜帶的網絡層數據類型,常用的類型與值如下表:
表1 Ethernet II幀格式類型字段
類型
值
Netware
8137
XNS
0600,0807
IP
0800
ARP
0806
RARP
8035
IP(Wines)
0BAD,80C4
DRP
6003
LAT
6004
LAVC
6007
ARP(AppleTalk)
80F3
數據
FCS
幀校驗序列(Frame Check Sequence,FCS)采用32位CRC循環冗余校驗,旨在檢測幀是否引入了錯誤(即比特是否發生翻轉),差錯的原因包括信號強度衰減和電磁能量泄露。傳輸該幀的適配器構造以太網幀時,計算CRC填入FCS字段,目的適配器接收到幀后,對幀執行同樣的映射,比較兩者的值。
其他以太網幀格式,可參見如下博文《四種格式的以太網幀結構》。
三、報文實例
我所捕獲的分組都是Ethernet II幀,截取百度DNS請求報文的幀,如下:
圖3 Ethernet II幀實例
我有個問題,為什么從Wireshark捕獲的幀,沒有Ethernet II幀的FCS字段,是本來就沒有,還是幀格式本來就沒有FCS這個字段?求指點,謝謝:-)
參考資料:
[1] 維基百科詞條:以太網
{2] 維基百科詞條:以太網幀格式
[3] Andrew S.Tanenbaum.計算機網絡[M].
[4] 《計算機網絡--自頂向下方法與Internet特色》[M].
from:http://blog.chinaunix.net/uid-9112803-id-3213931.html
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成