1. 程式人生 > 其它 >計算機網路 -- 鏈路層

計算機網路 -- 鏈路層

計算機網路 -- 鏈路層

本文參考資源:湖科大教書匠--計算機網路微課堂

  • 鏈路(Link)就是從一個結點到相鄰結點的一段物理線路,而中間沒有任何其他的交換結點。

  • 資料鏈路( Data
    Link)是指把實現通訊協議的硬體和軟體加到鏈路上,就構成了資料鏈路。

  • 資料鏈路層以幀為單位傳輸和處理資料。

資料鏈路層的三個主要問題

封裝成幀

  • 幀頭和幀尾中包含有重要的控制資訊。

  • 幀頭和幀尾的作用之ー就是幀定界。


    PPP幀的標誌位置是為了標誌每一個幀的開頭和結尾

MAC幀沒有包含幀定界的標誌,當MAC幀在鏈路層封裝好時會交給物理層,物理層會在MAC幀前面新增8位元組的前導碼,前導碼前7個位元組是前同步碼,作用是為了使接收方時鐘同步,之後的1位元組是幀開始的定界符,表面後面緊跟的是MAC幀,同時乙太網還規定了幀間間隔時間為96位元的傳送時間,所以MAC協議也不需要幀結束定界符

透明傳輸

透明傳輸是指資料鏈路層對上層交付的傳輸資料沒有任何限制,就好像資料鏈路層不存在一樣。

當傳輸的資料恰好內容和幀定界相同時,則會被誤認為是結束,而丟棄了後面的內容,為了不出現類似情況,會在幀定界前插入傳譯符,當接收時則會吧幀定界前面的轉義符去掉

而如果傳輸的資料內容恰好等於轉義符,則在轉義符前再次插入轉義符,接收方則會將轉義符前的轉義符去掉

  • 面向位元組的物理鏈路使用位元組填充(或稱字元填充)的方法實現透明傳輸

  • 面向位元的物理鏈路使用位元填充的方法實現透明傳輸。

為了提高幀的傳輸效率,應當使幀的資料部分的長度儘可能大些。

考慮到差錯控制等多種因素,每一種資料鏈路層協議都規定了幀的資料部分的長度上限,即最大傳送單元MTU

(Maximum Transfer Unit)

差錯檢測

傳輸過程中可能會產生誤碼:即0變成1或者1變成0(位元差錯)

在一段時間內,傳輸錯誤的位元佔所傳輸位元總數的比率稱為誤位元速率BER( Bit Error
Rate).

使用差錯檢測碼來檢測資料在傳輸過程中是否產生了位元差錯,是資料鏈路層所要解決的重要向題之一

為了防止差錯可以在幀尾新增檢錯碼,接收端可以用演算法,通過檢錯碼來判斷資料有沒有出現問題

檢測方法:

奇 偶校驗

在待發送的資料後面新增1位奇偶校驗位,使整個資料(包括所新增的校驗位在內)中“"1”的個數為奇數(奇校驗)或偶數(偶校驗)。

選擇奇/偶校驗,如果有偶/奇數個位發生誤碼,則奇偶性發生變化,可以檢查出誤碼;反之,如果有奇/偶數個位發生變化,則奇偶性不發生變化,不能檢查出誤碼(漏檢)

迴圈冗餘校驗(CRC)

  • 收發雙方約定好一個生成多項式G(x);

  • 傳送方基於待發送的資料和生成多項式計算出差錯檢測碼(冗餘碼),將其新增到待傳輸資料的後面一起
    傳輸;

  • 接收方通過生成多項式來計算收到的資料是否產生了誤碼

例題,傳送方:

除法:做異或運算,不同為1相同為0

判斷是否夠除:當位數夠就稱之為夠除?

例題,接收方:

與傳送發不同,接收方的被除數即為它的本身,不需要根據多項式新增0

  • 檢錯碼只能檢測出幀在傳輸過程中出現了差錯,但並不能定位錯誤,因此無法糾正錯誤。

  • 要想糾正傳輸中的差錯,可以使用元餘資訊更多的糾錯碼進行前向糾錯。但糾錯碼的開銷比較大,在計算
    機網路中較少使用。

  • 迴圈冗餘校驗CRC有很好的檢錯能力(漏檢率非常低),雖然計算比較複雜,但非常易於用硬體實現,因此被廣泛應用於資料鏈路層

  • 在計算機網路中通常採用我們後續課程中將要討論的檢錯重傳方式來糾正傳輸中的差錯或者僅僅是丟奔檢測到差錯的幀,這取決於資料鏈路層向其上層提供的是可靠傳輸服務還是不可靠傳輸服務。

可靠傳輸

當接收方接收到了誤碼時則會將其丟棄,如果不重發則成為不可靠傳輸

儘管誤碼是不能完全避兔的,但若能實現傳送方傳送什麼接收方就能收到什麼,就稱為可靠傳輸。

  • 一般情況下,有線鏈路的誤位元速率比較低。為了減小開銷,並不要求資料鏈路層向上提供可靠傳輸服務。即使出現了誤碼,可靠傳輸的向題由其上層處理。

  • 無線鏈路易受干擾,誤位元速率比較高,因此要求資料鏈路層必須向上層提供可靠傳輸服務

  • 位元差錯只是傳輸差錯中的一種。

  • 從整個計算機網路體系結枃來看,傳輸差錯還包括分組丟失、分組失序以及分組重複。

  • 分組丟失、分組失序以及分組重複這些傳輸差錯,一般不會出現在資料鏈路層,而會出現在其上層。

  • 可靠傳輸服務井不僅侷限於資料鏈路層,其他各層均可選擇實現可靠傳輸。

  • 可靠傳輸的實現比較複雜,開銷也比較大,是否使用可靠傳輸取決於應用需求。

點對點協議PPP

幀格式

透明傳輸

實現透明傳輸的方法取決於說使用的鏈路型別

面向位元組的非同步鏈路採用插入轉義字元的位元組填充法

面向位元的同步鏈路來用插入位元0的位元填充法

差錯檢測

幀結尾帶有兩位元組的FCS使用迴圈冗餘校驗CRC來計算該欄位的取值

接收方每收到一個PP幀,就進行CRC檢驗。若CRC檢驗正確,就收下這個幀;反之,就丟棄這個幀。使用PPP的資料鏈路層向上不提供可靠傳輸服務

工作狀態

使用廣播通道的資料鏈路層

使用廣播通道的資料鏈路層

  • 共享式乙太網的媒體接入控制協議 CSMA/CD

  • 802.11區域網的媒體接入控制協議CSMA/CA

資料鏈路層的互連裝置

  • 網橋和交換機的工作原理

  • 集線器(物理層互連裝置)與交換機的區別

媒體接入控制

靜態劃分通道

隨機接入

解決方法:

CSMA/CD

載波監聽多址接入/碰撞檢測CSMA/CD

爭用期

最小幀長

最小幀長不固定,要根據網路跨距和資料傳輸速率計算

最小幀長 = 爭用期 x 資料傳輸速率

最大幀長

截斷二進位制指數退避演算法

通道利用率

MAC地址

使用點對點通道的資料鏈路層不需要使用地址

b0->b7

多播地址的判斷方法:

資料包轉發過程中IP地址與MAC地址的變化情況

  • 資料包轉發過程中源IP地址和目的IP地址保持不變;

  • 資料包轉發過程中源MAC地址和目的MAC地址逐個鏈路(或逐個網路)改變。

集線器與交換機的區別

集線器

  • 使用集線器的乙太網在邏輯上仍是一個匯流排網,各站共享匯流排資源,使用的還是CSMA/CD協議;

  • 集線器只工作在物理層,它的每個介面僅簡單地轉發位元,不進行碰撞檢測(由各站的網絡卡檢測);

  • 集線器一般都有少量的容錯能力和網路管理功能。例如,若網路中某個網絡卡出了故障,不停地傳送幀。此時,集線器可以檢測到這個問題,在內部斷開與出故障網絡卡的連線,使整個乙太網仍然能正常工作。

交換機

  • 乙太網交換機通常都有多個介面。每個介面都可以直接與一臺主機或另ー個乙太網交換機相連。一般都工作在全雙工方式。

  • 乙太網交換機具有井行性,能同時連通多對介面,使多對主機能

  • 同時通訊,無碰撞(不使用 CSMA/CD協議)

  • 乙太網交換機一般都具有多種速率的介面,例如:10Mb/s、100Mb/s、1Gb/s、10Gb/s介面的多種組合。

  • 乙太網交換機工作在資料鏈路層(也包括物理層),它收到幀後,在幀交換表中查詢幀的目的MAC地址所對應的介面號,然後通過該介面轉發幀。

  • 乙太網交換機是一種即插即用裝置,其內部的幀交換表是通過自學習演算法自動地逐漸建立起來的。

  • 幀的兩種轉發方式:

  1. 儲存轉發

  2. 直通交換:採用基於硬體的交叉矩陣(交換時延非常小,但不檢查幀是否右差錯

總結:

區別1:工作層次

集線器工作在物理層,屬於1層裝置,每傳送一個數據,所有的埠均可以收到,採用了廣播的方式,因此網路效能受到很大的限制。

交換機工作在資料鏈路層,屬於2層裝置,通過學習之後,每個埠形成一張MAC地址轉發表,根據資料包的MAC地址轉發資料,而不是廣播形式。

區別2:轉發方式

集線器的工作原理是廣播形式,無論哪個埠收到資料之後,都要廣播到所有的埠,當接入裝置比較多時,網路效能會受到很大的影響。

交換機根據MAC地址轉發資料,收到資料包之後,檢查報文的目的MAC地址,找到對應的埠進行轉發,而不是廣播到所有的埠。

區別3:傳輸模式

集線器內部採用了匯流排型拓撲,各個節點共用一條匯流排進行通訊,資料包的傳送和接收採用了CSMA/CD協議,在同一時間內必須是單向的,只能維持在半雙工模式下。兩個埠不能同時收發數
據,並且當兩個埠通訊時,其他埠不同工作。

當交換機上的兩個埠通訊時,它們之間的通道是相互獨立的,可以實現全雙工通訊。兩個埠同時收發資料。

區別4:頻寬影響

集線器無論有多少個埠,所有的埠共享一條寬頻,同一時刻只能有兩個埠傳輸資料,並且只能工作在半雙工模式下。

乙太網交換機自學習和轉發幀的流程

A—>B:

假設主機A給主機B傳送幀,該幀從交換機1的介面1進入交換機1。交換機1首先進行登記的工作,將該幀的MAC地址A記錄到自己的幀交換表中,將該幀進入自己的介面的介面號1相應地也記錄到幀交換表中。(上述登記工作就稱為交換機的自學習)

之後,交換機1對該幀進行轉發。該幀的目的MAC地址是B,在幀交換表中查詢MAC地址B,找不到。於是對該幀進行盲目的轉發,也成為泛洪。也就是從除該幀進入交換機介面外的其他所有介面轉發該幀。可以看出,交換機一開始還是比較”笨“的,它還沒有足夠的知識來明確轉發幀,只能進行盲目地轉發。
主機B的網絡卡收到該幀後,根據幀的目的MAC地址B就知道這是傳送給自己的幀,於是就接受該幀。主機C的網絡卡收到該幀後,根據幀的目的MAC地址B,就知道這不是傳送給自己的幀,於是就丟棄該幀。

該幀從交換機2的介面2進入交換機2。交換機2首先進行登記的工作,將該幀的源MAC地址A記錄到自己的幀交換表中,將該幀進入自己的介面的介面號2,相應地也記錄到幀交換表中。之後,交換機2對該幀進行轉發。該幀的目的MAC地址是B,在幀交換表中查詢MAC地址B,找不到。於是對該幀進行盲目地轉發。主機D、E、F都會收到該幀,根據幀的目的MAC地址B,就知道這不是傳送給自己的幀,於是丟棄該幀。

B—>A:

接下來,主機B給主機A傳送幀。該幀從交換機1的介面3進入交換機1。交換機1首先進行登記的工作,將該幀的源MAC地址B記錄到自己的幀交換表中,將該幀進入自己的介面的介面號3相應地也記錄到幀交換表中。之後,交換機1對該幀進行轉發。該幀的目的MAC地址是A,在幀交換表中查詢MAC地址A,可以找到。於是按照MAC地址A所對應的介面號1,從介面1轉發該幀。這是明確的轉發。主機A的網絡卡收到該幀後,根據幀的目的MAC地址A,就知道這是傳送給自己的幀,於是接受該幀。很顯然,交換機2不會收到該幀。

E—>A:

主機E給主機A傳送幀,該幀從交換機2的介面3進入交換機2。交換機2首先進行登記的工作。之後,交換機2對該幀進行轉發。該幀的目的MAC地址是A,在幀交換表中查詢MAC地址A,可以找到。於是按照MAC地址A所對應的介面號2,從介面號2轉發該幀。這是明確的轉發。該幀從交換機1的介面4進入交換機1。交換機1首先進行登記的工作。之後,交換機1對該幀進行轉發。該幀的目的MAC地址是A,在幀交換表中查詢MAC地址A,可以找到。於是按照MAC地址A所對應的介面號1,從介面1轉發該幀。這是明確的轉發。主機A的網絡卡收到該幀後,根據幀的目的MAC地址A,就知道這是傳送給自己的幀,於是接受該幀。

乙太網交換機丟棄幀的情況:G—>A

為了演示該情況,我們給交換機1的介面再連線一臺主機G。為了簡單起見,沒有畫出集線器。這樣,主機A、主機G、交換機1的介面1,就共享同一條匯流排。假設主機G給主機A傳送幀,該幀通過匯流排進行傳輸,主機A和交換機1的介面1都可以收到。主機A的網絡卡收到該幀後,根據幀的目的MAC地址A,就知道這是傳送給自己的幀,於是接受該幀。交換機1接收到該幀後,首先進行登記工作。之後,交換機1對該幀進行轉發。該幀的目的MAC地址是A,在幀交換表中查詢MAC地址A,可以找到。MAC地址A所對應的介面號是1,但是,該幀正是從介面1進入交換機1的,交換機1不會再從該介面將該幀轉發出去,因為這是沒有必要的,於是丟棄該幀。很顯然,交換機2不會收到該幀。

MAC地址與交換機介面的對應關係並不是永久性的,幀交換表中的每條記錄都有自己的有效時間,到期自動刪除

原因是例如交換機某介面所連線的主機更換成另一臺主機。又或者主機中的網絡卡壞了,更換了新的網絡卡。這些情況都會導致MAC地址與交換機介面的對應關係的改變。(之前介紹過的ARP快取記憶體表,表中的IP地址與MAC地址的對應關係記錄也是會定期自動刪除的,這是因為IP地址與MAC地址的對應關係也並不是永久性的)

乙太網交換機的生成樹協議STP

如何提高乙太網的可靠性?

新增冗餘鏈路可以提高乙太網的可靠性

網路環路會帶來以下問題:

廣播風暴--大量消耗網路資源,使得網路無法正常轉發其他資料幀;

主機收到重複的廣播幀--大量消耗主機資源

交換機的幀交換表震盪(漂移)

H1的廣播由B轉發給A和C,同理,A、C受到廣播幀時也接著轉發到B、C和A、B,導致迴圈

同時,由於資料包中的源MAC地址為H1的MAC地址,從第一次廣播確認正確的埠時,連續的接受A、C的廣播會使B的ARP表不斷更改成錯誤的資料

STP

乙太網交換機使用生成樹協議STP( Spanning Tree
Protocol)可以在增加元餘鏈路來提高網路可靠性的同時又避免網路環路帶來的各種問題。

  • 不論交換機之間採用怎樣的物理連線,交換機都能夠自動計算井構建一個邏輯上沒有環路的網路,其邏輯拓撲結構必須是樹型的(無邏輯環路)

  • 最終生成的樹型邏輯拓撲要確保連通整個網路;

  • 當首次連線交換機或網路物理拓撲發生變化時(有可能是人為改變或故障),交換機都將進行生成樹的重新計算

自動計算生成樹

網路發生改變時重新計算

虛擬區域網VLAN

分割廣播域的方法

使用路由器

路由器預設不會對廣播進行轉發

VLAN

IEEE 802.1Q幀

交換機的埠型別

Access




Trunk

Hybrid