【小菜學網路】物理層概述
通訊模型
假設,計算機網路現在還沒有被髮明出來,作為電腦科學家的你,想在兩臺主機間傳輸資料,該怎麼辦?
這時,你可能會想到,用一根電纜將兩臺主機連線起來:
物理課大家都學過,電壓可以分為 低電平 和 高電平 。因此,我們可以通過控制電平高低,來達到傳輸資訊的目的:主機①控制電纜電平的高低,主機②檢測電平的高低,主機間資料傳輸便實現了!
用數學語言進一步抽象:以低電平表示0
,高電平表示1
。這樣就得到一個理想化的通道:
通過通道,雙方可以傳輸由 0
和 1
組成的位元流,上圖中傳輸的位元流是1111001011...
(從右往左看)。位元流可以編碼任意資訊,例如:用1111
告訴對方本地開機了,用0000
告訴對方本地準備關機了。
至此,我們是否得到一個可靠的位元流通道,萬事具備了呢? ——理論上是這樣的,但現實世界往往要比理想化的模型更復雜一些。
收發控制
通道是無窮無盡的,狀態要麼為0
,要麼為1
,沒有一種表示空閒的特殊狀態:
舉個例子,主機①向主機②傳送位元序列101101001101
,如下圖(從右往左讀)。最後一個位元是1
,對應的電平是高電平。傳送完畢後,主機①停止控制電纜電平,所以仍保持著高電平狀態:
換句話講,通道看起來仍按照既定節拍,源源不斷地傳送位元1
(灰色部分),主機②如何檢測位元流結尾呢?
我們可以定義一些特殊的位元序列,用於標識開頭和結尾。例如,101010
表示開頭,010101
表示結尾:
- 主機①首先發送
101010
(綠色),告訴主機②,它開始發資料了; - 主機①接著傳送資料
01101011
(黑色部分); - 主機①最後傳送
010101
(紅色),告訴主機②,資料傳送完畢;
注意到,平時通道為 1
(灰色),也就是代表空閒狀態。
衝突仲裁
如果兩臺伺服器同時向通道傳送資料,會發生什麼事情呢?
一邊發0
,一邊發1
,那通道到底應該是0
還是1
呢? 肯定衝突了嘛!有什麼辦法可以解決衝突嗎?
方案①,引入一根新電纜,組成雙電纜結構,每根電纜只負責一個方向的傳輸。這樣一來,兩個方向的傳輸保持獨立,互不干擾,可以同時進行。這樣的傳輸模式在通訊領域稱為 全雙工模式 。
方案②,在硬體層面實現一種仲裁機制:當檢測到多臺主機同時傳輸資料時,及時叫停,並協商哪一方先發。這樣一來,通道同樣支援雙向通訊,但不可同時進行。這種傳輸模式則稱為 半雙工模式
- 單工 ( simplex ),只支援單向通訊,即從其中一端發往另一端,反之不行;
- 半雙工 ( half duplex ),支援雙向通訊,但不可同時進行;
- 全雙工 ( full duplex ),支援雙向通訊,而且可以同時進行;
常見物理介質
除了電訊號,還有其他物理訊號亦可充當通訊介質。那麼,常見的物理介質都有哪些呢?
- 電訊號,例如電纜,網線就是電纜中的一種;
- 光訊號,例如光纖;
- 電磁波,例如 WiFi ,無線網絡卡,藍芽等;
【小菜學網路】系列文章首發於公眾號【小菜學程式設計】,敬請關注: