1. 程式人生 > >【小菜學網路】物理層概述

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

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