電腦網路基礎-3-數據鏈路層

電腦網路基礎-1-概述

電腦網路基礎-2-物理層

數據鏈路層

一、數據鏈路層概述

    數據鏈路層使用的信道主要有以下兩種類型:

      點對點信道:這種信道使用一對一的點對點通訊方式

      廣播信道:這種信道使用一對多的廣播通訊方式,因此過程比較複雜。廣播信道上連接的主機很多,因此必須使用專用的共享信道協議來協調這些主機的數據發送。

    數據鏈路層模型:

      

      

    鏈路:是一條無源的點到點的物理線路段,中間沒有任何其他的交換結點,又稱為「物理鏈路」。一條鏈路只是一條通路的一個組成部分。

    數據鏈路:除了物理線路外,還必須有通訊協議來控制這些數據的傳輸。若把實現這些協議的硬體和軟體加到鏈路上就構成了數據鏈路。又稱為「邏輯鏈路」。現在最常用

       的方法是使用適配器(即網卡)來實現這些協議的硬體和軟體。一般的適配器都包括了數據鏈路層和物理這兩層的功能。

    數據鏈路層傳送的是幀:

        

          常常在兩個對等的數據鏈路層之間畫出一個數字管道,而在這條數字管道上傳輸的數據單位是幀。數據鏈路層不必考慮物理層如何實現比特傳輸細節。甚至

        還可以更簡單地設想好像是沿著兩個數據鏈路層之間的水平方向把幀直接發送到對方。

        

二、三個基本問題

    數據鏈路層協議有許多種,但有三個基本問題是共同的,這三個基本問題是:封裝成幀,透明傳輸,差錯控制。

    1.封裝成幀:在一段數據的前後分別添加首部和尾部,然後構成了一個幀,確定幀的界線。首部和尾部的一個重要作用就是進行幀定界。

          

            當數據是由可列印的ASCII碼組成的文本文件時,幀定界可以使用特殊的幀定界符。控制字元SOH(Start Of Header)放在一幀的最前面,表示幀的首部

          開始。另一個控制字元EOT(End Of Transmission)表示幀的結束。

    2.透明傳輸:如果數據中的某個位元組的二進位程式碼恰好和SOH或EOT一樣,數據鏈路層就會錯誤地”找到幀的邊界”

          

          解決辦法:位元組填充或字元填充。發送端的數據鏈路層在數據中出現控制字元「SOH」或「EOT」的前面插入一個轉義字元「ESC」(其十六進位編碼是1B)。接收

             端的數據鏈路層在將數據送往網路層之前刪除插入的轉義字元。如果轉義字元也出現在數據當中,那麼應在轉義字元前面插入一個轉義字元ESC。當

             接收端收到兩個連續的轉義字元時,就刪除其中前面的一個。

             

    3.差錯檢測:在傳輸過程中可能會產生比特差錯,就是1可能變成0,0可能變成1。在一段時間內,傳輸錯誤的比特占所傳輸比特總數的比率稱為誤碼率BER(Bit Error Rate),

        誤碼率與信噪比有很大關係。為了保證數據傳輸的可靠性,在電腦網路傳輸數據時,必須採用各種差錯檢測措施。在數據鏈路層傳送的幀中,廣泛使用了循環

        冗餘檢驗CRC的檢錯技術。

          在發送端,先把數據劃分為組。假定每組k個比特。假設待傳送的一組數據M=101001(現在k=6)。我們在M的後面再添加供差錯檢測用的n位冗餘碼一起發送。

          計算冗餘碼:用二進位的模2運算進行2n乘M的運算,這相當於在M後面添加n個0。得到的(k+n)位的數除以事先選定好的長度為(n+1)位的除數P,得出商是Q

        而餘數是R,餘數R比除數少1位,即R是n位。

          舉例

                  

          幀檢驗序列FCS:在數據後面添加的冗餘碼稱為幀檢驗序列FCS。循環冗餘校驗CRC和幀檢驗序列FCS並不等同,CRC是一種常用的檢錯方法,而FCS是

                添加在數據後面的冗餘碼。FCS可以用CRC這種方法得出,但CRC並非是用來獲得FCS的唯一方法。

          在接收端,若接受的數據(如例中的101001001)除以除數P(如例中的1101)得出的餘數R=0,則判定這個幀沒有差錯,就接受,否則,這個幀有差錯,就丟棄。

          CRC檢測方法缺點:並不能確定究竟是哪一個或哪幾個比特出現了差錯。只要經過嚴格的挑選,並使用位數足夠多的除數P,那麼出現檢測不到的差錯的概

                 率就很小很小。僅用循環冗餘檢驗CRC差錯檢測技術只能做到無差錯接受(凡是接受的幀都是沒有差錯的,有差錯的幀都丟棄了)。

          注意:「無比特差錯」與「無傳輸差錯」是不同的概念。在數據鏈路層使用CRC檢驗,能夠實現無比特差錯的傳輸,但這還不是可靠傳輸。接下來介紹的數據鏈

           路層的協議都不是可靠傳輸協議。

三、點對點PPP協議

    對於點對點的鏈路,目前使用得最廣泛的數據鏈路層協議是點對點協議PPP(Point-to-Point Protocol)。用戶使用撥號電話線接入互聯網時,用戶電腦和ISP進行通訊時所

  使用的數據鏈路層協議就是PPP協議。PPP協議是不可靠傳輸協議

    

    PPP協議應滿足的要求

      1.簡單:首要的要求。

      2.封裝成幀:必須規定特殊的字元作為幀界定符。

      3.透明性:必須保證數據傳輸的透明性。

      4.差錯檢測:能夠對接收端收到的幀進行檢測,並立即丟棄有差錯的幀。

      5.支援多種網路層協議:對上層,能夠在同一條物理鏈路上同時支援多種網路協議。

      6.支援多種類型鏈路:對下層,能夠在多種類型的鏈路上運行。

      7.檢測連接狀態:能夠及時自動檢測出鏈路是否處於正常的工作狀態。

      8.設置最大傳送單元:必須對每一種類型的點對點鏈路設置最大傳送單元MTU的標準默認值,促進各種實現之間的互操作性。

      9.網路層地址協商:必須提供一種機制使通訊的兩個網路層實體能夠通過協商知道或能夠配置彼此的兩個網路層的地址。

      10.數據壓縮協商:必須提供一種方法來協商使用數據壓縮演算法。

    PPP協議的組成

      1.一個將IP數據報封裝到串列鏈路的方法,能夠支援同步和非同步鏈路。

      2.鏈路控制協議LCP(Link Control Protocol),對下層,用來建立、配置和測試鏈路連接。

      3.網路控制協議NCP(Network Control Protocol),對上層,滿足對網路層協議的支援。

    PPP協議的幀格式

      

      1.PPP幀的首部和尾部分別為4個欄位和2個欄位,PPP是面向位元組的,所有的PPP幀長度都是整數位元組。

      2.標誌欄位F = 0x7E(二進位表示是01111110)。

      3.地址欄位A只置為0xFF。

      4.控制欄位C通常置為0x03。

      5.PPP幀有2個位元組的協議欄位。其值若為0x0021,則資訊欄位就是IP數據報。

                       若為0x8021,則資訊欄位是網路控制數據。

                          若為0xC021,則資訊欄位是PPP鏈路控制數據。

                       若為0xC023,則資訊欄位是鑒別數據。

      6.資訊部分長度可變,受到最大傳送單元的限制,不超過1500位元組。

      7.使用CRC循環冗餘檢測法的FCS幀校驗序列2個位元組。

    PPP解決透明傳輸問題

      當PPP用在同步傳輸鏈路時,協議規定硬體來完成0比特填充。

            同步傳輸時,採用0比特填充法,使一幀中兩個F欄位之間不會出現6個連續的1。

            在發送端,只要發現有5個連續的1,則立即填入一個0。

            在接收端,對幀中的比特流進行掃描,每當發現5個連續的1時,就把5個連續1後的一個0刪除,以還原成原來的比特流。

            

      當PPP用在非同步傳輸鏈路時,就使用一種特殊的字元填充法。

           將資訊欄位中出現的每一個0x7E位元組轉變成為2位元組序列(0x7D,0x5E)。若資訊欄位中出現一個0x7D的位元組,則將其轉變為兩個位元組序列(0x7D,0x5D)。

         若資訊欄位中出現ASCII碼的控制字元(即數值小於0x20的字元),同時將該字元前面要加入一個0x7D位元組,同時將該字元的編碼加以改變(RFC1662中有規定)。

         舉例:

           一個PPP數據幀是7D 5E FE 27 7D 5D 7D 5D 65 7D 5E,請問真正的數據是什麼?

           答案:7E FE 27 7D 7D 65 7E

    PPP協議的工作狀態:當用戶撥號接入ISP時,路由器的數據機對撥號做出確認,並建立一條物理連接。PC機向路由器發送一系列的LCP分組(封裝成多個PPP幀)。這

            些分組及其響應選擇一些PPP參數,並進行網路層配置,NCP給新接入的PC機分配一個臨時的IP地址,使PC機成為網際網路上的一個主機。通訊完畢之後,

            NCP釋放網路層連接,收回原來分配出去的IP地址。接著LCP釋放數據鏈路層連接。最後釋放的是物理層的連接。可見,PPP協議已不是純粹的數據鏈路

            層協議,它還包含了物理層和網路層的內容。

            

四、區域網的數據鏈路層

    區域網的最主要的特點是:網路為一個單位所擁有;地理範圍和站點數目均有限。

    區域網具有如下主要優點:具有廣播功能,從一個站點可方便地訪問全網。區域網上的主機可共享連接在區域網上的各種硬體和軟體資源。便於系統的擴展和逐漸地演變,

              各設備的位置可靈活調整和改變。提高了系統的可靠性、可用性和殘存性。

    區域網的常見拓撲結構

        

    區域網的媒體共享技術:靜態劃分信道:頻分復用、時分復用、波分復用、碼分復用

               動態媒體劃分接入控制(多點接入):隨機接入、受控接入(如多點線路探詢或輪詢)

    乙太網的兩個標準:DIX Ethernet V2是世界上第一個區域網產品(乙太網)的規約。

             IEEE802.3是第一個IEEE的乙太網標準。常將802.3區域網簡稱為「乙太網」。嚴格來說,「乙太網」應當是指符合DIX Ethernet V2標準的區域網。

    數據鏈路層的兩個子層

      為了使數據鏈路層能更好地適應多種區域網標準,IEEE802委員會就將區域網的數據鏈路層拆成兩個子層:邏輯鏈路控制LLC子層(Logical Link Control)

                                                     媒體接入控制MAC子層(Medium Access Control)

      與接入到傳輸媒體有關的內容都放在MAC子層,而LLC子層則與傳輸媒體無關。不管採用何種協議的區域網,對LLC子層來說都是透明的。一般不考慮LLC子層。所以

      很多廠商生產的適配器上就僅裝有MAC協議,而沒有LLC協議。

      

    適配器的作用:網路介面板又稱為通訊適配器或網路介面卡NIC或網卡。進行串列到並行的轉換。對數據進行快取。在電腦的作業系統安裝設備驅動程式。實現乙太網協議。

      

五、CSMA/CD協議(先發再聽,邊發邊聽,碰撞停止,隨機延發)

    CSMA/CD協議(Carrier Sense Multiple Access with Collision Detection),是為了解決區域網的共享媒體技術隨機接入突發性產生的衝突問題而提出的不可靠傳輸協議

    “多點接入”(Multiple Access)表示許多電腦以多點接入的方式連接在一根匯流排上。

    “載波監聽”(Carrier Sense)是指每一個站在發送數據之前先檢測一下匯流排上是否有其他電腦在發送數據,如果有,則暫時不要發送數據,以免發生碰撞。

    “碰撞檢測”(Collision Detection)是指電腦邊發送數據邊檢測信道上的訊號電壓大小。當幾個站同時在匯流排上發送數據時,匯流排上的訊號電壓擺動值將增大。當

                一個站檢測到訊號電壓擺動值超過一定的門限值時,就認為匯流排上至少有兩個站同時在發送數據,表明產生了碰撞。在發生了碰撞後

                匯流排上傳輸的訊號產生嚴重的失真,無法從從恢復出有用的資訊來。每一個正在發送數據的站,一旦發現匯流排上出現了碰撞,就立即

                停止發送,免得繼續浪費網路資源,然後的等待一段隨機時間後再次發送。

     問題1:每一站在發送數據之前已經監聽到信道為”空閑”,為什麼還會出現碰撞?

       答:    

        CSMA/CD重要特性:使用CSMA/CD協議的乙太網不能進行全雙工通訊,而只能進行雙向交替通訊(半雙工通訊)。每個站在發送數據之後的一小段時間內,

                存在著遭遇碰撞的可能性。這種發送的不確定性,使整個乙太網的平均通訊遠遠小於乙太網的最高數據率。

    問題2:某站點發出數據後最多經過多長時間能夠檢測到碰撞衝突?

       答:t = 2τ – δ的最大值即δ -> 0時,所以距離碰撞點最遠的站點最多經過2τ的時間檢測到碰撞衝突。2τ有個專用術語叫做爭用期。

       爭用期:最先發送數據幀的站,在發送數據幀後至多經過時間2τ(往返時延,兩倍端到端的傳播時延),就可知道發送端額數據幀是否遭受了碰撞。這個爭用期

         在實際的10Mbit/s乙太網中取51.2us為爭用期長度。

       最短有效幀長:對於10Mbit/s乙太網在爭用期內可發送512bit,即64位元組。這意味著,乙太網在發送數據時,若前64個位元組沒有發送衝突,則後續數據就不會

            發生衝突。所以乙太網規定了最短有效幀長度為64位元組,凡是長度小於64位元組的幀都是由於衝突而中止的無效幀。

    問題3:產生碰撞之後如何進行避讓?

       答:檢測到碰撞–>數據失真–>停止發送

         退避一段時間–>再次發送

    問題4:退避時間,這個時間如何確定?

       答:CSMA/CD協議用到了一個截斷二進位指數類型退避演算法:發生碰撞的站在停止發送數據後,要退避一個隨機時間才能再發送數據。

          具體流程如下:1.確定基本退避時間,一般是取爭用期2τ

                 2.定義重傳次數k,k<=10,即k = Min[重傳次數,10]

                 3.從整數集合[0,1,2,3,…,(2k – 1)]中隨機地取出一個數,記為 r。重傳所需所需的時延就是 r 倍的基本退避時間。

                 4.當重傳16次仍不能成功時即丟棄該幀,並向高層報告。

六、使用集線器的星型拓撲

    傳統乙太網最初是使用粗同軸電纜,後來演進到使用比較便宜的細同軸電纜,最後發展為使用更便宜和靈活的雙絞線。採用雙絞線的乙太網採用星型拓撲,在星形的

  中心則增加了一種可靠性非常高的設備,叫做集線器(hub)。

        

    使用無屏蔽雙絞線,採用星型拓撲。每個站需要用兩對雙絞線,分別用於發送和接收。雙絞線的兩端使用RJ-45插頭。集線器使用了大規模積體電路晶片,因此集線

  器的可靠性提高。10BASE-T的通訊距離稍短,每個站到集線器的距離不超過100m

    集線器的特點:1.集線器是使用電子器件來模擬實際電纜線的工作,因此整個系統仍然像傳統乙太網那樣運行。

           2.使用集線器的乙太網在邏輯上仍然是一個匯流排網,各工作站使用的還是CSMA/CD協議,並共享邏輯上的匯流排。

           3.集線器很像一個多介面的轉發器,工作在物理層

           4.集線器採用了專門的晶片,進行自適應串音回波抵消,減少了近端串音。

           

    乙太網的信道利用率:多個站在乙太網同時工作就可能會發生碰撞。當發生碰撞時,信道資源實際上是浪費了。因此當扣除碰撞所造成的信道損失後,乙太網總的信

            道利用率並不能達到100%。假設 τ 是乙太網端到端的傳播時延,則爭用期長度為2τ,即端到端傳播時延的兩倍。檢測到碰撞後不發送干擾訊號。設

            幀長為L(bit),數據發送速率為C(bit/s),則幀的發送時間為T0= L/C  (s)。一個站在發送幀時發生了碰撞。經過一個爭用期2τ後,可能又出現了一個碰

            撞。這樣經過若干個爭用期後,一個站發送成功了。假定發送幀需要的時間是T0

            

            由圖可知,成功發送一個幀需要佔用信道的時間是T0 + τ,比這個幀的發送時間要多一個端到端的傳播時延τ 。這是因為當一個站發送完最後一個比

              特時,這個比特還要在乙太網上傳播。在最極端的情況下,發送站在傳輸媒體的一端,而比特在媒體上傳輸到另一端所需的時間是τ。

    參數α與信道利用率:要提高乙太網的信道利用率,就必須減少 τ 與T0 之比。在乙太網中定了參數α,它是乙太網端到端傳播時延 τ 與幀的發送時間T0 之比。即α=τ/T0

                 當α趨近於0時,表示發生碰撞就立即可以檢測出來,並立即停止發送,因而信道利用率很高。

                 當α越大時,表明爭用期所佔比例增大,每發生一次碰撞就浪費許多信道資源,使得信道利用率明顯降低。

              所以為提高信道利用率,乙太網的參數α的應當儘可能小一些。對乙太網參數α的要求是:當數據率一定時,乙太網的連線的長度受到限制,否則

              τ 的數值會太大。乙太網的幀長不能,否則T0 的值會太小,使α值太大。

                

                

七、乙太網的MAC層

    在區域網中,硬體地址又稱為物理地址,或MAC地址。802標準所說的”地址”嚴格地講應當是每一個站的”名字”或標識符。請注意,如果連接在區域網上的主機或

  路由器安裝多個適配器,那麼這樣的的主機或路由器就有多個地址,更準確的說,這種48位的地址應當是某個介面的標識符。

    IEEE802標準規定,MAC地址欄位可採用6位元組(48位)或2位元組(16位)這兩種中的一種。IEEE的註冊管理機構RA負責向廠家分配地址欄位6個位元組中的前三個位元組,

  稱為組織唯一標識符。地址欄位的6個位元組中的後三個位元組由廠家自行指派,稱為擴展唯一標識符,必須保證生產出的適配器沒有重複地址。一個地址塊可以生產224

  不同的地址,這種48位的地址稱為MAC-48,它的通用名稱是EUI-48。生產適配器時,6位元組的MAC地址已被固化在適配器的ROM,因此MAC地址叫做硬體地址。

      

    單站地址、組地址、廣播地址

        IEEE規定地址欄位的第一位元組的最低位為I/G(Individual/Group)位。

            1.當I/G位=0時,地址欄位表示一個單站地址

            2.當I/G位=1時,表示組地址,用來進行多播。此時IEEE只分配地址欄位前三個欄位中的23位。

            3.當I/G位分別為0和1時,一個地址塊可分別生成223個單站地址和223個組地址。

            4.所有48位都為1時,為廣播地址。只能作為目標的地址使用。

        IEEE規定地址欄位第一位元組的最低第2位為G/L位,表示Global/Local。

            1.當G/L位=0時,是全球管理(保證在全球沒有相同的地址),廠商想IEEE購買的OUI都屬於全球管理。

            2.當G/L位=1時,這時用戶可以任意分配網路上的地址。

    適配器檢查MAC地址

        適配器從網路上每收到一個MAC幀就首先用硬體檢查MAC幀中的MAC地址。如果是發往本站的幀則收下,然後再進行其他的處理。否則就將此幀丟棄,不再進行其他處理。

       「發往本站的幀」包括以下三種幀:單播幀:(一對一)

                       廣播幀:(一對全體)

                       多播幀:(一對多)

        所有適配器都至少能夠識別前兩種幀,即能夠識別單播地址和廣播地址。有的適配器可用編程方法識別多播地址。

        只有目的地址才能使用廣播地址和多播地址。以混雜方式工作的乙太網適配器只要”聽到」有幀在乙太網上傳輸就都接收下來。

    MAC幀的格式:最常用的MAC幀是乙太網DIX Ethernet V2標準格式

        

        1.6位元組目的地址欄位:目的MAC地址

        2.6位元組源地址欄位:源MAC地址

        3.2位元組上層協議類型欄位:用來標誌上一層使用的是什麼協議。

        4.46~1500位元組的MAC客戶數據欄位:最小長度64位元組-18位元組的首部和尾部 = 46位元組數據欄位的最小長度。當數據欄位的長度小於46位元組時,應當在數據欄位的

                       後面加入整數位元組的填充欄位,以保證乙太網的MAC幀長不小於64位元組。

        5.4位元組CRC循環冗餘檢測法的FCS幀校驗序列:當傳輸媒體的誤碼率為1*10-8時,MAC子層可使未檢測到的差錯小於1*10-14

    無效MAC幀(滿足以下其一便是無效幀):對於檢查出無效MAC幀就直接丟棄。乙太網不負責重傳丟棄的幀

        1.數據欄位長度和長度欄位的值不一致

        2.幀的長度不是整數個位元組

        3.用收到的幀檢驗序列FCS查出有錯

        4.數據欄位的長度不在46~1500位元組之間

        5.MAC幀長度不在64~1518位元組之間

八、乙太網的擴展(指的是從數據鏈路層和物理層上進行擴展)

    1.乙太網擴展的目的

        

    2.在物理層擴展

        (1)使用光纖擴展:主機使用光纖(通常是一對光纖)和一對光纖數據機連接到集線器。很容易使主機和幾公里之外的集線器相連接。

                 

        (2)使用集線器擴展:使用多個集線器可連成更大的、多級星型結構的乙太網。

                 優點:使原來屬於不同碰撞域的乙太網上的電腦能夠進行跨碰撞域的通訊。擴大了乙太網覆蓋的地理範圍。

                 缺點:碰撞域增大了,當總的吞吐量沒有提高。如果不同的碰撞域使用不同的數據率,那麼就不能用集線器將它們互連起來。

    3.在數據鏈路層擴展(更常用)

        早期使用網橋,現在使用交換機。

        網橋工作的數據鏈路層,根據MAC幀地址的目的地址對收到的幀進行轉發和過濾。當網橋收到一個幀時,並不是向所有的介面轉發此幀,

      而是先檢查此幀的目的MAC幀,然後再確定將該幀轉發到哪一個介面,或把它丟棄。

        1990年問世的互動式集線器可明顯地提高乙太網的性能。交換式集線器常稱為乙太網交換機,或第二層交換機。

        

        乙太網交換機的交換方式:

           1.儲存轉發方式:把整個數據幀先快取後再進行處理。

           2.直通方式:接收數據幀的同時就立即按數據幀的目的MAC地址決定該幀的轉發介面,因而提高了幀的轉發速度。缺點就是不檢查差錯就直接將幀轉發出去。

        乙太網交換機自學習功能:

                    

          

九、虛擬區域網

    利用乙太網交換機可以很方便的實現虛擬區域網VLAN。

    

    

 

    虛擬區域網的MAC幀格式: