資料鏈路層
- 1. 概述
- 2. 三個基本問題
- 2.1 封裝成幀
- 2.2 透明傳輸
- 2.3 差錯檢測
- 2.3.1 回圈冗余檢驗
- 2.3.1.1 原理
- 2.3.1.2 計算
- 2.3.1.3 注意
- 3. 點對點信道
- 3.1 PPP協議
- 3.1.1 組成
- 3.1.2 幀格式
- 3.1.2.1 透明傳輸
- 位元組填充
- 零位元填充
- 3.1.2.2 差錯檢測
- 3.1.3 作業狀態
- 4. 廣播信道
- 4.1 以太網
- 4.1.1 概述
- 4.1.2 集線器
- 4.1.3 交換機
- 4.1.3.1 轉發程序
- 4.1.4 配接器
- 4.1.5 MAC層
- 4.1.5.1 MAC地址
- 4.1.5.2 MAC幀的格式
1. 概述

我們首先來看看資料鏈路層在網路體系中的地位,如上圖所示,主機H1給主機H2發送資料,中間要經過三個路由器和電話網,局域網以及廣域網等多種網路,從五層協議原理體系結構的角度來看,主機應具有體系結構中的各個層次,而路由器只需具有體系結構中的下面三層,各設備通過物理層下面的傳輸媒體進行互連,當主機H1發送資料時,資料的流動如上圖箭頭所示,主機H1將待發送的資料逐層封裝后,通過物理層將構成資料包的各位元轉化為電信號發送到傳輸媒體,資料包進入路由器后,由下往上逐層解封到網路層,路由器根據資料包中的目的網路地址和自身轉發表確定資料包的轉發埠,然后從網路層向下逐層封裝資料包,并通過物理層將資料包發送到傳輸媒體,資料包最終到達主機H2時,還要由下往上逐層解封,最終解封出主機H1所發送的資料,

而在本篇文章中,我們可以只關心資料鏈路層,而不考慮網路體系結構中的其他各層,也就是說,我們可以想象資料鏈路層從左向右沿水平方向傳送,從資料鏈路層來看,主句H1到H2的通信可以看成是在4段不同的鏈路上的通信組成的,
下面看幾個基本概念
鏈路(link):從一個結點到相鄰結點的一段物理線路(有線或無線),而中間沒有其他的交換結點,可見一條鏈路只是一條路徑的一個組成部分,
資料鏈路 (data link):除了物理線路外,還必須有通信協議來控制這些資料的傳輸,若把實作這些協議的硬體和軟體加到鏈路上,就構成了資料鏈路,

點對點信道:使用一對一的點對點通信方式,
廣播信道:使用一對多的廣播通信方式,必須使用專用的共享信道協議來協調這些主機的資料發送,
2. 三個基本問題

資料鏈路層在進行通信時,一般會有下面的幾個步驟:
- 結點A的資料鏈路層把網路層交下來的IP資料報添加首部和尾部封裝成幀
- 結點A把封裝好的幀發送到結點B的資料鏈路層
- 若節點B的資料鏈路層收到的幀無差錯,則從收到的幀中提取出IP資料報交給上層的網路層,否則丟棄該幀,
2.1 封裝成幀

上圖所示,網路層的IP資料報傳送到資料鏈路層,成為幀的資料部分,同時在幀的資料部分的前面和后面分別添加上首部和尾部,構成一個完整的幀,這就是資料鏈路層的資料傳送單元,

為了接收方的資料鏈路層能夠從物理層交付的位元流中提取出一個個的幀,首部和尾部的一個重要作用就是進行幀定界(即確定幀的界限),同時需要注意的是,并不是每一種資料鏈路層協議的幀都包含幀定界標志,如后面會介紹的以太網V2的MAC幀格式,
2.2 透明傳輸
透明傳輸是指資料鏈路層對上層交付的傳輸資料沒有任何限制,就好像資料鏈路層不存在一樣,換句話說就是無論發送什么樣的位元組合的資料,這些資料都能夠按照原樣沒有差錯地通過這個資料鏈路層,
考慮下面的情況,如果在上層交付的協議資料單元中,恰好也包含這個特定數值,那么接收方會錯誤地“找到幀的邊界”,導致錯誤,

為了解決這個問題,就必須想辦法使資料中可能出現的控制字符在接收端不被解釋為控制字符,具體做法是:發送端的資料鏈路層在資料中出現控制字符的前面插入一個轉義字符"ESC"(其16進制編碼為1B,二進制是00011011),而在接收端的資料鏈路層在把資料送往網路層之前洗掉這個插入的轉義字符,這種方法稱為字符填充(byte stuffing)或字符填充(character stuffing),

從上圖也可以看出,如果轉義字符也出現在資料中,那么解決方法仍然是在轉義字符的前面插入一個轉義字符,
2.3 差錯檢測

位元在傳輸程序中可能會產生差錯:1變成0,0變成1,這叫做位元差錯,在一段時間內,傳輸錯誤的位元占所傳輸位元總數的比率稱為誤碼率 BER (Bit Error Rate),
在計算機網路傳輸資料時,必須采用各種差錯檢測措施,目前在資料鏈路層廣泛使用的回圈冗余檢驗CRC(Cyclic Redundancy Check),
2.3.1 回圈冗余檢驗
2.3.1.1 原理

- 在發送端,先把資料劃分為組,假定每組 k 個位元,
- CRC 運算在每組 M 后面再添加供差錯檢測用的 n 位冗余碼,然后構成一個幀發送出去,一共發送 (k + n) 位,
2.3.1.2 計算

- 用二進制的模 2 運算進行 2n 乘 M 的運算,這相當于在 M 后面添加 n 個 0,
- 得到的 (k + n) 位的數除以事先選定好的長度為 (n + 1) 位的除數 P,得出商是 Q ,余數是 R,余數 R 比除數 P 少 1 位,即 R 是 n 位,
- 將余數 R 作為冗余碼拼接在資料 M 后面,一起發送出去,
這種為了進行檢錯而添加的冗余碼常稱為幀檢驗序列 FCS (Frame Check Sequence),
具體計算程序如下:

2.3.1.3 注意
在資料鏈路層使用 CRC 檢驗,能夠實作無位元差錯的傳輸,但這還不是可靠傳輸,
3. 點對點信道
3.1 PPP協議
對于點對點的鏈路,目前使用得最廣泛的資料鏈路層協議是點對點協議 PPP (Point-to-Point Protocol),
對于我們這些普通用戶,通常都需要連接某個ISP才能接入互聯網,PPP協議就是用戶計算機和ISP進行通信時所需要的資料鏈路層協議,
PPP協議能夠支持多種型別鏈路,比如1999年公布的在以太網上運行的PPP,即PPP over Ethernet,簡稱PPPoE,它是為寬帶上網的主機使用的鏈路層協議,


假設你家是FTTH(光纖入戶),ISP(電信移動之類的)會給你一個用戶名和密碼,登錄之后才能訪問互聯網,如上圖(了解一下就行了),當你在計算機上輸入用戶名和密碼后,會根據你輸入的內容生成PPP幀,然后再將PPP幀封裝在以太網幀中發出,認證服務器收到訊息,從以太網幀中取出PPP幀,最后獲取到你輸入的用戶名和密碼,進行身份的驗證,
3.1.1 組成
-
一個將 IP 資料報封裝到串行鏈路的方法,
-
一個用來建立、配置和測驗資料鏈路連接的鏈路控制協議 LCP (Link Control Protocol),
-
一套網路控制協議 NCP (Network Control Protocol),其中的每一個協議支持不同的網路層協議,如IP,DECnet,AppleTalk等,
3.1.2 幀格式

3.1.2.1 透明傳輸
先補充兩個概念

- 異步傳輸(Asynchronous Transmission)以字符為單位傳輸資料,發送端和接收端具有相互獨立的時鐘(頻率相差不能太多),并且兩者中任一方都不向對方提供時鐘同步信號,

- 同步傳輸(Synchronous Transmission Mode)以資料幀為單位傳輸資料,可采用字符形式或位組合形式的幀同步信號,在短距離的高速傳輸中,該時鐘信號可由專門的時鐘線路傳輸,由發送端或接收端提供專用于同步的時鐘信號,計算機網路采用同步傳輸方式時,常將時鐘同步信號(前同步碼)植入資料信號幀中,以實作接收端與發送端的時鐘同步,
位元組填充

當 PPP 用在異步傳輸時,使用位元組填充法,其中轉義字符定義為0X7D(即01111101),具體規則如下:
- 把資訊欄位中出現的每一個0x7E位元組轉變成為2位元組序列(0x7D,0x5E),
- 若資訊欄位中出現一個0x7D的位元組(即出現了和轉義字符一樣的位元組合),則把0x7D轉變成為2位元組序列(0x7D,0x5D)
- 若資訊欄位中出現ASCII碼的控制字符(即數值小于0x20的字符),則在該字符前面要加入一個0x7D字符,同時將該字符的編碼加以改變,例如,出現0x03(在控制字符中是“傳輸結束”ETX)就要把他轉變為2位元組序列(0x7D,0x23),
零位元填充

在同步傳輸的鏈路上,資料傳輸以幀為單位,PPP協議采用零位元填充方法來實作透明傳輸,大家把PPP協議幀界定符0x7E寫成二進制01111110,也就是可以看到中間有連續的6個1,只要想辦法在資料部分不要出現連續的6個1,就肯定不會出現這界定符,具體辦法就是“零位元填充法”,
3.1.2.2 差錯檢測

3.1.3 作業狀態
PPP 鏈路初始化程序:
- 用戶撥號接入 ISP 后,就建立了一條從用戶個人電腦到 ISP 的物理連接,
- 用戶個人電腦向 ISP 發送一系列的鏈路控制協議 LCP 分組(封裝成多個 PPP 幀),以便建立LCP連接,
- 之后進行網路層配置,網路控制協議 NCP 給新接入的用戶個人電腦分配一個臨時的 IP 地址,
- 當用戶通信完畢時,NCP 釋放網路層連接,識訓原來分配出去的IP地址,LCP 釋放資料鏈路層連接,最后釋放的是物理層的連接,

4. 廣播信道
廣播通道可以進行一對多的通信,下面討論的局域網使用的就是廣播通道,局域網最主要的特點:網路為一個單位所擁有,地理范圍和站點數目均有限, 最初的局域網一般使用同軸電纜進行組網,各站直接連在總線上,稱為總線網,如下圖,其中以傳統以太網最為著名,由于以太網在局域網市場中占據了絕對優勢,現在以太網幾乎成為局域網的同義詞,因此下面都是討論以太網技術,


若多個設備在共享的廣播信道上同時發送資料,則會造成彼此干擾,導致發送失敗,如上圖,目前在技術上有兩種解決方案:
- 靜態劃分信道:主要包括頻分復用,時分復用,波分復用,碼分復用,用戶只要分配到了信道就不會與其他用戶發生沖突,但這種方式代價比較高,不適合局域網使用,
- 動態媒體接入控制(多點接入):
- 隨機接入:所有的用戶可隨機地發送資訊,但如果恰巧有兩個或更多的用戶在同一時刻發送資訊,那么在共享媒體上就要發生碰撞,使得這些用戶的發送都失敗,當然也有相應的解決碰撞的網路協議,如CSMA/CD協議,這也是以前廣泛使用的,
- 受控使用:用戶不能隨機地發送資訊而必須服從一定的控制,這種在目前的局域網中使用的較少,
4.1 以太網
4.1.1 概述
傳統以太網傳輸媒體最初是使用粗同軸電纜,后來演進到使用比較便宜的細同軸電纜,然后發展為使用更便宜和更靈活的雙絞線,這種以太網采用星型拓撲,在星行的中心用集線器(hub)進行連接,

4.1.2 集線器
- 從表面上看,使用集線器的局域網在物理上是一個星行網,但由于集線器使用電子器件來模擬實際電纜線的作業,因此使用集線器的以太網在邏輯上仍是一個總線網,各站共享邏輯上的總線,使用的還是CSMA/CD協議,網站中的各占必須競爭對傳輸媒體的控制,并且在同一時刻至多只允許一個站發送資料,
- 一個集線器有許多介面,例如8至16個,每個介面通過
RJ-45插頭用雙絞線與一臺計算機上的配接器相連,因此,一個集線器很像一個多介面的轉發器, - 集線器作業在物理層,它的每個介面僅僅簡單地轉發位元——收到1轉發1,收到0轉發0,不進行碰撞檢測,若兩個介面同時有信號輸入,那么所有的介面都收不到正確的幀,

使用集線器可以在物理層拓展以太網,我們來舉例說明,假設某學院下設三個系部,每個系部都有一個使用集線器作為互連設備的以太網,這三個以太網相互獨立,各自共享自己的總線資源,是三個獨立的碰撞域,例如一系中的某臺主機給另一臺主機發送資料幀,由于總線特性,表示該資料幀的信號會傳輸到一系中的其他個主機;二系中的多臺主機同時發送資料幀,由于總線特性,這必然會產生信號碰撞,碰撞后的信號會傳輸到二系中的各主機,為了使各系部中的以太網能夠相互通信,可再使用一個集線器將它們互連起來,,這樣,原來三個獨立的以太網,就互連成為了一個更大的以太網,而原來三個獨立的碰撞域,就合并成了一個更大的碰撞域,例如,當一系中的某臺主機給二系中的某臺主機發送資料幀,由于總線特性,表示該資料幀的信號會傳輸到整個網路中的其它各主機,
4.1.3 交換機
后來發展出了更先進的網路互連設備——以太網交換機,它也是目前使用最廣泛的互連設備,我們先從一個典型的例子來看看以太網交換機和集線器的區別

假設使用集線器互連而成的共享總線式以太網上的主機1要給主機3發送單播幀,該單播幀會通過共享總線傳播到總線上的其他各個主機,使用交換機互連而成的交換式以太網上的主機1要給主機3發送單播幀,該單播幀進入交換機后,交換機會將該單播幀轉發給目的主機,而不是網路中的各個主機,
總結起來,有以下特點:
- 以太網交換機通常由多個介面,每個介面都可以直接與一臺主機或另一個以太網交換機相連,一般都作業在全雙工方式,
- 以太網交換機具有并行性,能同時連接多對介面,使多對主機能同時通信,無碰撞(不使用CSMA/CD協議)
- 以太網交換機一般都具有多種速率的介面,例如:10Mb/s,100Mb/s,1Gb/s介面的多種組合,
- 以太網交換機作業在資料鏈路層(也包括物理層),它收到幀后,在幀交換表中查找幀的目的MAC地址所對應的介面號,然后通過該介面轉發幀,
- 以太網交換機內部的轉交換表(又稱為地址表)是通過自學習演算法自動地逐漸建立起來的,
- 有時為了增加網路的可靠性,在使用以太網交換機組網時,往往會增加一些冗余的鏈路,在這種情況下,子學習的程序可能會導致以太網幀在網路的某個環路中無限制地兜圈,為了解決這個問題,制定了一個生成樹協議STP(Spanning Tree Protocol),其主要是不改變網路的實際拓撲,但在邏輯上切除某些鏈路,使得從一臺主機到所有其他主機的路徑是五環路的樹狀結構,從而消除了兜圈子現象,
4.1.3.1 轉發程序
假定以太網交換機有4個介面,各連接一臺計算機,其MAC地址分別是A,B,C,D,一開始,以太網交換機里賣弄的交換表都是空的,

A 先向 B 發送一幀,該幀從介面 1 進入到交換機,交換機收到幀后,先查找交換表,沒有查到應從哪個介面轉發這個幀給 B,交換機把這個幀的源地址 A 和介面 1 寫入交換表中,交換機向除介面 1 以外的所有的介面廣播這個幀,

由于與該幀的目的地址不相符,C 和 D 將丟棄該幀,

B 向 A 發送一幀,該幀從介面 3 進入到交換機,交換機收到幀后,先查找交換表,發現交換表中的 MAC 地址有 A,表明要發送給 A 的幀應從介面 1 轉發出去,于是就把這個幀傳送到介面 1 轉發給 A,交換機把這個幀的源地址 B 和介面 3 寫入交換表中,

考慮到可能有時要在交換機的介面更換主機,或者主機要更換其網路配接器,這就需要更改交換表中的專案,為此,在交換表中每個專案都設有一定的有效時間,過期的專案就自動被洗掉,

4.1.4 配接器

計算機與外界局域網的連接是通過主機箱內插入的一塊網路設配器(又稱網路介面卡,簡稱網卡)實作的,網卡上裝有處理器與存盤器,是作業在鏈路層和物理層的網路組件,是局域網中連接計算機和傳輸介質的介面,不僅能實作與局域網傳輸介質之間的物理連接和電信號匹配,還涉及幀的發送與接收、幀的封裝與拆封、幀的差錯校驗、介質訪問控制(以太網使用CSMA/CD協議)、資料的編碼與解碼以及資料快取的功能等,

4.1.5 MAC層
- 在廣播信道實作點到點通信,這就需要網路中的每個網卡有一個地址,這個地址稱為物理地址或MAC地址(因為這種地址用在MAC幀中),IEEE802標準為局域網規定了一種48位的全球地址,
- 這種6位元組的MAC地址已被固化在網卡的ROM中,因此,MAC地址也叫作硬體地址(hardware address)或物理地址,當這塊網卡插入(或嵌入)到某臺計算機后,網卡上的MAC地址就成為這臺計算機的MAC地址了,
- 網卡有過濾功能,配接器從網路上每收到一個MAC幀就先用硬體檢查MAC幀中的目的地址,如果是發往本站的幀則收下,然后再進行其他的處理,否則就將此幀丟棄,不再進行其他的處理,這樣做就不浪費主機的處理機和記憶體資源,這里“發往本站的幀”包括以下三種幀:
- 單播(unicast)幀(一對一),即收到的幀的MAC地址與本站的硬體地址相同,
- 廣播(broadcast)幀(一對全體),即發送給本局域網上所有站點的幀(全1地址),
- 多播(multicast)幀(一對多),即發送給本局域網上一部分站點的幀,
4.1.5.1 MAC地址

- IEEE 注冊管理機構 RA 負責向廠家分配前 3 個位元組 (即高 24 位),稱為組織唯一識別符號 OUI (Organizationally Unique Identifier),
- 廠家自行指派后 3 個位元組 (即低 24 位),稱為擴展識別符號 (extended identifier),
- 必須保證生產出的配接器沒有重復地址,
- 地址被固化在配接器的 ROM 中,
- 廣播地址:所有 48 位都為 1(全 1),只能作為目的地址使用,
4.1.5.2 MAC幀的格式
常用的以太網 MAC 幀格式有 2 種標準:
- DIX Ethernet V2 標準
- IEEE 的 802.3 標準
最常用的 MAC 幀是以太網 V2 的格式,下面介紹一下這一種,

- 前導碼:由硬體在幀的前面插入 8 位元組,第一個欄位共 7 個位元組,是前同步碼,用來迅速實作 MAC 幀的位元同步,第二個欄位 1 個位元組是幀開始定界符,表示后面的資訊就是 MAC 幀, MAC幀并不需要幀結束符,因為以太網在傳輸幀時,各幀之間必須有一定的間隙,因此,接收端只要找到幀開始定界符,其后面連續到達的布特六就都屬于同一個MAC幀,
- 型別:指出資料與中攜帶的資料應交給哪個協議物體處理,若型別欄位的值為0x8000,則表示上層使用的是IP資料報,
- FCS:校驗碼,校驗范圍從目的地址到資料段的尾部,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289285.html
標籤:其他
上一篇:【網路知識補習】??| 由淺入深了解HTTP(八)HTTP/1.x 的連接管理
下一篇:Linux學習手冊大全
