【小菜學網絡】數據鏈路層概述

上一小節,我們以兩臺主機爲例,討論了一個理想化的物理層模型。 現在,我們將問題進一步延伸:多臺主機如何實現兩兩通訊呢?我們以三臺主機爲例進行討論:

如上圖,有 3 臺主機,名字分別是: ant 、 bee 以及 cicada 。 爲了實現主機間通訊,我們將三者連接到一根共用導線。每臺主機都可以改變導線電平,也可以檢測導線電平。 與此同時,假設在硬件層面,多方通訊衝突仲裁機制已經實現並且可用。 這樣,是否就解決了多主機通訊問題呢?

尋址

假設, ant 向 bee 發送一個數據 11110000 (粗體)。由於導線是共享的,所有主機都可以檢測到電平信號。換句話講, bee 和 cicada 都會收到這個數據 11110000 ,而 cicada 本不應該接收這個數據!另一方面, bee 收到數據後,也不知道數據到底是誰發給它的。

爲了簡化接下來的討論,我們省略了物理層起止控制比特 1010 和 0101 。

數據不禁產生困惑:我從哪來?去往何方?

爲此,我們需要引入一些比特,用來標識數據的 來源 以及 目的地 。例子中只有 3 臺主機,兩個比特就足以唯一確定一臺主機:

機器 比特
ant 00
bee 01
cicada 10

那麼,發送數據時,再加上兩個比特用於表示來源主機,兩個比特表示目標主機,問題不就解決了嗎?

如圖,主機下方的灰色比特唯一標識一臺主機:

ant 發送數據時,在最前面加上兩個比特(紅色)用於標識來源機器, 00 表示 ant ;另外兩個比特(綠色)用於標識目標機器, 01 表示 bee

bee 收到數據後,檢查前兩個比特(紅色),值爲 00 ,便知道它是 ant 發出來的;檢查緊接着的兩個比特(綠色),值爲 01 ,與自己匹配上,便愉快地收下了。相反, cicada 收到數據後,發現 01 和自己 10 匹配不上,便丟棄這個數據。

新引入比特所起的作用,在計算機網絡中稱爲 尋址 。 這兩個比特也就稱爲 地址 ,其中,紅色爲源地址,綠色爲目的地址。 引入尋址機制後,我們完美地解答了數據從哪來,到哪去的困惑。

複用與分用

信道只有一個,但是通訊需求是無窮無盡的——傳輸研究數值、文件打印、即時通訊,不一而足。 如何解決這個矛盾呢?套路還是一樣的——引入新的比特標識數據類型。

假設,總的通訊需求就上面這 3 個。那麼, 2 個額外的比特即可解決問題。

類型 比特
研究數據 00
文件打印 01
即時通訊 10

舉個例子,假設 ant 向 bee 上報研究數據並打印一個文件:

bee 接收到數據後,根據紫色比特,決定數據如何處理。通過新引入的紫色比特,我們在同個信道上實現了不同的通訊!

接下來,從理論的視角來審視這個場景:

信道只有一個,卻要承載多樣的通訊任務。在發送端,通過加入紫色比特,將不同的數據通過一個共用信道發送出去,這個過程叫做 複用 ( Multiplexing );在接收端,從共用信道上接收數據,然後檢查紫色比特決定數據如何處理,這個過程叫做 分用 ( Demultiplexing )。

在接下來的章節,我們將看到 複用分用 的思想貫徹計算機網絡的始終。

到目前爲止,我們引入了 3 種不同的比特,分別是 源地址目的地址 以及 數據類型 。 對於這些比特的位數以及含義的約定,便構成 網絡協議

至此,我們解決了多臺共用信道主機間的通訊問題,這相當於網絡分層結構中的 數據鏈路層 。數據鏈路層負責爲上層提供鏈路通訊能力,主要作用是:

  • 尋址
  • 數據複用/分用

數據鏈路層的協議有很多,下節我們將介紹其中最常用的 以太網協議

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

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