如何使UDP可靠傳輸
下面分別介紹三種使用UDP進行可靠資料傳輸的協議
1、RUDP(Reliable User Datagram Protocol)
可靠使用者資料報協議(RUDP)是一種基於可靠資料協議(RDP: RFC908 和 1151 (第二版))的簡單分組傳輸協議。作為一個可靠傳輸協議,RUDP 用於傳輸 IP 網路間的電話訊號。它允許獨立配置每個連線屬性,這樣在不同的平臺可以同時實施不同傳輸需求下的協議。
RUDP 提供一組資料服務質量增強機制,如擁塞控制的改進、重發機制及淡化伺服器演算法等,從而在包丟失和網路擁塞的情況下,
RTP 客戶機(實時位置)面前呈現的就是一個高質量的 RTP 流。在不干擾協議的實時特性的同時,可靠 UDP 的擁塞控制機制允許 TCP 方式下的流控制行為。
RUDP特性
客戶機確認響應伺服器傳送給客戶機的包;
視窗和擁塞控制,伺服器不能超出當前允許頻寬; 一旦發生包丟失,伺服器重發給客戶機; 比實時流更快速,稱為“快取溢位”。 使用者資料報協議(UDP)2、RTP(Real Time Protocol)
RTP,實時協議被用來為應用程式如音訊,視訊等的實時資料的傳輸提供端到端(end to end)的網路傳輸功能。傳輸的模型可以是單點傳送或是多點傳送。資料傳輸被一個姐妹協議——實時控制協議(
RTP是被IETF在RFC1889中提出來的。順帶提及,RTP已經被接受為實時多媒體傳送的通用標準。ITU-T跟IETF都在各自的系統中將這一協議標準化。
1.1 為何需要RTP?
TCP不能支援像互動視訊,會議等的實時服務,這一原因是由於TCP只是一個“慢”協議,需要三次握手。就此在IP層上UDP是一個比TCP更好的選擇。但是UDP是本質上是一個不可靠協議,不支援在包丟情況下的重傳機制。誠然,UDP有一些特性,比如多路複用跟校驗和服務,這些都是對實時服務很有利的。為了消除UDP的缺點,
RTP提供的各種服務包括有效負載識別,序列編號,時間戳和投遞監聽。RTP能夠序列化包,當這些包在收端不是按順序到達的時。序列號也能被用來識別包丟失。時間戳被用於媒體有效的播放。到達的資料一直被RTCP監聽,以通知RTP層來校正其編碼和傳輸的引數。例如,如果RTCP層檢測到包丟失,它會通知RTP層減緩傳送速率。
儘管RTP有助於實時媒體的有效的播放,但是要注意的是RTP自身並不提供任何機制來確保及時傳遞或提供其他服務質量(QoS)的保證,而是依靠低層服務來完成這些。同樣,RTP也不保證投遞或防止無序投遞。RTP被設計出來主要是為了滿足有多個參加者的多媒體會議的需要。RTP也同樣適合於象持續資料的儲存,分散式互動模擬,主動標記以及應用程式的控制和測量。
1.2 RTP特性一覽
RTP提供有效負荷型別識別,亂序重排和利用時間戳的媒體有效播放。
RTCP監控服務質量,也提供在一個當前進行的會話中傳送關於參加者的資訊作用。
RTP對於下層協議是獨立的,它能夠工作在像TCP/IP,ATM,幀時延等型別的網路上。
如果被下層網路支援,RTP支援利用多路技術的對於多點的資料傳輸。
RTP序列號也能被用來確定包的合適位置。例如在視訊解碼,包無需按序解碼。