1. 程式人生 > >計算機網路 - 資料鏈路層

計算機網路 - 資料鏈路層

# 資料鏈路層概述 ## 基本概念 ### 資料傳送模型: ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200312172149.png) ### 資料鏈路層的通道型別: - 點對點通道:這種通道使用一對一的點對點通訊方式。 - 廣播通道。這種通道使用一對多的廣播通訊方式,因此過程比較複雜。廣播通道上連線的主機很多,因此必須使用專用的共享通道協議來協調這些主機的資料傳送。 ### 鏈路和資料鏈路: - 鏈路(link):是一條點到點的物理線路段,中間沒有任何其他的點,**一條鏈路只是一條通路的一個組成部分**。 - 資料鏈路(data link):除了物理線路外,還必須有通訊協議來控制這些資料的傳輸。若把實現這些協議的硬體和軟體加到鏈路上,就構成了資料鏈路。 - 現最常用的方法是使用介面卡(即網絡卡)來實現這些協議的硬體和 軟體。 - 一般的介面卡都包括了資料鏈路層和物理層這兩層的功能。 ### 幀: 資料鏈路層傳送的是幀 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200312173214.png) ### 資料鏈路層就像一個數字管道 常常在兩個對等的資料鏈路層之間畫出一個數字管道,而在這條數字管道上傳輸的資料單位是幀。 ## 要解決的三個基本問題 ### 封裝成幀 - 封裝成幀就是在一段資料的前後分別新增首部和尾部,然後就構成了一個幀,用以確定幀的界限。 - 首部和尾部的一個重要作用就是進行幀定界。 - 如果傳送端傳送時出現故障,接收端沒收到完整的頭和尾,就會將幀丟掉 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200312173853.png) ### 透明傳輸 若傳輸的資料是ASCI I碼中“可列印字元(共95個)”集時,一切正常。 若傳輸的資料不是僅由“可列印字元”組成時,就會出問題,如下圖 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200312174904.png) 我們可以使用**位元組填充法**解決透明傳輸的問題: - 傳送端的資料鏈路層在資料中出現控制字元“SOH”或“EOT”的前面插入一個字元“ESC” (其十六進位制編碼是1B) - 位元組填充(byte stuffing)或字元填充(character stuffing)——接收端的資料鏈路層在將資料送往網路層之前刪除插入的轉義字元。 - 如果轉義字元也出現數據當中,那麼應在轉義字元前插入一個轉義字元。當接收端收到連續的兩個轉義字元時,就刪除其中前面的一個。 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200312175652.png) ### 差錯控制 - 傳輸過程中可能會產生**位元差錯**:1可能會變成0而0也可能變成1。 - 在一段時間內,傳輸錯誤的位元佔所傳輸位元總數的比率稱為 **誤位元速率** BER (Bit Error Rate) 。 - 誤位元速率與信噪比有很大的關係。 - 為了保證資料傳輸的可靠性,在計算機網路傳輸資料時,必須採用各種差錯檢測措施。 我們可以使用 **迴圈冗餘檢測** **CRC** ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200312181331.png) 僅用迴圈冗餘檢驗CRC差錯檢測技術只能做到**無差錯接受**(accept)。 - “無差錯接受” 是指:“凡是接受的幀( 即不包括丟棄的幀),我們都能以非常接近於1的概率認為這些幀在傳輸過程中沒有產生差錯”。也就是說:“凡是接收端資料鏈路層接受的幀都沒有傳輸差錯”(有差錯的幀就丟棄而不接受)。 要做到 “可靠傳輸” (即傳送 什麼就收到什麼)就必須再加上確認和重傳機制。 - 考慮:幀重複、幀丟失、幀亂序的情況 可以說 “CRC是一種無位元差錯,而不是無傳輸差錯的檢測機制” - OSI/RM模型的觀點:資料鏈路層要做成無傳輸差錯的,但這種理念目前不被接受! # 使用點對點通道的資料鏈路層(PPP協議) ## PPP協議 現在全世界使用的最多的資料鏈路層協議就是 **點對點協議** 即 **PPP協議(Pointer to Pointer Protocol)**,使用者使用撥號電話線接入因特網時,一般都是使用PPP協議。 ## PPP協議的使用場合 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200313213420.png) | PPP協議應該滿足的要求 | PPP協議不需要滿足的要求 | | :-------------------: | :---------------------: | | 簡單——這是首要的要求 | 糾錯 | | 封裝成幀 | 流量控制 | | 透明性 | 序號 | | 多種型別鏈路 | 多點線路 | | 差錯檢測 | 半雙工或單工鏈路 | | 檢測連線狀態 | | | 最大傳送單元 | | | 網路層地址協商 | | | 資料壓縮協商 | | ## PPP協議的組成 - 資料鏈路層協議可以用於非同步序列或同步序列介質。 - 它使用LCP (鏈路控制協議)建立並維護資料鏈路連線。 - 網路控制協議(NCP)允許在點到點連線上使用多種網路層協議,如圖所示 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200313215356.png) ## PPP協議幀格式 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200313223120.png) ## 位元組填充 **問題:資訊欄位中出現了標誌欄位的值,可能會被誤認為是“標誌位”怎麼辦?** - 將資訊欄位中出現的每個0x7E位元組轉變成為2位元組序列(0x7D,0x5E)。 - 若資訊欄位中出現一個0x7D的位元組,則將其轉變成為2位元組序列(0x7D,0x5D)。 - 若資訊欄位中出現ASCII 碼的控制字元(即數值小於0x20的字元),則在該字元前面要加入一個0x7D位元組,同時將該字元的編碼加以改變。 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200313223504.png) ## 零位元填充 PPP 協議用在 SONET/SDH 鏈路時,使用同步傳輸(一連串的位元連續傳送)。這時 PPP 協議採用零位元填充方法來實現透明傳輸。 在傳送端,只要發現有 **5 個連續 1**,則立即**填入一個0**。 接收端對幀中的位元流進行掃描。每當發現 5 個連續1時,就把這 **5 個連續 1 後的一個 0 刪除** ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200313223650.png) ## PPP協議工作狀態 當用戶撥號接入ISP 時,路由器的調變解調器對撥號做出確認,並建立一條物理連線。 PC機向路由器傳送一系列的LCP分組(封裝成多個PPP幀)。 這些分組及其響應選擇一些PPP引數,和進行網路層配置,NCP給新接入的PC機分配一個臨時的IP地址,使PC機成為因特網上的一個主機。 通訊完畢時,NCP 釋放網路層連線,收回原來分配出去的IP地址。接著,LCP釋放資料鏈路層連線。最後釋放的是物理層的連線。 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200314221850.png) # 使用廣播通道的資料鏈路層(CSMA/CD協議) ## 區域網的拓撲 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200315113905.png) ## 區域網的特點與優點 區域網最主要的特點是: - 網路為一個單位所擁有,且地理範圍和站點數目均有限。 區域網具有如下的一些主要優點: - 具有廣播功能,從一個站點可很方便地訪問全網。區域網上的主機可共享連線在區域網上的各種硬體和軟體資源。 - 便於系統的擴充套件和逐漸地演變,各裝置的位置可靈活調整和改變。 - 提高了系統的可靠性、可用性和生存性。 ## 共享通訊媒體 ### 靜態劃分通道 - 頻分複用 - 時分複用 - 波分複用 - 碼分複用 ### 動態媒體接入控制(多點接入) - 隨機接入(主要被乙太網採用! ) - 受控接入,如多點線路探詢(polling),或輪詢。(目前已不被採用) ## 認識乙太網 > 最初的乙太網是將許多計算機都連線到一根總線上。當初認為這樣的連線方法既簡單又可靠,因為總線上沒有有源器件。但是不安全,有可能被非目標計算機抓包 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200315115342.png) 總線上的每一個工作的計算機都能檢測到B傳送的資料訊號。 由於只有計算機D的地址與資料幀首部寫入的地址一致,因此只有D才接收這個資料幀。 其他所有的計算機(A,C和E)都檢測到不是傳送給它們的資料幀,因此就丟棄這個資料幀而不能夠收下來。 具廣播特性的總線上實現了一對一的通訊。 ## 載波監聽多點接入/碰撞檢測 (CSMA/CD)協議 > CSMA/CD表示Carrier Sense Multiple Access with Collision Detection。 ### 載波監聽多點接入 **“多點接入”**表示許多計算機以多點接入的方式連線在一根總線上。 **“載波監聽”**是指每一個站在傳送資料之前先要檢測一下匯流排 上是否有其他計算機在傳送資料,如果有,則暫時不要傳送資料,以免發生 碰撞。“載波監聽”就是用電子技術檢測總線上有沒有其他計算機發送的資料訊號。 ### 碰撞檢測 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316141740.png) “碰撞檢測” 就是計算機邊傳送資料邊檢測通道上的訊號電壓大小 - 當幾個站同時在總線上傳送資料時,總線上的訊號電壓擺動值將會增大(互相疊加) - 當一個站檢測到的訊號電壓擺動值超過一定的門限值時,就認為總線上至少有兩個站同時在傳送資料,表明產生了**碰撞**。 - 所謂“碰撞”就是發生了衝突。因此“碰撞檢測”也稱為**“衝突檢測”**。 **檢測到碰撞後:** - 在發生碰撞時,總線上傳輸的訊號產生了嚴重的失真,無法從中恢復出有用的資訊來。 - 每一個正在傳送資料的站,一旦發現總線上出現了碰撞,就要立即停止傳送,免得繼續浪費網路資源,然後等待一段隨機時間後再次傳送。 ### 爭用期 最先發送資料幀的站,在傳送資料幀後至多經過時間**2τ** ( 兩倍的端到端的往返時延)就可知道傳送的資料幀是否遭受了碰撞。**經過爭用期這段時間還沒有檢測到碰撞,才能肯定這次傳送不會發生碰撞。** #### 乙太網的爭用期 - 乙太網的端到端往返時延2τ稱為爭用期,或碰撞視窗。通常,取51.2 μs為爭用期的長度。 - 對於10 Mb/s乙太網,在爭用期內可傳送512 bit, 即64位元組。 - 乙太網在傳送資料時,若前64位元組未發生衝突,則後續的資料就不會發生衝突。 #### 最短有效幀長 - 如果發生衝突,就一定是在傳送的前**64位元組之內**。 - 由於一檢測到衝突就立即中止傳送,這時已經發送出去的資料一定小於64位元組。 - **乙太網**規定了**最短有效幀長為64位元組**,凡長度小於64位元組的幀都是由於衝突而異常中止的無效幀。 ### 二進位制指數型別退避演算法 發生碰撞的站在停止傳送資料後,要推遲(退避) 一個隨機時間才能再發送資料。 - 確定基本退避時間,一般是取為爭用期2τ。 - 定義引數k,k = Min[重傳次數, 10] - 從整數集合[0,1,...,(2^k -1)]中隨機地取出一個數,記為 г 。 重傳所需的時延就是r倍的基本退避時間。當重傳達16次仍不能成功時即丟棄該幀,並向高層報告。 # 以太區域網(乙太網) ## 乙太網的兩個標準 - DIX Ethernet V2 是世界上第一個區域網產品(乙太網)的規約 - IEEE 的802.3標準。 - DIX Ethernet V2標準與IEEE 的802. 3標準只有很小的差別,因此可以將802. 3區域網簡稱為**“乙太網”**。嚴格說來,“乙太網” 應當是指符合DIX Ethernet V2標準的區域網。 ## 乙太網與資料鏈路層的兩個子層 為了使資料鏈路層能更好地適應多種區域網標準,802委員會就將區域網的資料鏈路層拆成兩個子層: - 邏輯鏈路控制LLC (Logical Link Control)子層 - **媒體接入控制MAC (Medium Access Control)子層。** 與接入到傳輸媒體有關的內容都放在MAC子層,而LLC子層則與傳輸媒體無關,不管採用何種協議的區域網對LLC子層來說都是透明的。 由於TCP/IP體系經常使用的區域網是DIX Ethernet V2而不是802.3標準中的幾種區域網,因此現在802委員會制定的邏輯鏈路控制子層LLC (即802. 2標準)的作用已經不大了。很多廠商生產的介面卡上就僅裝有**MAC協議**而沒有LLC 協議。 ## 星型拓撲 > 傳統乙太網最初是使用粗同軸電纜,後來演進到使用比較便宜的細同軸電纜,最後發展為使用更便宜和更靈活的雙絞線。不用電纜而使用無遮蔽雙絞線。每個站需要用兩對雙絞線,分別用於傳送和接收。 > 這種乙太網採用**星形拓撲**,在星形的中心則增加了一種可靠性非常高的裝置, > 叫做**集線器(hub)**。 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316143941.png) ### 集線器的一些特點: 集線器是使用電子器件來模擬實際電纜線的工作,**因此整個系統仍然像一個傳統的乙太網那樣執行**。集線器使用了大規模積體電路晶片,因此這樣的硬體裝置的可靠性已大大提高了。 使用集線器的乙太網在邏輯上仍是一個匯流排網,各工作站使用的還是**CSMA/CD協議**,並共享邏輯上的匯流排。 集線器很像一個多介面的轉發器,**工作在物理層**。 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316144454.png) ## 乙太網的通道利用率 乙太網的通道被佔用的情況: - 爭用期長度為2τ,即端到端傳播時延的兩倍。檢測到碰撞後不傳送干擾訊號。 - 幀長為L (bit), 資料傳送速率為C (b/s),因而幀的傳送時間為L/C = T₀ (s) ---- 一個幀從開始傳送,經可能發生的碰撞後,將再重傳數次,到傳送成功且通道轉為空閒(即再經過時間τ使 得通道上無訊號在傳播)時為止,是傳送一幀所需的平均時間。 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316145321.png) #### 乙太網的通道利用率:引數a - 要提高乙太網的通道利用率,就必須減小 τ 與 T₀ 之比。在乙太網中定義了引數a,它是乙太網單程端到端時延τ與幀的傳送時間 T₀ 之比: $$a = \frac τ {T₀}$$ - a- >0表示一發生碰撞就立即可以檢測出來,並立即停止傳送,因而通道利用率很高。 - a越大,表明爭用期所佔的比例增大,每發生一次碰撞就浪費許多通道資源,使得通道利用率明顯降低。 #### 乙太網的通道利用率:最大值 **對乙太網引數的要求** - 當資料率一定時,乙太網的連線的長度受到限制,否則 τ 的數值會太大 - 乙太網的幀長不能太短,否則 T₀ 的值會太小,使 a 值太大。 **通道利用率的最大值** - 在理想化的情況下,乙太網上的各站傳送資料都不會產生碰撞(這顯然 已經不是CSMA/CD, 而是需要使用一種特殊的排程方法),即匯流排一旦 空閒就有某一個站立即傳送資料。 - 傳送一幀佔用線路的時間是 T₀+ t,而幀本身的傳送時間是 T₀,於是 我們可計算出理想情況下的極限通道利用率$S_{max}$為:
## MAC層的硬體地址(MAC地址) 在區域網中,**硬體地址**又稱為**實體地址**,或 **MAC地址**。 802 標準所說的 “地址” 嚴格地講應當是每一個站的 “**名字**” 或 **識別符號**。但鑑於大家都早已習慣了將這種48位的“名字”稱為“地址”,所以本文也採用這種習慣用法,儘管這種說法並不太嚴格。 - IEEE的註冊管理機構RA負責向廠家分配地址欄位的前三個位元組(即高位24位)。 - 地址欄位中的後三個位元組(即低位24位)由廠家自行指派,稱為**擴充套件識別符號**,必須保證生產出的介面卡沒有重複地址。 - 一個地址塊可以生成2²⁴個不同的地址。這種**48位**地址稱為MAC- 48,它的通用名稱是EUI-48。 - “MAC地址” 實際上就是介面卡地址或介面卡識別符號EUI-48。 >
在同一個交換機上的計算機MAC地址不可相同,否則會產生網路故障,MAC地址可以手動修改 ## 介面卡檢查 MAC 地址 **介面卡從網路上每收到一個MAC幀就首先用硬體檢查MAC幀中的MAC地址** - 如果是發往本站的幀則收下,然後再進行其他的處理。 - 否則就將此幀丟棄,不再進行其他的處理。 **“發往本站的幀”包括以下三種幀:** - 單播(unicast)幀(一對一 ) - 廣播(broadcast)幀(一對全體) - 多播(multicast)幀(一對多) ## MAC 幀格式 常用的乙太網MAC幀格式有兩種標準: - DIX Ethernet V2 標準 - IEEE 的 802.3 標準 最常用的MAC幀是**乙太網V2**的格式。 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316153643.png) ## 無效的 MAC 幀 - 幀的長度不是整數個位元組; - 用收到的幀檢驗序列FCS 查出有差錯; - 資料欄位的長度不在 46 ~ 1500 位元組之間。 - 有效的MAC幀長度為 64 ~ 1518 位元組之間。 - 對於檢查出的無效MAC幀就簡單地丟棄。乙太網不負責重傳丟棄的幀。 ## 幀間最小間隔 - 幀間最小間隔為9.6 μs,相當於96 bit的傳送時間。 - 一個站在檢測到匯流排開始空閒後,還要等待9.6 μs才能再次傳送資料。 - 這樣做是為了使剛剛收到資料幀的站的接收快取來得及清理,做好接收下一幀的準備。 # 擴充套件乙太網 ## 在物理層考慮擴充套件 - 主機使用光纖和一對光纖調變解調器連線到集線器 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316215523.png) - 用一個集線器連線多個集線器(數量不宜超過30臺計算機,連線越多,效率越低) ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316220050.png) ## 在資料鏈路層考慮擴充套件 - 在資料鏈路層擴充套件區域網是使用**網橋**。 - 網橋工作在資料鏈路層,它根據**MAC幀的目的地址**對收到的幀進行轉發。 - 網橋具有過濾幀的功能。當網橋收到一個幀時,並不是向所有的介面轉發此幀,而是**先檢查**此幀的目的MAC地址,然後**再確定**將該幀轉發到哪一個介面。 ### 網橋的內部結構 ![image-20200316220739181](assets/image-20200316220739181.png) ### 使用網橋擴充套件乙太網 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316221141.png) ### 網橋擴充套件乙太網的優缺點 優點: - 過濾通訊量。 - 擴大了物理範圍。 - 提高了可靠性。 - 可互連不同物理層、不同MAC子層和不同速率(如10 Mb/s和100Mb/s乙太網)的區域網。 缺點: - 儲存轉發增加了時延。 - 在MAC子層並沒有流量控制功能。 - 具有不同MAC子層的網段橋接在一起時時延更大。 - 網橋只適合於**使用者數不太多**(不超過幾百個)和**通訊量不太大**的區域網,否則有時還會因傳播過多的廣播資訊而產生網路擁塞。這就是所謂的廣播風暴。 ### 透明網橋 - 目前使用得最多的網橋是**透明網橋**(transparent br idge)。 - “透明”是指區域網上的站點並不知道所傳送的幀將經過哪幾個網橋,**因為網橋對各站來說是看不見的**。 - 透明網橋是一種**即插即用裝置**,其標準是IEEE 802.1D ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316222743.png) ### 網橋的自學習演算法 - 若從 A 發出的幀從介面 x 進入了某網橋,那麼從這個接口出發沿相反方向一定可把一個幀傳送到 A 。 - 網橋每收到一個幀,就記下其源地址和進入網橋的介面,作為轉發表中的一個專案。 - 在建立轉發表時是把幀首部中的源地址寫在 “地址” 這一欄的下面。 - 在轉發幀時,則是根據收到的幀首部中的目的地址來轉發的。這時就把在“地址”欄下面已經記下的源地址當作目的地址,而把記下的進入介面當作轉發介面。 ## 用交換機擴充套件乙太網 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316224129.png) ## 虛擬區域網 ### LAN和VLAN - 交換機的使用使得VLAN的建立成為可能 - 虛擬區域網VLAN是由一些區域網網段構成的與物理位置無關的邏輯組。 - 這些網段具有某些共同的需求。 - 每一個VLAN的幀都有-個明確的識別符號,指明發送這個幀的工作站是屬於哪一個VLAN。 - 虛擬區域網其實只是區域網給使用者提供的一種服務,而並不是一種新型區域網。 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316230316.png) ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316231731.png) ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316232359.png) ### 虛擬區域網枕格式 虛擬區域網協議允許在乙太網的幀格式中插入一個4位元組的識別符號,稱為VLAN 標記(tag),用來指明發送該幀的工作站屬於哪一個虛擬區域網。 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200316232731.png) # 高速乙太網 ## 100BASE-T 速率達到或超過**100 Mb/s**的乙太網稱為**高速乙太網**。 在雙絞線上傳送100 Mb/s基帶訊號的星型拓撲乙太網,仍使用IEEE 802. 3的CSMA/CD協議。100BASE T乙太網又稱為**快速乙太網**(Fast Ethernet) 。 **特點:** - 可在全雙工方式下工作而無衝突發生。因此,不使用CSMA/CD 協議。MAC幀格式仍然是802.3標準規定的。 - 保持最短幀長不變,但將一個網段的最大電纜長度減小到100 m。幀間時間間隔從原來的9.6 μs改為現在的0. 96 μs。 ## 吉位元乙太網 - 允許在1 Gb/s 下全雙工和半雙工兩種方式工作。 - 使用802. 3協議規定的幀格式。 - 在半雙工方式下使用CSMA/CD協議(全雙工方式不需要使用CSMA/CD協議) - 與10BASE-T和100BASE- T技術向後相容。 - 當吉位元乙太網工作在全雙工方式時(即通訊雙方可同時進行傳送和接收資料),不使用載波延伸和分組