【計算機網絡】數據鏈路層-基本數據鏈路層協議
協議1:一個烏托邦式的單工協議
單工協議即數據只能單向傳輸。這個協議假設信道永遠不會丟失或損壞幀,接收方的處理能力足夠快,緩沖區足夠大。
發送程序無限循環,接受程序響應事件,協議1中不包含流量控制和糾錯功能。
協議2:無錯信道上的單工停-等式協議
發送方的速度如果過快,接收方會被淹沒,除了增強接收方的處理能力,可以讓接收方給發送方發送反饋,發送方收到后才可以發送下一幀。
發送程序無限循環並等待接收方確認,接受程序響應事件后發送確認幀。
協議3:有錯信道上的單工停-等式協議
有錯信道上傳輸數據需要增加校驗,接收方僅在數據正確時發送確認幀。但在確認幀丟失的情況下(超時),發送方將重發。接收方難以判斷幀是重發還是新發,因此幀前加上序號以區分。
重復的幀也會收到確認幀,以便發送方決策。
停止等待協議(Stop-and-Wait Protocol)
停止等待協議是tcp保證傳輸可靠的重要途徑,”停止等待”就是指發送完一個分組就停止發送,等待對方的確認,只有對方確認過,才發送下一個分組.
無差錯情況
無差錯情況:發送方發送分組,接收方在規定時間內收到,並且回復確認.發送方再次發送……
超時重傳的情況
1.分組丟失:發送方發送分組,接收方沒有收到分組,那么接收方不會發出確認,只要發送方過一段時間沒有收到確認,就認為剛才的分組丟了,那么發送方就會再次發送.
2.確認丟失:發送方發送成功,接收方接收成功,確認分組也被發送,但是分組丟失,那么到了等待時間,發送方沒有收到確認,又會發送分組過去,此時接收方前面已經收到了分組,那么此時接收方要做的事就是:丟棄分組,重新發送確認.
3.傳送延遲:發送方發送成功,接收方接收成功,確認分組也被發送,沒有丟失,但是由於傳輸太慢,等到了發送方設置的時間,發送方又會重新發送分組,此時接收方要做的事情:丟棄分組,重新發送確認. 發送方如果收到兩個或者多個確認,就停止發送,丟棄其他確認.
優缺點
停止等待協議的優點是簡單,但是缺點是信道的利用率太低,一次發送一條消息,使得信道的大部分時間內都是空閑的,為了提高效率,我們采用流水線傳輸,這就與下面兩個協議有關系了.
錯誤的控制
ARQ(自動重復請求)實現錯誤控制
- 如果正確的接收,那么接受方會發送一個"ack"幀給發送方
- 如果發送方沒有收到接受方回復的"ack"幀,那么發送方會設置計時器並重新發送傳輸幀
為了確保正確性,必須對框架和ack進行編號
- 接收機需要區分重傳(由於丟失ack或提前定時器)和新幀,對於stop和wait,2個數字(使用1位)就足夠了
滑動窗口協議
滑動窗口的概念
發送方擁有着一個窗口,這個窗口里面裝着可以發送的幀
- 它需要暫時存儲這些幀,因為這些幀可能被重傳
- 當這個窗口接受到確認幀后,它就會向前移動
接受方擁有着一個可以接受幀的窗口
- 它要為將要到來的幀預留空間
- 這個窗口隨着按順序到來的幀而逐漸向前移動
一開始的時候,接受方可以接受一個幀,發送方之后發送了一個幀。接受方接受了這個幀之后,可以向后滑動一個單位,准備接受下一個幀,當發送方得到接受方回復給它的確認幀ack之后,繼續向后滑動一個窗口,准備發送下一個幀。
滑動窗口協議的特點
- 只有接受窗口向前移動的時候,發送窗口才會向前移動
- 從滑動窗口的概念來看,停止等待協議、回退N協議和選擇重傳協議只不過是發送窗口和接受窗口的大小不同
- 停止等待協議:發送窗口和接受窗口大小都是1
- 后退N協議:發送窗口>1,接收窗口大小為1
- 選擇重傳協議:發送窗口>1,接受窗口大小>1
- 當接收窗口大小為1的時候可以保證有序的被接收
- 數據鏈路層中,傳輸過程中滑動窗口的大小是固定的
可靠的傳輸機制
- 捎帶確認:接收方在會給發送方發送一個確認幀來告訴發送方收到了
- 超時重傳:在發送某個數據幀之后,就開啟一個計時器,開始計時,一旦超過某段時間還沒有收到確認幀,就重新發送該數據幀
自動重傳請求ARQ:接受方請求發送方重新發送出錯的數據幀來恢復出錯的幀,傳統的自動重傳分三種
- 停止等待ARQ
- 后退ARQ
- 選擇性重傳ARQ
窗口開的夠大的時候,幀在線路上可以連續的流動,因此又稱連續的ARQ協議
回退N協議
之前協議存在的問題?
過長的往返時間嚴重影響帶寬的利用率
如何提高帶寬的利用率?
發送端在收到確認之前,連續發送多幀
回退N協議的過程
- 發送窗口的大小>1,接收窗口的大小=1
- 接收端發現某一幀發生差錯時,直接丟棄所有后續的幀,對丟棄幀不發送確認
- 數據鏈路層除了接收應該遞交給網絡層的下一幀之外,拒絕接收其它任何幀
- 發送方最終會超時,將按順序重傳所有未被確認的幀,即從最初受損或丟失的那一幀開始
- 接收端接收幀的順序和發送端發出幀的順序相同
回退N協議窗口大小的選擇
- 用n表示序號字段長度;2^n表示發送端可發送幀的序號個數
- 發送窗口尺寸w應為2^(n-1)
回退n協議的適用情況
- 回退n幀協議,如果錯誤率較低時,工作的很好
- 但錯誤率較高時,就會浪費大量的帶寬在重傳上
選擇重傳協議
選擇重傳協議的特點
- 接收方的數據鏈路層存儲壞幀之后的所有正確的幀,當發送方得知某個幀出錯時,只是重傳此壞幀,而不是所有的后繼幀
- 在這個協議中,發送方和接收方都維持一個可接收序列號的窗口
- 接收窗口的大小>1,並為窗口中的每個序列號都提供一個緩沖區,每個緩沖區用一位判斷其是否為空
- 當某一幀到達時,接收方檢查其序列號,看其是否落在窗口內
- 如果落在窗口內且從未接收過,就接收並存儲
- 接收到的此幀保存在數據鏈路層,而不交給網絡層,直到比它序列號小的所有幀都按次序已交給了網絡層,此幀才能提交給網絡層
選擇重傳協議的窗口大小
窗口大小應為2n/2=(MAX_SEQ+1)/2
數據鏈路層協議實例
PPP(Point to Point)協議
點對點協議,提供了在點對點鏈路上傳輸多種協議數據包的一種標准方法。
PPP功能
- 處理錯誤檢測鏈路的配置
- 支持多種協議
- 允許身份認證等
PPP提供了3個主要特征
- 成幀方法。它可以毫無歧義地分割出一幀的結束和下一幀的開始。並且幀格式支持錯誤檢測
- 鏈路控制協議(LCP)。可用於啟動線路、測試線路、協商參數,以及不需要線路時關閉線路
- 協商網絡層選項的方法。協商方法與所使用的網絡層協議獨立。所選擇的方法對於每種支持的網絡層都有一個不同的網絡控制協議(NCP)。支持的網絡層協議有IPv4、IPv6、IPX和AppleTalk等
PPP幀格式
若Flag字節出現在Payload字段中,則需要用轉義字節0x7D去填充,然后將緊跟在后面的那個字節與0x20進行XOR操作
PPP鏈路建立到釋放的狀態轉換圖
PPP建鏈路的具體過程
- LCP協商,協商內容包括除RFC1661中所定義的選項之外,還要考慮PPPOA和PPPOE協議中規定的內容
- LCP協商過后就到了Establish階段,開始PAP或CHAP認證
- PAP為兩次握手認證,口令為明文。PAP認證過程如下:發送用戶名同口令到認證方,認證方查看是否有此用戶,口令是否正確,然后發送相應的響應
- CHAP為三次握手認證,口令為密文(密鑰)。CHAP認證由認證方發送一些隨機產生的報文,交給被認證,被認證方用自己的口令字用MD5算法進行加密,傳回密
文,認證方用自己保存的口令字及隨機報文用MD5算法加密,比較二者的密文,根據比較結果返回響應的響應
- 認證成功即進行Network階段協商(NCP),在IP接入中主要是IPCP協商(如IP地址和DNS地址的協商等)。任何階段的協商失敗都將導致鏈路的拆除。
- 協商成功,則鏈路建立成功,可以開始傳輸網絡層數據報文
SONET上的數據包
SONET(同步光網絡)
- 物理層協議
- 最常被用在廣域網的光纖鏈路上
- 提供了一個以定義良好速度運行的比特流,如2.4Gbps的OC-48鏈路
IP包被承載在PPP幀中通過SONET線路傳輸
ADSL
ADSL使用的協議和設備的概貌
- 在PPPOE應用中,CPE將PC上的以太網幀(攜帶PPP幀)通過ATM網絡橋接到集中路由器(Aggregation Router)上
- 當CPE為ADSL Modem時,PC為PPPOE Client,運行PPPOE模擬撥號軟件先將用戶數據封裝為PPP,再將PPP封裝到以太網幀中,PPP中相關的驗證信息將會送給集
中路由器進行PAP或CHAP驗證 - 通過驗證之后,PC會以IPCP協商的形式從集中路由器獲得IP地址