1. 程式人生 > >乙太網協議

乙太網協議

作者:楊領well
來源:CSDN
原文:https://blog.csdn.net/yanglingwell/article/details/81266408
版權宣告:本文為博主原創文章,轉載請附上博文連結!

TCP/IP協議(2): 乙太網(IEEE 802.3)協議 —— 構成有線區域網的基本協議
關於乙太網(IEEE 802.3) 協議

    乙太網(Ethernet) 是一套廣泛應用於區域網(LAN), 都會網路(MAN) 和廣域網(WAN) 的一套計算機網路技術。
    它在 1980 年第一次商業化引入, 並在 1983 年被標準化 IEEE 802.3,之後被改進以支援更高位元率和更長的鏈路距離。
    (Ethernet /ˈiːθərnɛt/ is a family of computer networking technologies commonly used in local area networks (LAN), metropolitan area networks (MAN) and wide area networks (WAN). It was commercially introduced in 1980 and first standardized in 1983 as IEEE 802.3, and has since been refined to support higher bit rates and longer link distances.)

乙太網幀格式



乙太網傳輸的 PDU(Protocol Data Unit) 是以太幀(Ethernet frame)。其必要內容如下圖所示(圖片來自 Wikipedia)。
乙太網幀格式

    前導(Preamble): 7 位元組(0x‭AAAAAAAAAAAAAA‬)。用於確定編碼位之間的時間間隔(時鐘恢復(Clock recovery))。

    以太幀前導的功能就像是總統車隊前面開路的摩托車警衛。它們提醒所有人注意: 重要的事情即將發生。
    除此之外,以太幀前導同時也起到時鐘同步的功能。所有的位在物理層被表示高低電平,接收裝置需要和接收資料的標準間隔保持一致。只有在調節好的時鐘下,才能分辨出一個位元組到哪裡結束,下一個位元組從哪裡開始。
    接收方可以很容易的區分 10101010 訊號的各個位元組,但是如果接受方的時鐘被設定的太慢, 11111111 就可能被解釋為 1111111。
    以太幀前導演示了到達資料的步調,並重復足夠長的 1010 串,以便接收方設定相同的時鐘頻率。
    (The preamble functions like the outriders in a presidential motorcade. They tell everyone ahead to wake up and pay attention: something important is coming. Apart from being a “get ready” notification, the preamble also serves as a clock synchronization device. Bits are represented as an electrical voltage – high or low. The receiver needs to keep pace with the standard interval, because it is only with a regulated clock that it can tell where one bit ends and the next starts. A 10101010 signal is easy to detect, but a 11111111 signal might be interpreted as 1111111 if the receiver’s clock is set too slow. The preamble demonstrates the pace of arriving data and repeats the 1010 pattern long enough to enable the receiver to set its clock.)

    幀起始定界符(SFD, Start Frame Delimiter): 1 位元組(0xAB)。表示以太幀前導的結束,同時表示以太幀的開始。

    目的地址(destination MAC Address): 6 位元組。目的主機的 MAC 地址。

    源地址(source MAC Address): 6 位元組。源主機的 MAC 地址。

    以太型別(EtherType): 2 位元組。主要有兩個目的:
    (1) 當其值小於等於 1500 時,它表示 有效載荷 的長度(單位: 八位位元組(octet))。
    (2) 當其值大於等於 1536 時,它表示以太型別, 指出有效載荷中封裝的協議。

    當(該欄位)作為以太型別時,幀的長度由資料包間隙的位置和**有效的幀檢查序列(FCS)**決定。
    (When used as EtherType, the length of the frame is determined by the location of the interpacket gap and valid frame check sequence (FCS).)

    有效載荷(Payload): 46‑1500 位元組。用於存放高層 PDU。

    幀校驗序列(FCS, Frame check sequence): 4 位元組。用迴圈冗餘校驗(CRC, Cyclic Redundancy Check) 對幀完整性做簡單的檢查。

載波監聽多點接入/碰撞檢測(CSMA/CD, Carrier-Sense Multiple Access With Collision Detection)

早期的乙太網是將許多計算機連線到一根總線上。當一臺計算機發送資料時,總線上所有計算機都能檢測到這個資料。當網路介面卡接收到資料幀,如果發現目的MAC地址地址不是自己,就丟棄它。
當總線上只要有一臺計算機在傳送資料,匯流排的傳輸資源就被佔用。在同一時間只能允許一臺計算機發送資料。因此早期乙太網採用 CSMA/CD 作為媒體訪問控制(MAC, Media Access Control) 協議。

CSMA/CD 協議的主要內容是:

    多點接入
: 許多計算機以多點接入的方式連線到一條總線上。

    載波監聽: 每個站首先檢測目前網路正在傳送的訊號,並在網路空閒時傳送自己的幀。

    碰撞檢測: 如果有幾個站在同時傳送訊號,則重疊的電訊號被檢測為一次碰撞。這時每個站都停止傳送訊號,然後的等待一個隨機時間,然後再次嘗試傳送。採用 CSMA/CD,在任何給定時間內, 網路中只能有一個幀傳輸。

為了增加靈活性,乙太網發展為使用集線器(Hub) 的星形網路,如下圖。

 


集線器
使用集線器的區域網在物理上是星形網,但使用集線器的乙太網在邏輯上仍是匯流排網路,各站共享邏輯上的匯流排。使用的還是 CSMA/CD 協議。
集線器 工作在物理層,它的每一個介面僅僅簡單地轉發位元,不進行碰撞檢測。

集線器雖然在一定程度擴充套件了乙太網的覆蓋範圍。但隨著範圍的擴大,碰撞域也變得更大,影響傳輸速率。因此,工作在資料鏈路層的網橋(Bridge)裝置應運而生。
網橋依靠轉發表的內容來轉發幀,如下圖。
在該區域網中, A,B, C 以及網橋的 1 號介面是一個碰撞域, D, E, F 以及網橋的 2 號介面是一個碰撞域。轉發表記錄了各個主機與該網橋連線的介面。

    當 A 主機傳輸資料給相同碰撞域的 B 主機時,網橋從 1 號介面接收到。發現 B 主機也在 1 號介面的碰撞域,因此,直接丟棄這個幀。因為 A 主機傳輸的資料根據 CSMA/CD 演算法會在該碰撞域內被 B 主機接收到。

    當 A 主機傳輸資料給不同碰撞域的 E 主機時,網橋從 1 號介面接收到。發現 E 主機在 2 號介面的碰撞域,因此,將該資料轉發到 2 介面的碰撞域,並在該碰撞域內通過 CSMA/CD 演算法被 E 主機接收到。
    網橋

 


乙太網交換機進一步地消除了碰撞域,它實質上就是一個多介面的網橋, 因此也工作在資料鏈路層。但由於交換機的每個介面都直接與單個主機相連,並且一般都工作在全雙工方式。因此,當主機需要通訊時,每一對相互通訊的主機都能像獨佔傳輸媒體那樣,無碰撞地傳輸資料。
交換機