【小菜學網路】物理層概述

通訊模型

假設,電腦網路現在還沒有被發明出來,作為電腦科學家的你,想在兩台主機間傳輸數據,該怎麼辦?

這時,你可能會想到,用一根電纜將兩台主機連接起來:

物理課大家都學過,電壓可以分為 低電平高電平 。因此,我們可以通過控制電平高低,來達到傳輸資訊的目的: 主機①控制電纜電平的高低, 主機②檢測電平的高低,主機間數據傳輸便實現了!

用數學語言進一步抽象:以低電平表示 0 ,高電平表示 1 。這樣就得到一個理想化的信道:

通過信道,雙方可以傳輸由 0 和 1 組成的比特流,上圖中傳輸的比特流是 1111001011... (從右往左看)。比特流可以編碼任意資訊,例如:用 1111 告訴對方本地開機了,用 0000 告訴對方本地準備關機了。

至此,我們是否得到一個可靠的比特流信道,萬事具備了呢? ——理論上是這樣的,但現實世界往往要比理想化的模型更複雜一些。

收發控制

信道是無窮無盡的,狀態要麼為 0 ,要麼為 1 ,沒有一種表示空閑的特殊狀態:

舉個例子,主機①向主機②發送比特序列 101101001101 ,如下圖(從右往左讀)。最後一個比特是 1 ,對應的電平是高電平。發送完畢後,主機①停止控制電纜電平,所以仍保持著高電平狀態:

換句話講,信道看起來仍按照既定節拍,源源不斷地發送比特 1 (灰色部分), 主機②如何檢測比特流結尾呢?

我們可以定義一些特殊的比特序列,用於標識開頭和結尾。例如, 101010 表示開頭, 010101 表示結尾:

  1. 主機①首先發送 101010 (綠色),告訴主機②,它開始發數據了;
  2. 主機①接著發送數據 01101011 (黑色部分);
  3. 主機①最後發送 010101 (紅色),告訴主機②,數據發送完畢;

注意到,平時信道為 1 (灰色),也就是代表空閑狀態。

衝突仲裁

如果兩台伺服器同時向信道發送數據,會發生什麼事情呢?

一邊發 0 ,一邊發 1 ,那信道到底應該是 0 還是 1 呢? 肯定衝突了嘛!有什麼辦法可以解決衝突嗎?

方案①,引入一根新電纜,組成雙電纜結構,每根電纜只負責一個方向的傳輸。這樣一來,兩個方向的傳輸保持獨立,互不干擾,可以同時進行。這樣的傳輸模式在通訊領域稱為 全雙工模式

方案②,在硬體層面實現一種仲裁機制:當檢測到多台主機同時傳輸數據時,及時叫停,並協商哪一方先發。這樣一來,信道同樣支援雙向通訊,但不可同時進行。這種傳輸模式則稱為 半雙工模式

  • 單工 ( simplex ),只支援單向通訊,即從其中一端發往另一端,反之不行;
  • 半雙工 ( half duplex ),支援雙向通訊,但不可同時進行;
  • 全雙工 ( full duplex ),支援雙向通訊,而且可以同時進行;

常見物理介質

除了電訊號,還有其他物理訊號亦可充當通訊介質。那麼,常見的物理介質都有哪些呢?

  • 電訊號,例如電纜,網線就是電纜中的一種;
  • 光訊號,例如光纖;
  • 電磁波,例如 WiFi ,無線網卡,藍牙等;

【小菜學網路】系列文章首發於公眾號【小菜學編程】,敬請關註: