一、資料鏈路層概述
- 鏈路就是從一個結點到相鄰節點的一段物理線路,中間沒有其他任何的交換節點
- 資料鏈路是指把實現通訊協議的硬體和軟體加到鏈路上,就構成了資料鏈路
- 資料鏈路層以幀為單位傳輸資料和處理資料
資料鏈路層最重要的三個問題:封裝成幀,差錯檢測,可靠傳輸
二、封裝成幀
- 封裝成幀是指鏈路層把上層交付的協議資料單元新增幀頭幀尾使之成為幀
-
幀頭和幀尾中含有重要的控制資訊
-
幀頭和幀尾的作用之一就是幀定界:便於下層提取幀。但並不是所有資料鏈路層協議都有幀定界標誌
-
- 透明傳輸是指資料鏈路層對上層交付的資料沒有任何限制,就好像資料資料鏈路不存在
- 面向位元組的物理鏈路使用位元組填充或字元填充法實現透明傳輸
- 面對位元的物理鏈路使用位元填充法實現透明傳輸
HDLC協議為了實現透明傳輸,採用零位元填充法(每五個連續的1後面插入一個位元0)
- 為了提高幀的傳輸效率,應該使得幀的資料部分長度儘可能的大一些
- 考慮到差錯控制等多種因素,每一種資料鏈路層協議都規定了幀的資料部分長度上限,即最大傳送單元MTU
三、差錯控制
實際傳輸過程中不是理想的,位元傳輸中可能會產生錯誤,例如1變成0,0變成1。這稱為位元差錯
使用差錯檢測碼來監測資料在傳輸過程中是否產生位元差錯,是資料鏈路層所要解決的問題
3.1 奇偶校驗
定義:在待傳送的資料後面新增一位奇偶校驗位,使得整個資料(包括校驗位)中1的個數為奇數或者偶數
缺點:
- 若奇數個位發生誤碼,奇偶校驗發生變化,可以檢查出誤碼
- 若偶數個位發生誤碼,奇偶校驗不發生變化,不能檢查出誤碼
- 漏檢率高,資料鏈路層很少使用
3.2 迴圈冗餘校驗CRC
定義
- 收發雙方約定一個生成多項式G(x)
- 傳送方基於待傳送的資料和生成多項式計算出差錯冗餘碼,將其新增到待傳輸資料後面一起傳輸
- 接收方透過生成多項式計算資料是否產生誤碼
生成多項式舉例:
常用CRC生成多項式:
演算法要求必須包含最低項
CRC演算法特點:
- 檢錯碼只能檢測出幀傳輸過程中是否產生差錯,但並不能定位差錯,因此無法糾正錯誤
- 迴圈冗餘校驗具有較好的檢錯能力,雖然計算複雜,但可以使用硬體進行實現,適合廣泛用於資料鏈路層
四、可靠傳輸
4.1基本概念
- 使用差錯檢測技術,接收方的資料鏈路層就可以檢測出是否在傳輸過程中產生誤碼
- 資料鏈路層向上層傳輸的服務型別
- 不可靠傳輸服務:僅僅丟棄有誤碼的幀,其他什麼也不做
- 可靠傳輸服務:實現傳送端發生什麼接收端就接收到什麼
- 一般情況下,有線鏈路的誤位元速率比較低,為了減小開銷,並不要求資料鏈路層向上提供可靠傳輸服務。即使出現誤碼,也由上層進行處理
- 無線鏈路易受干擾,誤位元速率較高,因此要求資料鏈路層必須向上層提供可靠傳輸服務
- 位元差錯只是傳輸差錯的一種
4.2可靠傳輸實現機制
三種可靠傳輸實現機制原理並不侷限於資料鏈路層中,可以應用到計算機網路體系的各層協議中
4.2.1停止-等待協議SW
實現過程:
- 傳送方每次傳送完一個分組就停止傳送,等待接受方確認(如果沒有誤碼傳送ACK幀,如果存在誤碼就傳送NAK)收到ACK就傳送下一分組,收到NAK就重新傳送當前分組。
- 為了防止接收方收不到資料分組就不傳送ACK或NAK,就在傳送方設定一個超時計時器(計時器重傳時間選為略大於收發雙方平均往返時間)若超過所設定的重傳時間就重新傳送原來資料分組
- 為了避免分組重複這種傳輸錯誤,必須每個分組帶上序號,但由於停止等待協議的特殊性,只要保證傳送序號只要跟上次傳送的資料分組序號不同即可,所以只需要一個位元來進行編號
- 為了傳送方判斷所接收的ACK分組是否重複可以給ACK分組編號,所用位元數與資料分組編號所用位元數量相同,資料鏈路層一般不會出現ACK分組遲到情況,因此資料鏈路層實現停止等待協議不需要給ACK分組編號
4.2.2回退N幀協議GBN
協議實現過程
- 傳送方按照規定的傳送視窗連續傳送一組幀
- 接收方按照分組編號按序接收,若編號不匹配則直接丟棄
累計確認:接收方不一定要對收到的資料分組逐個傳送確認,可以在收到幾個資料分組後,按序對最後一個資料分組傳送確認。ACKn表示序號為n以及以前的資料分組都正確接收
由於回退N幀的特性,當通訊線路質量不好時,通道利用率並不比停止等待協議利用率高
4.2.3選擇重傳協議SR
在回退N幀協議中,一個資料分組產生誤碼就會導致後續多個資料不能被接收從而被丟棄,這必然導致傳送方對其的超時重傳,這是對通訊原理的極大浪費。
為了提高傳輸效率,選擇重傳協議的接收視窗WR不在等於1(應大於1),以便於接收方先收下失序到達但無誤碼並且序號落在接收視窗內的內些資料分組,等到所缺分組齊全再一併送交上層。
注:選擇重傳協議為了傳送方僅重傳出現差錯的分組,接收方不在採用累計確認,而是需要對每一個正確接收的分組進行逐一確認
五、點對點協議PPP
點對點協議是目前使用最廣泛的點對點資料鏈路層協議
5.1 PPP協議的標準方法構成
- 對各種協議資料包的封裝方法(封裝成幀)
- 鏈路控制協議LCP 用於建立、配置以及測試資料鏈路的連結
- 網路控制協議NCPs 其中的每一個協議支援不同的網路層協議
5.2 PPP協議幀格式
-
標誌(F) 欄位:PPP幀的定界符,取值為0x7E
-
地址(A)欄位:取值為0xFF,預留
-
控制(C)欄位:取值為0x03,預留
-
協議(P)欄位:指明幀的資料部分送給那個協議處理
-
取值0x0021表示:幀的資料部分為IP資料包
-
取值0xC021表示:幀的資料部分為LCP分組
-
取值0x8021表示:幀的資料部分為NCP分組
-
-
幀檢驗序列(FCS)欄位:CRC計算出的校驗位
5.3 透明傳輸
資料鏈路層應保證資料傳輸的透明性
5.3.1 面對位元組的非同步鏈路:位元組填充法
實現方法:在資料部分中插入跳脫字元
5.3.2 面對位元的同步鏈路:位元填充法
實現方法:對資料部分進行掃碼,發現每五個連續的1,則立即在後面插入一個位元0
5.4 差錯檢查
PPP協議使用的CRC生成多項式為:
FCS計算範圍:
接收方每收到一個PPP幀就對其進行CRC檢驗,若正確則接收;反之,丟棄這個幀。所以使用PPP協議的資料鏈路層對上層提供的是不可靠傳輸服務
5.5 工作狀態
六、媒體接入控制
6.1基本概念
共享通道要著重考慮的一個問題就是如何協調多個傳送和接收站點對一個共享傳輸媒體的佔用,即媒體接入控制MAC
隨著技術發展,交換技術的成熟以及成本降低,具有更高效能的使用點對點鏈路和鏈路層交換機的交換式區域網在有限領域已經完全取代了共享式區域網,但由於無線通道的廣播天性,無線區域網仍使用的是共享媒體技術
6.2靜態劃分通道
通道複用
-
複用是通訊技術中重要概念。複用就是透過一條物理線路同時傳遞多路使用者訊號
-
當網路中傳輸媒體的傳輸容量大於多條單一通道傳輸的總通訊量時,可以利用複用技術在一條物理線路上建立多條通訊通道來充分利用傳輸媒體的頻寬
-
常用的通道複用技術有:分頻多工FDM,分時多工TDM,波長分波多工WDM,碼分複用CDM。
6.2.1分頻多工FDM
基本介紹:
將用於傳輸通道的總頻寬劃分為若干個子頻帶(或子通道),每個子通道傳輸一路訊號,同時保證訊號傳輸互不影響,各個子通道之間設立隔離帶
傳送端:透過對多路訊號採用不同頻率進行調製的方法,使調製後的各路訊號在頻率位置上錯開,以達到多路訊號同時在一個通道內傳輸的目的
接收端:透過分用器將各類訊號分開,並將合成的複用訊號恢復成原始的多路訊號
分頻多工的所有使用者同時佔用不同的頻帶資源並行通訊
6.2.2分時多工TDM
- 分時多工是將時間劃分成為一段段等長的分時多工幀,每一個分時多工幀使用者在每一個分時多工幀中佔用固定序號的時隙
- 每一個使用者所佔的時隙是週期性出現
- 分時多工的使用者在不同時間佔用相同的頻帶頻寬
6.2.3波長分波多工WDM
- 波長分波多工就是光的分頻多工,使用一根光纖來同時傳輸多個光載波訊號
- 光訊號傳輸一段距離後悔衰減,所以要用 摻鉺光纖放大器 放大光訊號
6.2.4碼分複用CDM
複用與多址的區別
- 複用是將單一媒體的頻帶資源劃分很多的子通道,子通道之間相互獨立互不干擾,從媒體整體資源上來看,每個子通道只佔用該媒體頻帶頻寬資源的一部分
- 多址(也可稱為多點接入)處理的是動態分配通道給客戶。這在使用者僅僅暫時性的佔用通道中的應用是必須的,基本上所有的行動通訊系統基本上屬於這種情況。相反,在通道永久分配給使用者的應用中,多址是不需要的。
碼分複用特點:
- 與分頻多工和分時多工不同,碼分複用每一位使用者可以在同樣時間內使用相同的頻帶進行通訊
- 各使用者之間使用經過特殊挑選的不同碼型,所以相互之間不會造成干擾
- 碼分複用最初用於軍事通訊,所以有較高的抗干擾能力
碼分複用實現方式:
6.3隨機接入-CSMA/CD協議(匯流排型區域網使用協議)
載波監聽多址接入/碰撞檢測CSMA/CD:
-
多址接入MA:多個站連線在一條匯流排上,競爭使用匯流排
-
載波監聽CS:每個站在傳送幀之前先檢測一下匯流排上是否有其他站點在傳送幀
- 若檢測到匯流排空閒96位元時間,則傳送幀
- 若檢測到匯流排忙,則繼續檢測並等待匯流排轉為空閒96位元時間,然後傳送幀
-
碰撞檢測CD:每一個正在傳送幀的站點邊傳送邊檢測碰撞
- 一旦發現匯流排上出現碰撞,則立即停止傳送,退避一段隨機時間後再次傳送
- 乙太網還採用一種叫做強化碰撞的措施:當傳送幀的站點一旦檢測到碰撞,除立即停止傳送幀以外,還要繼續傳送32位元或48位元的認為干擾訊號,以便於有更多的碰撞訊號使得所有站點檢測出碰撞
CSMA/CD協議——爭用期(碰撞視窗)
CSMA/CD協議——最小幀長
若傳送的幀長較小,可能導致傳送方在傳送過程中未檢測出碰撞,而傳播過程中遭遇碰撞導致失效,接收方將其丟棄,但傳送方在傳送過程中檢測不到碰撞,從而認為已經正常發出。
- 乙太網規定的最小幀長為64位元組,即512位元(512位元時間為爭用期)
- 若傳送資料非常少,可以加入一些填充位元組,使得幀長不小於64位元組
- 乙太網的最小幀長確保了主機可以幀傳送完成前檢測是否碰撞
- 若爭用期沒有檢測碰撞,那後續資料一定不會發生碰撞
- 若爭用期發生碰撞就立即停止傳送,那麼傳送的資料一定小於64位元組,那麼小於64位元組的幀都是由於碰撞而導致的無效幀
CSMA/CD協議——最大幀長
若傳送方的傳送幀較長,可能導致長時間佔用匯流排或接收方快取區無法儲存,所以要規定傳送的最大幀長
CSMA/CD協議——截斷二進位制指數退避演算法
- 若連續發生多處碰撞,就表明可能有較多主機參與競爭通道,使用此退避演算法可以使重傳需要推遲的平均時間隨重傳次數而增大,因此減少發生碰撞的機率,有利於整個系統的穩定
- 當重傳16次仍不能成功,表明同時傳送幀的主機太多,以至於連續發生碰撞,則丟棄該幀,並向高層報告
CSMA/CD 協議工作——通道利用率
CSMA/CD 協議工作——幀發生流程
CSMA/CD 協議工作——幀接收流程
CSMA/CD 協議的重要特性
- 使用 CSMA/CD 協議的乙太網不能進行全雙工通訊而只能進行雙向交替通訊(半雙工通訊)。
- 每個站在傳送資料之後的一小段時間內,存在著遭遇碰撞的可能性。
- 這種傳送的不確定性使整個乙太網的平均通訊量遠小於乙太網的最高資料率。
6.4隨機接入-CSMA/CA協議(無線型區域網使用協議)
載波監聽多址接入/碰撞避免CSMA/CA
無線區域網中不能使用碰撞檢測CD的原因
- 由於無線通道的傳輸條件特殊,其訊號強度的動態範目非常大,無線網路卡上接收到的訊號強度往往會遠遠小於傳送訊號的強度(可能相差百萬倍)。如果要在無線網路卡上實現撞檢測CD,對硬體的要求非常高。
- 即使能夠在硬體上實現無線區域網的碰撞檢測功能,但由於無線電波傳播的特殊性(存在隱蔽站問題),進行碰撞檢測的意義也不大。
隱蔽站問題:
無線區域網記憶體在ABC三臺主機,a可以覆蓋到b,但無法覆蓋到c;c可以覆蓋到b,但無法覆蓋到a;當a,c都給b傳送幀時就會產生碰撞,所以a/c互相為隱蔽站
幀間間隔IFS
CSMA/CA協議工作原理
源站為什麼在檢測到通道空閒後還要再等待一段時間DIFS?
考慮到可能有其他的站有高優先順序的幀要傳送。若有,就要讓高優先順序幀先傳送
目的站為什麼正確接收資料幀後還要等待一段時間SIFS才能傳送ACK幀?
SIFS是最短的幀間間隔,用來分隔開屬於一次對話的各幀,在這段時間內,一個站點應當能夠從傳送方式切換到接收方式
CSMA/CA協議的退避演算法
使用退避演算法時機:
- 在傳送資料幀之前檢測到通道處於忙狀態時;
- 在每一次重傳一個資料幀時;
- 在毎一次成功傳送後要連續傳送下一個幀時(這是為了避免一個站點長時間佔用通道)
退避演算法:
演算法例項:
CSMA/CA協議的通道預約和虛擬載波監聽
七、MAC地址、IP地址以及ARP協議
- MAC地址是乙太網的MAC子層所使用的地址;屬於資料鏈路層
- IP協議是TCP/IP體系結構中網際層所使用的地址
- ARP協議屬於TCP/IP體系中的網際層,其作用是已知裝置所分配的IP地址,使ARP協議可以透過IP地址獲取到裝置的MAC地址
7.1 MAC地址
- MAC地址一般被固化在網路卡的電可擦可程式設計只讀儲存器中,因此MAC地址也稱為硬體地址
- MAC地址有時也被稱為實體地址
- 每個網路介面卡都有全球唯一的MAC地址,而交換機和路由器往往擁有更多的網路介面,所有擁有更多的MAC地址。所以嚴格來說,MAC地址是對網路上各介面的唯一標識,而不是對網路上各裝置的唯一標識
IEEE 802區域網MAC規範
-
IEEE 802區域網的MAC地址格式
-
擴充套件的唯一識別符號EUI—48
- MAC地址第一個位元組中最後一個位元為1是多播地址,為0是單播地址
- MAC地址第一個位元組中倒數第二位元位1是本地管理,為0是全球管理
- 判斷是否為多播幀可以看第一位十六進位制是否可以整除2,不能則為多播地址
-
IEEE 802區域網的MAC地址傳送順序
- 位元組傳送順序:第一位元組到第六位元組
- 位元組內位元傳送順序:b0到b7
-
單播、組播、廣播
- 單播:主機之間一對一的通訊模式,網路中的交換機和路由器對資料只進行轉發不進行復制。
- 組播:主機之間一對一組的通訊模式,也就是加入了同一個組的主機可以接受到此組內的所有資料,網路中的交換機和路由器只向有需求者複製並轉發其所需資料。
- 廣播:主機之間一對所有的通訊模式,網路對其中每一臺主機發出的訊號都進行無條件複製並轉發,所有主機都可以接收到所有資訊(不管你是否需要)
7.2 IP地址
IP地址是因特網上主機和路由器所使用的地址,用於標識兩部分資訊
-
網路編號:標識因特網上數以萬計的網路
-
主機編號:標識同一網路上不同主機或路由器各介面
資料包轉發過程中IP地址與MAC地址的變化情況
-
資料包轉發過程中源IP和目的IP不改變
-
資料包轉發過程中源MAC和目的MAC地址逐鏈個鏈路改變
7.3 ARP協議
ARP:地址解析協議。
每臺電腦都有一張ARP快取記憶體表,裡面記錄著ip地址 與MAC地址的對應關係
ARP工作過程:
- 源主機在自己的ARP快取記憶體表中查詢目的主機的ip地址所對應的MAC地址,若找到則直接傳送,若找不到就傳送ARP請求(封裝在廣播MAC幀中)
- 目的主機收到ARP請求後,將源主機的ip地址與mac地址記錄在自己的ARP快取記憶體表中,然後傳送ARP相應(封裝在單播mac幀中),ARP響應包中含有目的主機的ip和mac地址
- 源主機收到ARP響應,將目的ip和mac地址記錄到ARP快取記憶體表中,然後可以正常傳送mac幀
ARP作用範圍:逐段鏈路或逐個網路使用
ARP表中的IP地址與MAC地址的對應關係記錄,是會定期自動刪除的,因為IP地址與MAC地址的對應關係不是永久性的
八、集線器與交換機區別
九、乙太網交換機自學習和轉發幀的流程
- 乙太網交換機工作在資料鏈路層(也包括物理層)
- 乙太網交換機收到幀後,在幀交換表中查詢幀的目的MAC地址所對應的介面號,從而透過該介面轉發幀
乙太網交換機自學習和轉發幀的流程
- 收到幀後進行登記。登記內容為幀的源MAC地址以及進入交換機的介面號
- 根據幀目的MAC地址和交換機的幀交換表對幀進行轉發,有以下三種情況
- 明確轉發:交換機知道應當從那個介面轉發該幀
- 盲目轉發:交換機不知道應當從那個埠轉發幀,只能透過除進入交換機的介面外其他所有介面進行轉發(也稱為泛洪)
- 明確丟棄:交換機知道不應該轉發該幀,將其丟棄
- 幀交換表中的每條記錄都有自己的有效時間,到期刪除,原因:
- 交換機的網口改接了另一臺主機
- 主機更換了網路卡
十、乙太網交換機的生成樹協議STP
十一、虛擬網路VLAN
11.1 概述
- 乙太網交換機工作在資料鏈路層(也包括物理層)
- 使用一個或者多個乙太網交換機互連起來的交換式乙太網,其所有站點都屬於同一個廣播域
- 隨著交換式乙太網規模的擴大,廣播域相應擴大
- 巨大的廣播域會帶來很多弊端:
- 廣播風暴:會浪費網路資源和各主機的cpu資源
- 難以管理和維護
- 潛在的安全問題
- 虛擬區域網VLAN是一種將區域網內的裝置劃分成與物理位置無關的邏輯組的技術,這些邏輯組具有某些共同的需求
11.2 VLAN實現機制
IEEE 802.1Q幀
-
IEEE 802.1Q幀對乙太網的MAC幀格式進行了擴充套件,插入了四位元組的VLAN標記
-
VLAN標記的最後12位元稱為VLAN識別符號VID,他惟一的標誌了乙太網幀屬於哪一個VLAN
- VID取值範圍是0-4095
- 0和4095都不用來標識VLAN
-
802.1Q幀是有交換機來處理的,而不是使用者主機來處理
- 當交換機收到普通的乙太網幀時,會將其插入4位元組的VLAN標記轉變為802.1Q幀,簡稱“打標籤”。
- 當交換機轉發802.1Q幀時,可能會刪除其4位元組VLAN標記轉變為普通乙太網幀,簡稱“去標籤"。
交換機的埠型別
埠型別:
- Access
- Trunk
- Hybrid(華為私有)
Access埠
- Access埠一般用於連結使用者計算機
- Access埠只能屬於一個VLAN
- Access埠的PVID值與埠所屬VLAN的ID相同
- Access埠接收處理方法
- 一般只接受“未打標籤”的普通乙太網MAC幀。根據接收幀的埠的PVID給幀“打標籤”,即插入4位元組VLAN標記欄位,欄位中的VID取值與埠的 PVID取值相等。
- Access埠傳送處理方法
- 若幀中的VID與埠的PⅥD相等,則“去標籤”並轉發該幀;否則不轉發。
Trunk埠
- Trunk埠一般用於交換機之間或交換機與路由器之向的互連
- Trunk埠可以屬於多個VLAN
- 使用者可以設定 Trunki埠的PVID值。預設情況下, Trunk埠的PVID值為1
- Trunk埠傳送處理方法:
- 對VID等於PVID的幀,“去標籤”再轉發;
- 對VID不等於PVID的幀,直接轉發;
- Trunk埠接收處理方法:
- 接收“末打標籤”的幀,根據接收幀的埠的PVID給幀“打標籤”,即插入4位元組VLAN標記欄位,欄位中的ⅥD取值與埠的PVID取值相等。
- 接收“已打標籤的幀”