作者:楊領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 字節(0xAAAAAAAAAAAAAA)。用於確定編碼位之間的時間間隔(時鍾恢復(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 主機接收到。
網橋
以太網交換機進一步地消除了碰撞域,它實質上就是一個多接口的網橋, 因此也工作在數據鏈路層。但由於交換機的每個接口都直接與單個主機相連,並且一般都工作在全雙工方式。因此,當主機需要通信時,每一對相互通信的主機都能像獨占傳輸媒體那樣,無碰撞地傳輸數據。
交換機