傳輸層無法保證資料的可靠傳輸,只能通過應用層來實現了。實現的方式可以參照tcp可靠性傳輸的方式,只是實現不在傳輸層,實現轉移到了應用層。
實現確認機制、重傳機制、視窗確認機制。
如果你不利用linux協議棧以及上層socket機制,自己通過抓包和發包的方式去實現可靠性傳輸,那麼必須實現如下功能:
傳送:包的分片、包確認、包的重發
接收:包的調序、包的序號確認
目前有如下開源程式利用udp實現了可靠的資料傳輸。分別為rudp、rtp、udt。
3.1rudp
rudp 提供一組資料服務質量增強機制,如擁塞控制的改進、重發機制及淡化伺服器演算法等,從而在包丟失和網路擁塞的情況下, rtp 客戶機(實時位置)面前呈現的就是乙個高質量的 rtp 流。在不干擾協議的實時特性的同時,可靠 udp 的擁塞控制機制允許 tcp 方式下的流控制行為。
3.3udt
基於udp的資料傳輸協議(udp-baseddata transfer protocol,簡稱udt)是一種網際網路資料傳輸協議。udt的主要目的是支援高速廣域網上的海量資料傳輸,而網際網路上的標準資料傳輸協議tcp在高頻寬長距離網路上效能很差。顧名思義,udt建於udp之上,並引入新的擁塞控制和資料可靠性控制機制。udt是面向連線的雙向的應用層協議。它同時支援可靠的資料流傳輸和部分可靠的資料報傳輸。由於udt完全在udp上實現,它也可以應用在除了高速資料傳輸之外的其它應用領域,例如點到點技術(p2p),防火牆穿透,多**資料傳輸等等。
因專案中的需要,現在詳細分析一下udt是如何通過udp實現資料的可靠傳輸。通過閱讀原始碼的方式。
udp如何實現可靠性傳輸?
包序號應用資料 型別保留 ack序號 控制資訊字段 說明控制資訊 000協議連線握手1 32位udt版本2 32位內部順序號3 32位mss 位元組 4 32位最大流量視窗大小 位元組 001保活 沒有010 應答,位 16 31 是應答序號1 32位包序號,先前接收到的包序號2 32位,rtt 微...
如何提高UDP的可靠性
tcp是通過確認機制和超時重傳機制實現可靠傳輸 udp關鍵在於兩點,從應用層角度考慮 1 提供超時重傳,能避免資料報丟失。2 提供確認序列號,可以對資料報進行確認和排序。本端 首先在udp資料報定義乙個首部,首部包含確認序列號和時間戳,時間戳是用來計算rtt 資料報傳輸的往返時間 從何計算出合適的r...
可靠性測試學習 可靠性測試理解
最近測試可靠性,參考了業界的一些思維,有些想法和建議 先說說軟體可靠性的定義,根據我測試的體會和思考,我覺得軟體的可靠性就是軟體系統發生故障後自動恢復或者人工干預使其能恢復到正常狀態的能力 業界的測試有些把容錯測試和可靠性測試搞混淆,其實兩者不一樣,容錯測試是通過模擬一些可能發生的已知的異常操作而檢...