【小菜學網絡】以太網幀結構

上一小節,我們通過一個虛構的協議,初步認識了數據鏈路層的工作原理。數據鏈路層主要解決由若干主機組成的本地網絡的通訊問題,尋址複用分用 思想在其中發揮着關鍵作用。

數據鏈路層有一個非常重要的協議—— 以太網協議 。接下來,我們一起來揭開它的神祕面紗!

使用以太網協議進行通信的主機間,必須通過某種介質直接相連。通信介質可以是真實的物理設備,如網線、網卡等;也可以是通過虛擬化技術實現的虛擬設備。

以太網幀

在以太網中,數據通信的基本單位是 以太網幀 ( frame ),由 頭部 ( header )、數據 ( data )以及 校驗和 ( checksum )三部分構成:

請注意,這圖中的單位爲字節,而不是比特了。

頭部

以太網幀頭部包含 3 個字段,依次是:

  • 目的地址 ,長度是 6 字節,用於標記數據由哪臺機器接收;
  • 源地址 ,長度也是 6 字節,用於標記數據由哪臺機器發送;
  • 類型 ,長度是 2 字節,用於標記數據該如何處理, 0x0800 表示該幀數據是一個 IP 包(後續章節介紹)。

除了字段長度有所拓展之外,以太網幀跟我們虛構出來的協議如出一轍。對了,我們注意到一點小差異——在以太網幀中, 目的地址 放在最前面。 這其中有什麼特殊考慮嗎?

確實是有的。接收方收到一個以太網幀後,最先處理 目的地址 字段。如果發現該幀不是發給自己的,後面的字段以及數據就不需要處理了。基礎網絡協議影響方方面面,設計時處理效率也是一個非常重要的考量。

數據

數據 可以是任何需要發送的信息,長度可變, 461500 字節均可。

上層協議報文,例如 IP 包,可以作爲數據封裝在以太網幀中,在數據鏈路層中傳輸。因此,數據還有另一個更形象的稱謂,即 負荷 ( payload )。請自行腦補數據 搭載 在以太網幀這個交通工具上旅行的畫面。

校驗和

由於物理信號可能受到環境的干擾,網絡設備傳輸的比特流可能會出錯。一個以太網幀從一臺主機傳輸到另一臺主機的過程中,也可能因各種因素而出錯。那麼當主機收到以太網幀時,如何確定它是完好無損的呢?

答案是: 校驗和 。我們可以用諸如 循環冗餘校驗 ( CRC )算法,爲以太網幀計算校驗和。如果以太網幀在傳輸的過程出錯,校驗和將發生改變。

注意到,以太網幀最後面有一個 4 字節字段,用於保存校驗和。發送者負責爲每個以太網幀計算校驗和,並將計算結果填寫在校驗和字段中;接收者接到以太網幀後,重新計算校驗和並與校驗和字段進行對比;如果兩個校驗和不一致,說明該幀在傳輸時出錯了。

【小菜學網絡】系列文章首發於公衆號【小菜學編程】,敬請關注:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章