停止等待協議的演算法

來源:互聯網
上載者:User

停止等待協議的演算法
為了對停止等待演算法有一個完整而準確的理解,下面給出此協議的演算法。
發送方:
(1) 取一個待發送的資料幀。
(2) V(S)←0。 /* 發送狀態變數(幀序號)初始化 */
(3) N(S)←V(S); /* 將發送狀態變數的數值寫入發送序號 */
將資料幀送交發送緩衝。
(4) 將發送緩衝中的資料幀發送出去。
(5) 設定逾時計時器。 /* 選擇適當的逾時重傳時間tout */
(6) 等待。 /* 等待以下3個事件中最現出現的一個 */
(7) 若收到確認幀(ACK),則:
取一個新的待發送資料幀;
V(S)←[1- V(S)]; /* 更新發送狀態變數,序號交替為0和1 */
轉到(3)。 /* 準備發送下一資料幀 */
(8) 若收到否認幀(NAK),則轉到(4)。 /*重傳資料幀 */
(9) 若逾時計時器時間到,則轉到(4)。 /*重傳資料幀 */
接收方:
(1) V(R)←0。 /* 接收狀態變數初始化,欲接收的幀序號*/
(2) 等待。
(3) 收到一個資料幀並檢錯;
若檢測出幀出錯,轉到(8)。
(4) 若N(S) ≠ V(R),則: /* 幀無錯,則檢測幀序號是否正確 */
丟棄此資料幀; /* 序號有誤,表示重複幀 */
轉到(7)。
(5)將收到的資料幀中的資料部分送交高層。 /* 序號正確,認可資料幀 */
(6)V(R)←[1- V(R)]。 /* 更新接收狀態變數,準備接收下一資料幀 */
(7)N(R)←V(R); /* 將發送狀態變數的數值寫入接收序號 */
發送確認幀(ACK),並轉到(2)。 /* 請求發送下一資料幀 */
(8)發送否認幀(ACK),並轉到(2)。 /* 請求重傳該資料幀 */

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.