一、數據鏈路層的簡介
1.基本概念
- 數據鏈路層在物理層提供的服務基礎上向網絡層提供服務,其主要作用是加強物理層傳輸原始比特流的功能,將物理層提供的可能出錯的物理連接改造為邏輯上無差錯的數據鏈路,使之對網絡層表現為一條無差錯的鏈路
- 鏈路:一條無源的點到點的物理路段,中間沒有任何其他的交換結點
- 一條鏈路只是一條通路的一個組成部分
- 數據鏈路:除了物理線路外,還必須有通信協議來控制這些數據的傳輸,若把實現這些協議的硬件和軟件加到鏈路上,就構成了數據鏈路
- 數據鏈路傳輸的數據單位是幀
2.主要功能
- 對網絡層而言,數據鏈路層的基本任務是將源機器中來自網絡層的數據傳輸到目標機器的網絡層
- 有連接就一定要有確認
- 主要可為網絡層提供三種服務:無確認的無連接服務、有確認的無連接服務、有確認的面向連接的服務
- 鏈路管理:數據鏈路層連接的建立、維持和釋放過程
- 幀定界:幀的首部和尾部中含有很多控制信息,它們的一個重要作用是確定幀的邊界
- 幀同步:指接收方應能從接收的二進制比特流中區分出幀的起始和終止
- 透明傳輸:透明表示一個實際存在的事物看起來好像不存在一樣
- 流量控制:實際上是限制發送方的數據流量,使其發送速率不超過接收方的接收能力
- 流量控制並不是數據鏈路層特有的功能,許多高層協議中也提供此功能,只不過控制的對象不同而已
- 差錯控制:由於噪聲等各種原因,幀在傳輸過程中可能會出現錯誤,用以使發送方確定接收方是否正確接收到由其發送的數據的方法
- 位錯:指幀中某些位出現差錯,通常使用循環冗余校驗(CRC)方式發現錯誤,通過自動重傳請求(ARQ)方式來重傳出錯的幀
- 幀錯:指幀丟失、重復或失序等錯誤,在數據鏈路層中引入定時器和編號機制
二、組幀
- 把數據分割、封裝成幀
- 將網絡層傳下來的分組添加首部和尾部,用於標記幀的開
始和結束 - 接收者如何從位流中區分出幀的邊界(幀同步),即幀的開始和結束
- 將網絡層傳下來的分組添加首部和尾部,用於標記幀的開
- 透明:某一個實際存在的事物看起來卻好像不存在一樣
- 目前較常使用的組幀方法是比特填充法和違規編碼法
1.字節計數法
- 指在幀頭部使用一個計數字段來標明幀內字符數
- 計數字段提供的字節數包含自身所占用的一個字節
- 每幀以幀同步標志字節開始,后面緊跟幀長計數器
- 接收方收到幀,知道幀的長度,每接收一個數據字節,計數減1,直到0,便是幀尾,幀后跟校驗信息
- 缺點:
- 如果幀的長度域出錯,則同步信息完全丟失,必須重新開始建立同步
- 如果幀的長度域出錯,則同步信息完全丟失,必須重新開始建立同步
2.使用字符填充的首尾定界符法
- 面向字符的通信協議,以特定的ASCLL字符序列表示幀首、幀尾及控制字段
- 幀文本以STX開始,ETX結束
- 當數據中恰好出現STX或ETX時,幀的邊界會被誤識別
- 控制字符如STX,ETX前加入DLE
- 發送時對數據中的DLE,在其前面再插入一個DLE
- 缺點
- 兼容性差(依賴於特定的字符集,如ASCLL)
- 幀長位數需要為8的整數倍,不能傳輸任意長位數
- 若不用“DLE插入刪除技術”時,數據傳輸會不透明
3.使用比特填充的首尾標志法
- 以特殊的比特組合(如0111 1110同步序列)標志幀的開始和結束
- 位填充易於用硬件實現,如ISO的HDLC(高級數據鏈路規程)
- 解決數據傳輸的透明性
- (“0”比特插入刪除技術)發送方邊發邊檢查數據,每連續發送5個“1”后,即在后面自動插入一個“0”
- 接收方在收到5個連續的“1”后,將后面緊跟的1個“0”刪去,恢復原來的數據
- 優點:
- 面向位的通信協議,可傳送任意長度,通用性強
- 面向位的通信協議,可傳送任意長度,通用性強
4.編碼違例法
- 在物理層進行比特編碼時,通常采用違規編碼法
- 采用違反編碼規律的策略來標志幀的邊界
- 優點:
- 無須填充
- 缺點:
- 只適用於冗余編碼的特殊編碼環境
- 只適用於冗余編碼的特殊編碼環境
三、差錯控制
- 目的:保證所有的幀按順序、正確送到目的主機
- 解決:如何檢測出錯、如何糾正錯誤
- 噪聲來源:
- 熱噪聲:又稱白噪聲,由電子的熱運動產生
- 交叉調制噪聲:不同頻率的二個信號伴生出頻率和、差及整倍頻率的信號,干擾正常信號
- 串擾:由附近線路上的信號電偶合形成
- 脈沖干擾:外來的幅度大而持續時間短的干擾
- 脈沖干擾是數字數據信道造成錯誤的主要干擾源
- 差錯分類:
- 單個錯:由隨機的信道熱噪聲引起,一次只影響一位,差錯是孤立的,錯誤之間沒有關聯
- 突發錯:
- 由瞬間的脈沖噪聲引起,如雷電、馬達啟動等,會持續一段短的時間,由於線路上數據速率高,影響面較大,一般會影響持續的許多位
- 突發長度:突發錯所影響的最大連續數據比特數
- 通常利用編碼技術進行差錯控制
- 自動請求重發
- 向前糾錯FEC
- 混合糾錯:
- 結合上述兩種方式,能夠糾錯的則自動改正,否則請求重發
1.差錯編碼
- 在數據塊中加入冗余信息的過程
- 附加監督位:在數據塊中加入一些冗余信息,使數據塊中的各個比特建立起某種形式的關聯,接收端通過驗證這種關聯關系是否存在,來判斷數據在傳輸過程中有沒有出錯
- 幀檢驗序列(FCS):在數據后面添加上的冗余碼
- ARQ:自動重發請求:
- 發送方使用檢錯碼,接收方對收到的數據進行檢錯
- 接收方使用應答向發送方進行信息反饋
- 發送方若收到肯定應答:數據已被正確接收
- 發送方若收到否定應答:傳輸有錯,則重發,直至正確接收
- 為防止幀丟失導致發送方收不到應答,發送方發完一幀后,會啟動一個超時定時器,若定時到仍未收到應答,便進行重發
奇偶校驗碼
- 先將要發送的數據塊分組,且在每一組的數據碼元后面附加一個冗余位,使得該組連冗余位在內的碼字中“1”的個數為偶數(偶校驗)或奇數(奇校驗)
- 在接收端按同樣的規則檢查,如發現不符,就說明傳輸有誤
- 分類:垂直奇偶校驗碼、水平奇偶校驗碼、水平垂直奇偶校驗碼
- 校驗和:
- 發送:如以16位字為單位進行累加,再將最后累加和取“1補碼”(即反碼),得該字符串得校驗碼
- 接收:當接收者收到該數據塊后,同樣以16位字為單位對各數據及校驗和進行累加,若最后結果為全1,則正確,否則出錯
- 可靠性:
- 能夠檢測出絕大多數奇數個和偶數個數據位得變化
- 除非,一個16位字中的0變成1,而另一個16位字中的相同位置由1變成0
- 只能檢測奇數位的出錯情況,但並不知道那些位錯了,也不能發現偶數位的出錯情況
循環冗余校驗碼(CRC)
- 原理:設定一個除數d(多項式表示法最高階的次數即為n)
- 發送:將數據用除數d來相除,產生的余數作為FCS,附加在數據后發送
- 接收:將收到的數據和FCS用d來相除,若余數為0,則正確,否則出錯
- CRC檢驗碼的位數等於生成多項式的G(x)的最高次數
- 模2運算特點:
- 模2除:被除數高位為1即可相除,商為1
- 模2加、模2減:等於按位加(異或)運算
- 檢錯率:
- 可檢測出幾乎所有錯誤。當出現差錯的碼多項式仍能被G(X)整除時,錯誤就檢測不出來,發生這種情況的概率是非常小的
- 循環冗余碼是具有糾錯功能的,但是數據鏈路層僅使用了它的檢錯功能,檢測到幀出錯直接丟棄
2.前向糾錯(FEC)
- 發送端使用糾錯碼,接收端檢出錯並糾錯,但監督碼比較復雜、效率低,一般用於沒有反饋信道的單工通信中
- 缺點:冗余碼多、譯碼復雜;適用於單工信道
海明碼
- 確定位數:
- 信息位n,校驗位k:n+k <= 2k-1
- 確定碼距:
- 糾錯d位,需要的碼距:2*d+1
- 檢錯d位,需要的碼距:d+1
四、流量控制與可靠傳輸機制
- 流量控制:涉及對鏈路上幀的發送速率的控制,以使接受方有足夠的緩沖空間來接收每個幀
- 基本方法:由接收方控制發送方發送數據的速率
- 停止-等待協議
- 滑動窗口協議
1.可靠傳輸機制
- 現有的實際有線網絡的數據鏈路層很少采用可靠傳輸
- 數據鏈路層的可靠傳輸通常使用確認和超時重傳兩種機制來完成
- 確認,是一種無數據的控制幀,這種控制幀使得接收方可以讓發送方知道那些內容被正確接收
- 超時重傳,指發送方在發送某個數據幀后就開啟一個計時器,在一定時間內如果沒有得到發送的數據幀的確認幀,那么就重新發送該數據直到發送成功為止
2.基本方法的基本原理
停止-等待協議
- 發送方每發送一幀,都要等待接收方的應答信號,之后才能發送下一幀
- 接收方每接收到一幀,都要反饋一個應答信號,表示可以接收下一幀,如果接收方不反饋應答信號,那么發送方必須一直等待
- 每次只允許發送一幀,然后就陷入等待接收方確認信息的過程中,因而傳輸效率很低
滑動窗口協議
- 發送窗口:在任意時刻,發送方都維持一組連續的允許發送幀的序號
- 用來對發送方進行流量控制
- 發送窗口大小W代表在還未收到對方確認信息的情況下發送方最多還可以發送多少個數據幀
- 接收窗口:同時,接收方也維持一組連續的允許接收幀的序號
- 為了控制可以接收那些數據幀和不可以接收那些幀
- 只有收到的數據幀的序號落入接收窗口內時,才允許將該數據幀收下;若接收到的數據幀落在接收窗口之外,則一律丟棄
- 工作過程:
- 發送端每接收到一個確認幀,發送窗口就向前滑動一個幀的位置
- 當發送窗口內沒有可以發送的幀時,發送方就會停止發送
- 直到收到接收方發送的確認幀使窗口移動窗口內有可以發送的幀后,才開始繼續發送
- 接收端收到數據幀后,將窗口向前移動一個位置,並發回確認幀,若收到的數據幀落在接收窗口之外,則一律丟棄
- 重要特性:
- 只有接收窗口向前滑動時,發送窗口才有可能向前滑動
- 停止-等待協議、后退N幀協議和選擇重傳協議只能在發送窗口大小與接收窗口大小上有所差別
- 停止-等待協議:發送窗口大小 = 1,接收窗口大小 = 1
- 后退N幀協議:發送窗口大小 > 1,接收窗口大小 = 1
- 選擇重傳協議:發送窗口大小 >1,接收窗口大小 > 1
- 接收窗口大小為1時,可保證幀的有序接收
- 數據鏈路層的滑動窗口協議中,窗口的大小在傳輸過程中是固定的
五、介質訪問控制
六、局域網
七、廣域網
八、數據鏈路層設備
一、基本概念
三、因特網的點對點協議PPP
PPP協議的格式
- 組成部分
- 一個將IP數據報封裝到串行鏈路的方法
- 鏈路控制協議LCP
- 網絡控制協議NCP
- 幀格式
- 透明傳輸問題:
- 當PPP協議用在同步傳輸鏈路SONET/SDH時,協議規定采用硬件來完成比特填充
- 當PPP協議用在異步傳輸時,就使用一種特殊得字符填充法
PPP協議的特點
- 現在全世界使用得最多得數據鏈路層協議
- 用戶使用撥號電話線接入因特網時,一般都是使用PPP協議
- 優點:
- 透明性
- 支持多個網絡層協議(IP、ARP、XNS、AppleTalk、DECnet)等
- 錯誤檢測
- 網絡層地址協商(IP地址、DNS地址)
- 簡潔性
- 缺點:
- 無糾錯功能
- 無流控制
- 無順序保證
- 僅適用與點對點通信
PPP協議的工作狀態
- 步驟:
- 當用戶撥號接入ISP時,路由器的調制解調器對撥號做出確認,並建立一條物理連接
- PC機向路由器發送一系列的LCP分組(封裝成多個PPP幀)
- 這些分組及其響應選擇一些PPP參數,和進行網絡層配置,NCP給新接入的 PC機分配一個臨時的IP地址,使PC機成為因特網上的一個主機
- 通信完畢時,NCP釋放網絡層連接,收回原來分配出去的IP地址。接着,LCP釋放數據鏈路層連接。最后釋放的是物理層的連接
- 狀態圖:
- PPP認證處理:
- PAP:要求客戶方主動將用戶的帳號以明文形式填寫在一定的數據包字段中,發送請求。要求認證的一方匹配用戶帳號,響應認證成功或失敗結果。
- CHAP:采用三次握手的方式,先由要求認證方發送認證請求,再由客戶方根據該請求的數據(Request-Challenge)和用戶帳號,利用MD5算法計算新數據(Response-Challenge),組織新的數據幀應答,最后,由要求認證方確認用戶是否合法,返回應答數據
四、使用廣播信道的數據鏈路層
局域網
- 特點:
- 網絡為一個單位所擁有,且地理范圍和站點數目均有限
- 優點:
- 能方便地共享昂貴的外部設備、主機以及軟件、數據。從一個站點可訪問全網
- 便於系統的擴展和逐漸地演變,各設備的位置可靈活調整和改變
- 提高了系統的可靠性、可用性和殘存性
- 拓撲結構:
- Mesh:
- 特征:
- 每兩個通信的設備間都有一個專用鏈路
- 每個設備需要n-1個網絡I/O端口
- n個設備完全互連需要n(n-1)/2條鏈路
- 優點:
- 可靠性好
- 可用性好
- 保密和安全
- 有利於錯誤檢查和錯誤隔離
- 缺點:
- 鏈路數、網絡I/O端口數太多,每個設備的安裝和配置困難
- 線路占用較大空間
- 網絡硬件增加,成本增加
- 應用:廣域網,Internet骨干網
- Start:
- 特征:
- 每個設備都同一個中心控制器相連,這個控制器稱為HUB
- 設備之間並不連接,不能直接通信
- 設備之間的通信必須通過HUB進行轉接
- 優點:
- 成本比網狀結構下降。因為鏈路數和端口數減少
- 網絡容易配置和安裝
- 相對的可靠性。如果一個鏈路出錯,不會影響到其他鏈路。
- 缺點:
- 如果HUB出錯,則網絡通信全部中斷
- 比其他方式如總線,需要更多的電纜
- Tree:
- 特征:
- 星型網絡的變種,大多數設備連接到二級HUB上,而二級HUB則連到中央HUB上。
- 中央控制單元可以是SWITCH/HUB
- 優缺點:
- 單一HUB可以連接更多設備,增加信號傳輸距離。
- 可以隔離不同的計算機,並可提供優先通信。即連在一個HUB上的計算機通信速率最快。
- Bus:
- 特征:
- 一根電纜連接所有的設備。
- 設備通過連線同轉發器相連,而轉發器則連在線路上。線路兩端用終端器封閉。
- 優點:
- 容易安裝。可按最佳路徑來鋪設電纜。
- 使用較少的電纜。
- 缺點:
- 重新配置和錯誤隔離比較困難。
- 總線中的任何一處發生錯誤,都會使通信中斷。
- Ring:
- 特征:
- 所有設備連接成一個環形。
- 每一個設備包含一個中繼器,把收到的信息轉發到下一個站點,直到目的地。
- 每個設備有兩個端口,一個用作輸入,另一個用作輸出。
- 優點:
- 容易安裝和重配置,每一個設備只同它的鄰居相連,增加設備也方便。
- 錯誤檢測比較方便。一旦設備沒有收到信號,則它的輸入鏈路會有問題。
- 缺點:
- 單向通信。用雙向環來克服。
- 一個站點出錯或關閉會中斷通信,一個鏈路中斷也會產生同樣問題。
- 特征:
- 信道分配策略:
CSMA/CD協議
-
定義:
- 即所謂“先聽后說”
- 希望傳輸的站首先對信道進行監聽以確定是否有別的站在傳輸。
- 若信道空閑,該站可以傳輸,否則,該站將按一定算法退避一段時間后再試。
-
-
分類:
- 1-堅持CSMA
- 非堅持CSMA
- P-堅持CSMA
-
重要特性:
- 發送的不確定性:
- 每個站在發送數據之后的一小段時間內,存在着遭遇碰撞的可能性;
- 半雙工通信:
- 使用 CSMA/CD 協議的以太網不能進行全雙工通信而只能進行雙向交替通信(半雙工通信);
- 整個以太網的平均通信量遠小於以太網的最高數據率。
- 發送的不確定性:
-
-
1-堅持CSMA:
- 步驟:
- (1)監聽信道,若信道空閑就發送;
- (2)若信道忙則繼續堅持監聽,直至檢測到信道空閑后就立即(以概率1)發送;
- (3)若有沖突,則隨機等待一段時間,重復步驟(1)。
- 優點:
- 只要信道空閑,數據就立即得到發送;
- 缺點:
- 若有兩個或兩個以上的站點等發送,沖突就不可避免。
- 步驟:
-
非堅持CSMA:
- 步驟:
- (1)監聽信道,若信道空閑就發送;
- (2)若信道忙則放棄(不堅持)監聽,隨機等待一段時間,重復步驟(1);
- 優點:
- 采用隨機的重發延遲時間可以減少沖突的可能性;
- 缺點:
- 即使有幾個站有數據要傳送,信道仍然可能處於空閑狀態,信道利用率較低。
- 步驟:
-
P-堅持CSMA:
- 步驟:
- (1)監聽信道,若信道空閑就以概率p發送數據,以概率1-p 延遲至下一個時間片;
- (2)若信道忙則繼續堅持監聽,直至下一個時間片;
- (3)至下一個時間片后重復步驟 (1)。
- 如何選擇P的有效值:
- 設任一時刻平均有N個站有數據等待發送,則一旦當前的數據發送完畢,在下一個時間片里平均有Np個站發送數據。
- 若p過大,使Np > 1,表明有多個站試圖發送,沖突不可避免,所以應使 Np < 1 ;
- 若 p 過小,信道利用率會大大降低。
- 步驟:
五、傳統以太網
以太網的工作原理
- 兩個標准:
- DIX Ethernet V2 是世界上第一個局域網產品(以太網)的規約。
- IEEE 的 802.3 標准。
- 區別:
- DIX Ethernet V2 標准與 IEEE 的 802.3 標准只有很小的差別,因此可以將 802.3 局域網簡稱為“以太網”。
- 嚴格說來,“以太網”應當是指符合 DIX Ethernet V2 標准的局域網
- 數據層的兩個子層:
- 802 委員會就將局域網的數據鏈路層拆成兩個子層:
- 邏輯鏈路控制(LLC)子層
- 與接入到傳輸媒體有關的內容都放在 MAC 子層
- 媒體接入控制(MAC)子層
- 而 LLC 子層則與傳輸媒體無關,不管采用何種協議的局域網對 LLC 子層來說都是透明的
- 邏輯鏈路控制(LLC)子層
- 好處:
- 不同的物理網絡,物理層與MAC子層不同, 而LLC子層相同,網絡的上層協議可運行於任何一種IEEE 802標准的局域網上,具有透明性。
- 這種分層方法也使得IEEE 802標准具有良好的可擴充性,可以很方便地接納新的介質與介質訪問控制方法。
網卡的作用
- 網絡接口板又稱為通信適配器(adapter)或網絡接口卡NIC (Network Interface Card),或“網卡”。
- 計算機通過適配器和局域網進行通信
- 重要功能:
- 進行串行/並行轉換。
- 對數據進行緩存。
- 在計算機的操作系統安裝設備驅動程序。
- 實現以太網協議。
CSMA/CD協議
- 最初的以太網是將許多計算機都連接到一根總線上。當初認為這樣的連接方法既簡單又可靠,因為總線上沒有有源器件。
- 為了通信的簡便以太網采取了兩種重要的措施
- 無連接的工作方式:
- 不必先建立連接就可以直接發送數據
- 不可靠的交付,無差錯控制
- 以太網對發送的數據幀不進行編號,也不要求對方發回確認
- 這樣做的理由是局域網信道的質量很好,因信道質量產生差錯的概率是很小的
- 以太網發送的數據都使用曼徹斯特編碼:
- 缺點:它所占的頻帶寬度比原始的基帶信號增加了一倍
- 缺點:它所占的頻帶寬度比原始的基帶信號增加了一倍
- 無連接的工作方式:
爭用期/沖突檢測時間
- 爭用期(碰撞窗口):以太網的端到端往返時延 2τ
- 最先發送數據幀的站,在發送數據幀后至多經過時間 2τ(兩倍的端到端往返時延)就可知道發送的數據幀是否遭受了碰撞
- 經過爭用期這段時間還沒有檢測到碰撞,才能肯定這次發送不會發生碰撞
- CSMA/CD的必要時間
- 幀的傳輸時間>=2τ
- 以太網取 51.2 μs 為爭用期的長度
- 對於 10 Mb/s 以太網,在爭用期內可發送512 bit,即 64 字節
- 以太網在發送數據時,若前 64 字節沒有發生沖突,則后續的數據就不會發生沖突
- 凡長度小於 64 字節的幀都是由於沖突而異常中止的無效幀
截斷的二進制指數退避算法
- 發生碰撞的站在停止發送數據后,要推遲(退避)一個隨機時間才能再發送數據
- 確定基本退避時間,一般是取為爭用期 2τ
- 定義參數 k ,k <= 10,即k = Min[重傳次數, 10]
- 從整數集合[0,1,…, (2k -1)]中隨機地取出一個數,記為 r。重傳所需的時延就是 r 倍的基本退避時間
- 當重傳達 16 次仍不能成功時即丟棄該幀,並向高層報告
強化碰撞
- 當發送數據的站一旦發現發生了碰撞時,除了立即停止發送數據外,還要再繼續發送若干比特的人為干擾信號(jamming signal),以便讓所有用戶都知道現在已經發生了碰撞
以太網的信道利用率
- 一個幀從開始發送,經可能發生的碰撞后,將再重傳數次,到發送成功且信道轉為空閑(即再經過時間 τ 使得信道上無信號在傳播)時為止,是發送一幀所需的平均時間。
- 參數a:
- 在以太網中定義了參數 a,它是以太網單程端到端時延 τ 與幀的發送時間 T0 之比:
- 信道利用率最大值
- 在理想化的情況下,以太網上的各站發送數據都不會產生碰撞(已不是 CSMA/CD),即總線一旦空閑就有某一個站立即發送數據
- 理想情況下的極限信道利用率: