第三章 資料鏈路層(一)

一杯涼茶發表於2016-11-14

      序言

        我是一隻菜鳥,又來了。開始今天資料鏈路層的學習吧。

                                                                                  ---WH

一、資料鏈路層基本概念及基本問題

      基本概念  和 三個基本問題 的講解

 

     1、基本概念

        先來看一張圖,理解一下:資料鏈路層之間的運輸、資料鏈路層之間的通道。 說的是什麼意思?

            看圖中的註釋,我們應該注意的就是這裡說的資料鏈路層之間的通道等語句,是不考慮物理層中運輸的問題。直接考慮鏈路層這一層。要注意這個事情,不然

                

              

 

        鏈路:一條點到點的物理線路段,中間沒有任何其他的交換結點,通俗的將,就是一根線,其中不經過任何東西,這樣的就是鏈路,一條鏈路只是一條通路的一個組成部分

        資料鏈路:除了物理線路外,還必須有通訊協議來控制這些資料的傳輸。若把實現這些協議的硬體和軟體加到鏈路上,就構成了資料鏈路。 通俗講,就是經過了一些交換機呀,什麼的,最終到達目的地,所有路段就是資料鏈路,而資料鏈路中就包含了多段鏈路。  

        介面卡:也就是網路卡,就是用來實現資料鏈路上一些協議。

        :資料鏈路層上傳送的就是幀,

            

    2、三個基本問題    

       封裝成幀、透明傳輸、差錯控制

        講解如何封裝幀,封裝完後幀的傳輸問題、傳輸到達目的地,如何檢驗該段幀是否完整, 就是這三個問題。

      1、封裝成幀

        看圖就理解了。資料鏈路層就是在ip資料包的前面後末尾加了一個首部和尾部來代表ip資料包的開始和結束,首部和尾部都市由8位二進位制數表示的,可以一樣也可以不一樣

            

      2、透明傳輸

         就是為了解決一個問題, 在ip資料包中如果有一個跟幀尾部一樣的8位二進位制數,則會提前結束接受資料包,這樣資料就被破壞了。出現瞭如下圖這樣的問題

              

         解決辦法:

              看圖:通過在特殊字元前面增加一個轉義字元 ESC, 就可以解決上面所遇到的問題,在接收端,將資料包中所有ESC的字元刪除,遇到兩個ESC的,就刪除第一個,這樣一開始傳輸的時候有ESC轉義字元,接受完就沒了,所以說的是透明傳輸

               

          

      3、差錯檢測

          問題:

            傳輸過程中可能會產生位元差錯:1 可能會變成 0 而 0 也可能變成 1。在一段時間內,傳輸錯誤的位元佔所傳輸位元總數的比率稱為誤位元速率 BER (Bit Error Rate)。

            為了檢測傳送的幀中ip資料包是否完整,是否沒有被損壞,所以需要差錯檢測

          解決:迴圈冗餘檢測CRC,截個圖,把概念性的文字截下來,看到這個人都暈了,其實很簡單,

                  

            按照下圖中的7步走,理解一下,然後再看上面的文字,就理解了。

                  

                檢測:

                    若得出的餘數 R = 0,則判定這個幀沒有差錯,就接受(accept)。

                    若餘數 R ≠ 0,則判定這個幀有差錯,就丟棄。

 

           生成多項式:也很簡單,例如上面的除數1101  就用P(X)=X3+X2+1 (X3是x的三次方的意思)  最高位是2的三次方,就是x的三次方這樣算,例如,101101 P(X)=X5+X3+X2+1     

      

           這種冗餘差錯校驗的特點:

                1這種檢測方法並不能確定究竟是哪一個或哪幾個位元出現了差錯

                2只要經過嚴格的挑選,並使用位數足夠多的除數 P,那麼出現檢測不到的差錯的概率就很小很小。

                3只能是無差錯接受:凡是接受的幀(即不包括丟棄的幀),我們都能以非常接近於 1 的概率認為這些幀在傳輸過程中沒有產生差錯”。也就是說:“凡是接收端資料鏈路層接受的幀都沒有傳輸差錯”(有差錯的幀就丟棄而不接受)

                4這是”不可靠“的,是無位元差錯,而不是無傳輸差錯的檢測機制,要做到可靠的 還要加上確認和重傳機制。即考慮幀重複、幀丟失、幀亂序的情況

                

 

3、可靠傳輸

      在有些情況下,我們需要資料鏈路層向上的網路層提供“可靠傳輸”的服務,就是傳送端傳送什麼,在對應的接收端就收到什麼, 前面的CRC只能檢測出位數的差錯,不能正確的檢測出更精準的錯誤。

      1、停止等待協議

          停止等待就是每傳送完一個分組就停止傳送,等待對方的確認。在收到確認後再傳送下一個分組,詳細的可以看書上的文字性描述,很簡單,        

        超時重傳:解決上面如果資料分組或確認分組丟失時,傳送方將會一直等待接收方的確認分組的問題,設定一個超時計時器,弱到了超時計時器所設定的重傳時間,而傳送方仍收不到接收方的任何確認分組,則會重傳原來的分組。

        重複分組:如果只使用超時重傳來解決,不用傳送確認分組,那麼會出現重複分組的問題,就是當接收方收到分組後,發回確認分組時,確認分組丟失,那麼會觸發超時重傳,則接收方會收到兩個重複的分組,這裡需要注意的是,是確認分組丟失。第一次傳送的分組已經正確接收了。

 

     2、停止等待協議的演算法

          因為手寫實在太麻煩,所以截圖過來看一下這個演算法的具體步驟

        

          

        通過畫圖分析了一下正確的過程,其他依葫蘆畫瓢

      

 

    

     3、回退N步協議

         其實跟停止等待協議差不多,只是使用的是流水線傳輸方式,傳送方不間斷的傳送分組,每次傳送的分組大小有限制,如果不限制,可能會使接收方或網路來不及處理這些分組,導致分組的丟失,所以每次傳送的分組大小可能是5,6或者更多。這種限制就是回退N步協議。

         回退N步協議:利用傳送視窗來限制傳送方連續傳送分組的個數。要是傳送視窗為1就是我們上面所討論的停止等待協議。

      分析如何工作的

          

        這個就是回退N步協議,根據這個原理圖,也能看出,為什麼叫回退N步協議了,在哪裡出錯了,就必須回退到哪裡全部重傳,為了解決這個,又有了選擇重傳協議

 

    

      4、選擇重傳協議

         也就是改進回退N布協議,  方式都是一樣, 在接受方必須逐一確認, 但是出現錯誤,只需要重傳出現錯誤的那一個分組,不用全部重傳,這裡的全部,指的是在出現錯誤的分組之後的所有分組,前提是在同一個傳送視窗中。

 

      5、總結可靠傳輸

          不可靠的鏈路上,通過各種協議,就能達到可靠傳輸,來保證資料的準確性。

 

相關文章