如何提高UDP的可靠性


TCP是通過確認機制和超時重傳機制實現可靠傳輸

 

UDP

UDP它不屬於連接型協議,因而具有資源消耗小,處理速度快的優點,所以通常音頻、視頻和普通數據在傳送時使用UDP較多,因為它們即使偶爾丟失一兩個數據包,也不會對接收結果產生太大影響。傳輸層無法保證數據的可靠傳輸,只能通過應用層來實現了。實現的方式可以參照tcp可靠性傳輸的方式,只是實現不在傳輸層,實現轉移到了應用層。

關鍵在於兩點,從應用層角度考慮:

1 提供超時重傳,能避免數據報丟失。

2 提供確認序列號,可以對數據報進行確認和排序。

 

本端:首先在UDP數據報定義一個首部,首部包含確認序列號和時間戳,時間戳是用來計算RTT(數據報傳輸的往返時間),從何計算出合適的RTO(重傳的超時時間)。然后以等-停的方式發送數據報,即收到對端的確認之后才發送下一個的數據報。當時間超時,本端重傳數據報,同時RTO擴大為原來的兩倍,重新開始計時。

 

對端:接受到一個數據報之后取下該數據報首部的時間戳和確認序列號,並添加本端的確認數據報首部之后發送給對端。根據此序列號對已收到的數據報進行排序並丟棄重復的數據報。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM