網絡七層協議之數據鏈路層


前一節討論了一個理想化模型——兩服務器通訊。 現在,我們把問題進一步拓展一下:多台機器如何實現兩兩通訊?

原文地址:https://learn-linux.readthedocs.io
QQ交流群:Linux網絡編程,群號:183196643
歡迎關注我們的公眾號:小菜學編程 (coding-fan)

多服務器通訊問題

注解

為了簡化接下來的討論,我們站在物理層的基礎上,所有數據發送省略控制比特 10100101

下面,以三台服務器為例:

多服務器通訊模型:共用信道

圖中,有 3 台服務器,名字分別是: antbee 以及 cicada 。 為了通訊,我們設想三者均連接至一根共用導線,每台服務器都可以改變導線電平,也可以檢測導線電平。 進一步假設,在硬件層面,多機器沖突仲裁機制已經實現並且可用。 這樣,是否解決了多服務器通訊問題?

尋址

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

數據的困惑:我從哪來?要到哪去?

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

機器 比特
ant 00
bee 01
cicada 10

那么,發送數據時,額外加上兩個比特用於表示來源機器,另外兩個比特表示目標機器,問題不就解決了嗎?

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

新引入比特所起的作用,在計算機網絡中稱為 尋址 。 這兩個比特也就稱為 地址 ,其中,紅色為源地址,綠色為目的地址。 通過引入尋址,我們完美地解決了數據從哪來,到哪去的問題。

復用/分用

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

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

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

這時,假設 antbee 上報研究數據並打印一個文件:

信道復用:使用額外比特區分數據類型

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

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

復用信道

信道只有一個,需要承載不同的通訊需求。 在發送端,通過加入紫色比特,將不同的數據通過一個共用信道發送出去,這個過程叫做 復用 ( Multiplexing ); 在接收端,從共用信道上接收數據,然后檢查紫色比特決定數據如何處理,這個過程叫做 分用 ( Demultiplexing )。 在接下來的章節,我們將看到 復用 - 分用 這個概念貫徹計算機網絡的始終。

復用/分用

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

總結

本節,我們解決了多台共用信道服務器間的通信問題,這相當於網絡分層結構中的 數據鏈路層 。 數據鏈路層的主要作用包括:

進度

新技能Get✔️

下一步

下一節,我們開始學習一個真實的數據鏈路層協議—— 以太網協議 。 屆時,我們將看到 以太網協議 與本節虛構的協議別無二致。

訂閱更新,獲取更多學習資料,請關注我們的 微信公眾號

小菜學編程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM