今天的內容主要講的是如何保證廣域網中計算機的通信的可靠性:
- 數據鏈路層概述
- 點對點協議:PPP
- 點對多點協議:CSMA/CD
- 差錯控制技術
1. 數據鏈路層概述
鏈路層中的信道
數據鏈路層使用的信道主要有以下兩種類型:
- 點對點信道:這種信道使用一對一的點對點通信方式。
- 廣播信道:這種信道使用一對多的廣播通信方式,因此過程比較複雜。廣播信道上連接的主機很多,因此必須使用專用的共享信道協議來協調這些主機的數據發送。
數據鏈路和幀
- 鏈路(link) 是一條無源的點到點的物理線路段,中間沒有任何其他的交換結點。
一條鏈路只是一條通路(端到端)的一個組成部分。 - 數據鏈路(data link) 除了物理鏈路外,還必須有通信協議來控制這些數據的傳輸。若把實現這些協議的硬件和軟件加到鏈路上,就構成了數據鏈路。
現在最常用的方法是使用適配器(即網卡)來實現這些協議的硬件和軟件。
一般的適配器都包括了數據鏈路層和物理層這兩層的功能。
數據鏈路層傳送的是幀(Frame):
鏈路層提供的服務
數據鏈路層主要任務是實現網絡上兩個相鄰結點之間的無差錯傳輸。它在物理層提供物理連接和透明傳輸比特流服務的基礎上,將物理層提供的不可靠的物理鏈路變爲邏輯上無差錯的數據鏈路,向網絡層提供一條透明的數據鏈路。
- 成幀:封裝網絡數據報加上若干首(尾)部字段成爲幀(Frame)
- 鏈路接入
- 媒體訪問控制(Medium Access Control,MAC):規定了幀在鏈路上傳輸的規則
- MAC協議用於協調多個結點的幀傳輸
- 可靠交付
- 確認和重傳
- 用於易於產生高差錯率的鏈路(例如無線鏈路),目的是糾正一個差錯
- 差錯檢測和糾正
- 奇偶校驗法:變形:二維奇偶校驗法
- Internet檢驗和(checksum)方法
- 循環冗餘檢測 (cyclic redundancy check,CRC) 別稱:多項式編碼
鏈路層的三個基本問題
數據鏈路層協議有許多種,但有三個基本問題則是共同的。這三個基本問題是:
- 封裝成幀
- 透明傳輸
- 差錯控制
1. 封裝成幀
封裝成幀(framing)就是在一段數據的前後分別添加首部和尾部,然後就構成了一個幀。
確定幀的界限。首部和尾部的一個重要作用就是進行幀定界。
用控制字符進行幀定界的方法舉例 :
2. 透明傳輸
- 對於異步傳輸的透明傳輸辦法:字節(字符)填充
- 對於同步傳輸的透明傳輸辦法:零比特填充
零比特填充的具體過程如下:
將要傳輸的數據集實例: 1111110011111011
零比特填充後的數據集: 111110100111110011
經過比特填充和插入開始-停止比特後的數據集:
01111110 111110100111110011 01111110
因此,將要傳輸的幀是:
01111110 111110100111110011 01111110
幀的開始 帶比特填充的用戶數據 幀的結束
3. 差錯控制
所謂傳輸差錯是通過通信信道後接收的數據與發送數據不一致的現象。包括:比特錯誤(即幀中的一個比特在傳輸過程中 0變成1 或 1變成0 )、幀丟失、幀重複、幀失序。
差錯控制包括檢錯和糾錯
差錯控制編碼是在發送端被傳輸的信息碼元序列中,以一定的編碼規則附加一些校驗碼元,接收端利用該規則進行相應的譯碼,譯碼的結果有可能發現差錯或糾正差錯。
差錯控制編碼又可分爲檢錯碼和糾錯碼,前者能自動發現差錯,後者不僅能發現差錯而且能自動糾正差錯的編碼。
但是糾錯碼效率較低。一般通過反饋重傳機制來糾錯。
2. 點對點協議:PPP
- PPP協議原理與特點
- PPP協議幀格式
- PPP 的工作狀態
1. PPP協議原理與特點
現在全世界使用得最多的鏈路層協議是點對點協議 PPP (Point-to-Point Protocol)。
用戶使用撥號電話線接入因特網時,一般都是使用 PPP 協議。
PPP協議特點
- 簡單:這是首要的要求
- 支持多種網絡層協議:PPPoE
- 鏈路管理:LCP
- 差錯檢測:PPP中包括FCS域,用來檢測錯誤。
- 選項協商:PPP允許通信雙方動態協商某些參數,如最大傳送單元MRU
- 授權:PPP利用兩個授權協議PAP和CHAP,可進行鏈路層授權,這兩個協議通過發送和接收口令信息檢查對方是否被授權與本機建立鏈路。
- 網絡層IP地址協商:PPP允許一方作爲服務器,在客戶端撥入時分配IP地址。
2. PPP協議幀格式
F = 0x7E (“0x”表示後面的字符是用十六進制表示。二進制表示是 01111110)。
A 只置爲 0xFF。地址字段實際上並不起作用。控制字段 C 通常置爲 0x03。
PPP 是面向字節的,所有的 PPP 幀的長度都是整數字節。
PPP 有一個 2 個字節的協議字段:
- 當協議字段爲 0x0021 時,PPP 幀的信息字段就是IP 數據報。
- 若爲 0xC021, 則信息字段是 PPP 鏈路控制數據(LCP)。
- 若爲 0x8021,則表示這是網絡控制數據(NCP)。
3. PPP 的工作狀態
3. 點對多點協議:CSMA/CD
廣播信道可以進行一對多的通信,能很方便且廉價地連接多個鄰近的計算機。最早的局域網(以太網)是將許多計算機都連接到一根總線上。
由於用廣播信道連接的計算機共享同一傳輸媒體,因此使用廣播信道的局域網被稱爲共享式局域網。雖然交換式局域網在有線領域已完全取代了共享式局域網,但無線局域網仍然使用的是共享媒體技術。
媒體接入控制
- 靜態劃分信道
頻分多址、時分多址、碼分多址 … - 動態媒體接入控制(多點接入)
隨機接入,如以太網如何減少衝突,衝突後如何辦
受控接入 ,如令牌環或輪詢在集中或分佈式控制下輪流接入
當多個站點同時發送數據時,信號會相互疊加(衝突),導致嚴重的失真
CSMA/CD
載波監聽多點接入/碰撞檢測 CSMA/CD (Carrier Sense Multiple Access with Collision Detection)
- “多點接入”表示許多計算機以多點接入的方式連接在一根總線上。
- “載波監聽”是指每一個站在發送數據之前先要檢測一下總線上是否有其他計算機在發送數據,如果有,則暫時不要發送數據,以免發生碰撞。
- “碰撞檢測”就是計算機邊發送數據邊檢測信道上的信號電壓大小。
CSMA/CD介質訪問控制方法
載波偵聽多路訪問/衝突檢測法主要應用於邏輯拓撲結構爲總線結構的局域網。是一種隨機爭用型介質存取控制訪問方法。具體工作過程:
- 先聽後發
- 邊聽邊發
- 衝突停止;
- 隨機延遲後重發。
4. 差錯控制技術
1. 差錯形成原因及其指標
通信信道的噪聲分爲兩類:熱噪聲和衝擊噪聲:
- 由熱噪聲引起的差錯是隨機錯,不可避免;
- 衝擊噪聲引起的差錯是突發錯,外部引起;
在通信過程中產生的傳輸差錯,是由隨機差錯與突發差錯共同構成的。
誤碼率Pe應該是衡量數據傳輸系統正常工作狀態下傳輸可靠性的參數之一:
其中N爲傳輸的二進制碼元總數,Ne爲被傳錯的碼元數;
2. 差錯檢測
差錯檢測是通過檢錯碼來實現的。其原理是:在發送端被傳輸的信息碼元序列中,以一定的編碼規則附加一些校驗碼元,接收端利用該規則進行相應的譯碼從而發現差錯。幾種常用的檢錯碼:
- 奇偶校驗碼
變形:二維奇偶校驗碼 - Internet校驗和(checksum)
- CRC冗餘校驗
奇偶校驗碼
Internet校驗和(checksum)
在網絡中傳輸數據包,爲了保證傳輸數據的正確性,使用了 checksum來校驗數據是否正確,IP首部有自己的checksum,TCP、 UDP也有自己的checksum,分別校驗不同部分的數據, IP首部的 checksum用於校驗IP首部的數據是否正確, TCP的checksum用於校 驗TCP頭、 TCP數據部分是否正確, UDP的checksum用於校驗UDP 頭、 UDP數據是否正確。
- 發送端: 將發送的數據以兩字節爲單位進行補碼相加,checksum處設置爲0,得到32字節的數,再將底16位和高16位相加,結果求反,即爲較驗和。
- 接收端:和發送端相同的算法,checksum處使用發送端的結果進行補碼相加,結果求反爲0x0000,表明數據傳輸正確,否則數據傳輸不正確,捨棄。
checksum計算例子:
如計算下面一段數據的checksum,數據爲16進制;
45 00 00 3c 00 00 00 00 40 11 6d 36 c0 a8 2b c3 08 08 08 08 11
加粗的6d 36爲checksum字段,先把checksum設0,數據分組,補0,整理完後數據如下,中間checksum設置爲0,最後補1byte 0;
4500 003c 0000 0000 4011 0000 c0a8 2bc3 0808 0808 1100
計算:
500+003c+0000+0000+4011+0000+c0a8+2bc3+0808+0808+1100 = 192C8
高低16bit相加: 1 + 92C8 = 92C9
取反: ~92C9 = 6D36
最後所得數據爲:
45 00 00 3c 00 00 00 00 40 11 6d 36 c0 a8 2b c3 08 08 08 08 11
CRC冗餘校驗
循環冗餘編碼(CRC)是目前應用最廣、檢錯能力很強的一種檢錯碼編碼方法。
- 循環冗餘碼(CRC碼,多項式編碼)
110001,表示成多項式 x5 + x4 + 1 - CRC碼基本思想
先在要發送的幀後面附加一個數生成一個新幀發送給接收端。當然,這個附加的數不是隨意的,它要使所生成的新幀能與發送端和接收端共同選定的某個特定數整除(採用“模2除法”)。到達接收端後,再把接收到的新幀除以(同樣採用“模2除法”)這個選定的除數。因爲在發送端發送數據幀之前就已通過附加一個數,做了“去餘”處理,所以結果應該是沒有餘數。如果有餘數,則表明該幀在傳輸過程中出現了差錯。
循環冗餘編碼工作原理
生成多項式G(x):
CRC校驗舉例:
僅用循環冗餘檢驗 CRC 差錯檢測技術只能做到無差錯接受(accept)。
“無差錯接受”是指:“凡是接受的幀(即不包括丟棄的幀),我們都能以非常接近於 1 的概率認爲這些幀在傳輸過程中沒有產生差錯”。
也就是說:“凡是接收端數據鏈路層接受的幀都沒有傳輸差錯”(有差錯的幀就丟棄而不接受)。
要做到“可靠傳輸” 就必須再加上下一節要講的確認和重傳機制。
3. 差錯糾正--可靠傳輸
所謂可靠,即發送什麼就收到什麼,在不可靠的信道上實現可靠的數據傳輸
停止等待ARQ協議
可靠傳輸的機制和模型
差錯檢測和確認
只要超過了一段時間還沒有收到確認,就認爲已發送的幀出錯或丟失了,因而重傳已發送過的幀。這就叫做超時重傳。
超時計時器的重傳時間應當比數據在分組傳輸的平均往返時間更長一些。
數據幀和確認幀都必須進行編號。
重傳、編號、確認都是由可靠傳輸協議實體實現的,上層用戶完全感覺不到!
自動重傳請求ARQ
使用上述的確認和重傳機制,我們就可以在不可靠的傳輸網絡上實現可靠的通信。
這種可靠傳輸協議常稱爲自動重傳請求ARQ (Automatic Repeat reQuest)。
ARQ 表明重傳的請求是自動進行的。接收方不需要請求發送方重傳某個出錯的分組 。
停止等待ARQ的信道利用率較低,還有連續ARQ協議,留待傳輸層一章講述TCP協議時介紹。
數據鏈路層的可靠傳輸
實現可靠傳輸需要付出代價(如會降低傳輸效率)。
因此,應當根據鏈路的具體情況來決定是否需要讓鏈路層向上提供可靠傳輸服務。
當鏈路誤碼率非常低時,在數據鏈路層可不實現可靠傳輸,而是由上層協議(例如,運輸層的TCP協議)來完成。
但是在使用無線信道傳輸數據時,由於信道質量較差,在數據鏈路層仍需要實現可靠傳輸(例如使用停止等待協議)。