什麼是無噪聲通道和有噪聲通道?
資料鏈路層協議根據傳輸通道是有噪聲還是無噪聲分為兩類。
資料鏈路層協議的示意圖如下所示:

無噪聲通道
有兩種無噪聲通道,如下所示:
- 單工通道
- 停等通道
讓我們考慮一個理想的通道,其中沒有幀丟失、重複或損壞。我們為這種型別的通道引入了兩種協議。這兩種協議如下所示:
- 不使用流量控制的協議。
- 使用流量控制的協議。
現在讓我們考慮不使用流量控制的協議:
最簡單的協議
步驟 1 - 最簡單的協議,沒有流量或錯誤控制。
步驟 2 - 這是一種單向協議,資料幀在一個方向上傳輸,即從傳送方到接收方。
步驟 3 - 讓我們假設接收方可以處理它接收的任何幀,其處理時間足夠小以至於可以忽略不計,接收方的資料鏈路層會立即從幀中刪除報頭並將資料包傳遞給其網路層,網路層也可以立即接受該資料包。

停等協議
步驟 1 - 如果到達接收方的資料幀比它們可以處理的速度快,則必須儲存這些幀直到使用它們。
步驟 2 - 通常,接收方沒有足夠的儲存空間,尤其是在它從多個來源接收資料時。這可能導致幀被丟棄或拒絕服務。
步驟 3 - 為防止接收方被幀淹沒,傳送方必須減慢速度。接收方必須向傳送方傳送ACK。
步驟 4 - 在此協議中,傳送方傳送一個幀,停止直到收到接收方的確認,然後傳送下一個幀。
步驟 5 - 我們仍然對資料幀進行單向通訊,但輔助 ACK 幀從另一個方向傳輸。我們向之前的協議添加了流量控制。

有噪聲通道
有噪聲通道有三種類型的請求,如下所示:
- 停等自動重傳請求。
- 回退N自動重傳請求。
- 選擇重傳自動重傳請求。
無噪聲通道通常是不存在的通道。我們可以忽略錯誤,或者我們需要在我們的協議中新增錯誤控制。
停等自動重傳請求
步驟 1 - 在有噪聲通道中,如果幀在傳輸過程中損壞,接收方將在校驗和的幫助下檢測到。
步驟 2 - 如果收到損壞的幀,它將被丟棄,並且發射機將在收到正確的確認後重新發送相同的幀。
步驟 3 - 如果確認幀丟失並且“A”上的資料鏈路層最終超時。由於沒有收到 ACK,它假設其資料幀丟失或損壞,並再次傳送包含資料包 1 的幀。此重複幀也到達“B”上的資料鏈路層,因此部分檔案將被複制,並且協議被認為是失敗的。
步驟 4 - 要解決此問題,請在訊息的報頭中分配序列號。
步驟 5 - 接收方檢查序列號以確定訊息是否重複,因為任何時候都只傳輸訊息。
步驟 6 - 傳送和接收站只需要 1 位交替的“0”或“1”序列來維護傳輸訊息及其 ACK/NAK 的關係。
步驟 7 - 使用模 2 編號方案,其中幀交替標記為“0”或“1”,正確認的形式為 ACK 0 和 ACK 1。
停等 ARQ 的正常操作如下所示:

帶有丟失幀的停等 ARQ 如下所示:

回退N ARQ
為了提高傳輸效率,我們需要多個幀處於未完成狀態以保持通道繁忙,同時傳送方等待確認。
為了實現此目標,開發了兩種協議,它們如下所示:
- 回退N自動重傳請求
- 滑動視窗協議
回退N ARQ
步驟 1 - 在此協議中,我們可以在收到確認之前傳送多個幀。
步驟 2 - 我們保留這些幀的副本,直到收到確認。
步驟 3 - 來自發送站的幀按順序編號。但是,我們需要在報頭中包含每個幀的序列號;我們需要設定一個限制。
步驟 4 - 如果幀的報頭允許 m 位用於序列號,則序列號範圍為 0 到 2m-1。我們也可以重複序列號。
示例
對於 m = 2,序列號範圍為:0 到 3,即
0,1,2,3, 0,1,2,3,…
回退N ARQ 在下圖中以圖表格式顯示:

示例
以下是關於無噪聲通道和有噪聲通道的示例問題
問題 - 考慮一個在 4 KHZ 寬通道上傳輸的二進位制訊號,找出無噪聲通道和信噪比為 20dB 的有噪聲通道的最大資料速率。
解決方案
Maximum Data Rate for noiseless = 2 * Bandwidth * log2(2) => 2 * 4khz * log2(2) = 2*4000 = 8000 bps Maximum Data Rate for noisy = Channel Capacity * log2(1 + SNR) = 4000 * log2(1 + 20) = 4000 * 4.39 = 17569.269 bps
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP