跳轉到

網路傳了什麼

乙太網(Ethernet)和其之上的網路協定(Internet Protocol, IP)傳了什麼?

其他還有什麼?

乙太網

乙太網的訊框格式
乙太網的訊框格式

收發器相關

下列資訊都是透過資料收發器(Physical layer transceiver circuitry, PHY)來做的。
下列資訊都是透過資料收發器(Physical layer transceiver circuitry, PHY)來做的。

  • 前文1(Preamble or Syncword):是用來告知目的地端:「現在有訊息要送給你了,準備接收囉」,避免讓網卡一直做事。
  • 框起始定界符(Start Frame Delimiter, SFD):是用來分界待會的訊號就是真正有價值的資訊。
  • 訊框間隔(Inter Frame Gap, IPG):和 前文 很像,只是是結尾部份。
前文和框起始定界符的範例

都是 1 和 0 的交替來代表有訊框要傳送進來了。

10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011

表頭資訊

  • 目的位置(MAC destination)
  • 來源位置(MAC source)
  • 乙太種類(EtherType)或訊框長度:若該值小於 1501 代表訊框長度反之大於 1535 則是代表種類
EtherType 的更多訊息

1500 是 Ethernet 802.3 的最大傳輸單位(MTU),但是若使用其他協定則是改為填寫 1535 以上(不含)的值。

因為 1536 以十六進位表達是 0x600 所以以此為起始,協定種類的選擇有這些

這樣其他協定的長度要怎麼計算?可以通過前面提的 訊框間隔檢核和 來確認。但有些特殊協定仍需要指定長度。

檢核和

需要透過檢核和來查驗本訊框是否受到干擾而有錯誤訊息,這類檢核和在此的名稱叫做框檢查順序(Frame check sequence, FCS)。

乙太網使用的檢核和是 CRC,其透過多項式相除得到的商的一些特性滿足高錯誤檢查率,也就是四個位元組就能檢查多個位元組的資訊(除了收發器相關之外的訊息都含)。

網路協定

Wiki 都講得很詳細,不贅述了,主要有分兩個版本:

這邊提一下 IPv6 有幾點要注意:

  • 通信類別流標記 都是為了 服務品質控制 Quality of Service, QoS)。
  • 跳段數限制 用來限制路由次數。

服務品質控制

當網路壅塞(congestion)的時候,需要先處理等級比較高的(通信類別)或者透過反壓(back-pressure)等機制(服務品質控制)來有效處理高流量。

為什麼要服務品質控制
為什麼要服務品質控制

高流量時會嚴重影響既有的服務能力,好的服務品質控制會讓曲線走向 Desirable 那條。

流程

了解乙太網和網路協定的資料內容之後,我們來看看實際怎麼跑的?

網卡介面,內含 CPU、DMA 和寫進唯讀記憶體的 MAC
網卡介面,內含 CPU、DMA 和寫進唯讀記憶體的 MAC
來源於:NIC Architecture

網卡(Network Interface Card, NIC, Network Adaptor)是外接或內嵌進電腦(或路由器或交換器)裡的電路。當網路線傳送進來訊號時,收發器(PHY)就會開始處理訊號,確認有訊框之後,先做檢核和的查驗。

CRC 的電路圖
CRC 的電路圖

因為 CRC 可以直接做二進位的運算得出,所以在電路上就會相對單純。檢查完之後就會開始透過 header-parsing 做標頭資訊的檢查,包含 MAC 目的地端的確認、乙太種類和訊框長度。最後得到的資料(也就是網路層的 IP 資訊)會往主機送。

資料連結層的排隊

可以注意到網卡會透過 Scheduling 和 Queueing 的方式來排隊消化多筆資訊。

往上送的流程

這裡的「上」其實就是 OSI 階層的概念。

中間還有一些目的位置的檢查快取機制
中間還有一些目的位置的檢查快取機制
來源於:IP Processing RX

當資料被送上來之後會做一些位置解析協定(Address Resolver Protocol, ARP)的處理。另外 IP 在往下送的時候除了檢查 ARP 之外也會檢查是否需要回送(loopback)。

檢查 IP 封包順序會是:

  • 協定版本(4 或 6 等等)
  • 檢核和
  • 封包長度
  • 目的地端的 IP 位置或廣播封包(送給大家的)
    • 如果自己不是目的地端的封包,就可能會透過路由表(Routing Table)往外路由,這就是路由器在做的事。
  • 正確排序(透過識別碼),並放進緩衝區等待排序
  • 檢查傳輸層的種類,例如 1 代表 ICMP、6 代表 TCP、17 代表 UDP

  1. 翻譯都根據「雙語詞彙、學術名詞暨辭書資訊網」定義。