如何配置使用udp傳輸
A. 如何讓UDP實現可靠傳輸
如何讓UDP實現可靠傳輸
自定義通訊協議,在應用層定義一些可靠的協議,比如檢測包的順序,重復包等問題,如果沒有收到對方的ACK,重新發包
UDP沒有Delievery Garuantee,也沒有順序保證,所以如果你要求你的數據發送與接受既要高效,又要保證有序,收包確認等,你就需要在UDP協議上構建自己的協議。比如RTCP,RTP協議就是在UPD協議之上專門為H.323協議簇上的IP電話設計的一種介於傳輸層和應用層之間的協議。
下面分別介紹三種使用UDP進行可靠數據傳輸的協議
RUDP
RTP
UDT
RUDP(Reliable User Datagram Protocol)
可靠用戶數據報協議(RUDP)是一種基於可靠數據協議(RDP: RFC908 和 1151 (第二版))的簡單分組傳輸協議。作為一個可靠傳輸協議,RUDP 用於傳輸 IP 網路間的電話信號。它允許獨立配置每個連接屬性,這樣在不同的平台可以同時實施不同傳輸需求下的協議。
RUDP 提供一組數據服務質量增強機制,如擁塞控制的改進、重發機制及淡化伺服器演算法等,從而在包丟失和網路擁塞的情況下, RTP 客戶機(實時位置)面前呈現的就是一個高質量的 RTP 流。在不幹擾協議的實時特性的同時,可靠 UDP 的擁塞控制機制允許 TCP 方式下的流控制行為。
為了與網路 TCP 通信量同時工作,
RUDP 使用類似於 TCP 的重發機制和擁塞控制演算法。
在最大化利用可用帶寬上,這些演算法都得到了很好的證明。
RUDP特性
客戶機確認響應伺服器發送給客戶機的包;
視窗和擁塞控制,伺服器不能超出當前允許帶寬;
一旦發生包丟失,伺服器重發給客戶機;
比實時流更快速,稱為「緩存溢出」。
用戶數據報協議(UDP)
RTP(Real Time Protocol)
RTP,實時協議被用來為應用程序如音頻,視頻等的實時數據的傳輸提供端到端(end to end)的網路傳輸功能。傳輸的模型可以是單點傳送或是多點傳送。數據傳輸被一個姐妹協議——實時控制協議(RTCP)來監控,後者允許在一個大的多點傳送網路上監視數據傳送,並且提供最小限度的控制和識別功能。
RTP是被IETF在RFC1889中提出來的。順帶提及,RTP已經被接受為實時多媒體傳送的通用標准。ITU-T跟IETF都在各自的系統中將這一協議標准化。
1.1 為何需要RTP?
TCP不能支持像交互視頻,會議等的實時服務,這一原因是由於TCP只是一個「慢」協議,需要三次握手。就此在IP層上UDP是一個比TCP更好的選擇。但是UDP是本質上是一個不可靠協議,不支持在包丟情況下的重傳機制。誠然,UDP有一些特性,比如多路復用跟校驗和服務,這些都是對實時服務很有利的。為了消除UDP的缺點,RTP是作為應用層而被提出來的。
RTP提供的各種服務包括有效負載識別,序列編號,時間戳和投遞監聽。RTP能夠序列化包,當這些包在收端不是按順序到達的時。序列號也能被用來識別包丟失。時間戳被用於媒體有效的播放。到達的數據一直被RTCP監聽,以通知RTP層來校正其編碼和傳輸的參數。例如,如果RTCP層檢測到包丟失,它會通知RTP層減緩發送速率。
盡管RTP有助於實時媒體的有效的播放,但是要注意的是RTP自身並不提供任何機制來確保及時傳遞或提供其他服務質量(QoS)的保證,而是依靠低層服務來完成這些。同樣,RTP也不保證投遞或防止無序投遞。RTP被設計出來主要是為了滿足有多個參加者的多媒體會議的需要。RTP也同樣適合於象持續數據的儲存,分布式交互模擬,主動標記以及應用程序的控制和測量。
1.2 RTP特性一覽
RTP提供有效負荷類型識別,亂序重排和利用時間戳的媒體有效播放。
RTCP監控服務質量,也提供在一個當前進行的會話中傳送關於參加者的信息作用。
RTP對於下層協議是獨立的,它能夠工作在像TCP/IP,ATM,幀時延等類型的網路上。
如果被下層網路支持,RTP支持利用多路技術的對於多點的數據傳輸。
RTP序列號也能被用來確定包的合適位置。例如在視頻解碼,包無需按序解碼。
2.0 技術概覽
2.1 RTP
RTP頭具有如下的格式。開始的12個八位位元組在每一個RTP包中都會出現;而CSRC標識符列表只在通過混合器的包中出現.
Version (V) (版本號):這個域長度為2比特,標出了RTP的最近版本。當前的版本為2.0
Padding (P) (填充):這個域長度為1比特,如果P被置位,包在結尾處包含有一個或多個附加的填充位元組,這些填充位元組不是有效負荷的一部分。填充是一些需要固定塊大小的加密演算法所要求的,或是為了在低層PDU搬運RTP包。
Extension (X):這個域長度為1比特,如果被置位,固定的頭後面緊跟了一個頭的擴展。
CSRC count (CC):這個域長度為4比特。這個域表示了跟在固定頭後面的CSRC標識符的數目。如前所述,這個域只有在通過一個混合器才有非零值。
Marker bit (M): 這個域長度為1比特,如果M被置位,表示一些重要的項目如幀邊界在包中被標記。例如,如果包中有幾個比特的當前幀,連同前一幀,那麼RTP的這一位就被置位。
Payload type (PT) (有效負荷類型):這個域長度為7比特,PT指示的是有RTP包中的有效負荷的類型。RTP音頻視頻簡介(AVP)包含了一個默認的有效負荷類型碼到有效負荷格式的映射。附加的有效負荷類型可以向IANA注冊。
Sequence number(序列號):這個域長度為16個比特,每送一個RTP包數目就增加一,初始值被設為一個隨機數。接收方不僅可以用這個序列號檢測包丟失,也可以重組包序列。
Time stamp(時間戳):這個域長度為32個比特,時間戳反映了RTP數據包的頭一個位元組的采樣時刻。采樣時刻必須是由一個單調線性增加的時鍾產生,這樣做是為了接收方的同步和抖動計算。初始值必須為隨機數,這是為了避免對原碼的攻擊。例如,如果RTP源使用了一個編碼器,緩沖20ms的音頻數據,那麼RTP時間戳必須每個包增加160,無論包是被傳遞了還是被丟失了。
SSRC:這個域長度為32比特,這個域表示了正在為會話產生RTP包的源。這個標識符是隨機選中的,目的是為了避免同一個RTP會話中兩個源有相同的標識符。
CSRC list: 這個列表標識了在這個包中對有效負荷起作用的所有源。標識符的最大數目限定為15,這是由CC域所限定的(全零在CC域中是被禁止的)。如果有超過15個的分配源,只有前15個被標識。
仔細觀察RTP可以注意到它不像更低層的協議比如PDU一樣,包含一個「定邊界」的域。這一原因是RTP的有效負荷是跟IP的有效負荷相同,因此也就不需要了。
如果相同的用戶在一個會話中使用多個媒體,比如說視頻跟音頻,每個媒體都會打開單獨的RTP會話。因此在RTP層面上不存在多路復用。多路復用由更低層來決定。但是RTCP保留了一個叫CNAME的標識符,這個標識符對於由同一用戶初始化的媒體是相同的。因此CNAME是在RTP層面上能識別從一個用戶產生的不同媒體的唯一的標識符。
UDT(UDP-based Data Transfer Protocol)
基於UDP的數據傳輸協議(UDP-based Data Transfer Protocol,簡稱UDT)是一種互聯網數據傳輸協議。UDT的主要目的是支持高速廣域網上的海量數據傳輸,而互聯網上的標准數據傳輸協議TCP在高帶寬長距離網路上性能很差。 顧名思義,UDT建於UDP之上,並引入新的擁塞控制和數據可靠性控制機制。UDT是面向連接的雙向的應用層協議。它同時支持可靠的數據流傳輸和部分可靠的數據報傳輸。 由於UDT完全在UDP上實現,它也可以應用在除了高速數據傳輸之外的其它應用領域,例如點到點技術(P2P),防火牆穿透,多媒體數據傳輸等等。
UDT是雙工的,每個UDT實體有兩個部分:發送和接收。發送者根據流量控制和速率控制來發送(和重傳)應用程式數據。接收者接收數據包和控制包,並根據接收到的包發送控制包。發送和接收程式共享同一個UDP埠來發送和接收。
接收者也負責觸發和處理任何的控制事件,包括擁塞控制和可靠性控制和他們的相對機制,例如RTT估計、帶寬估計、應答和重傳。
UDT總是試著將應用層數據打包成固定的大小,除非數據不夠這么大。和TCP相似的是,這個固定的包大小叫做MSS(最大包大小)。由於期望UDT用來傳輸大塊數據流,我們假定只有很小的一部分不規則的大小的包在UDT session中。MSS能夠通過應用程式來安裝,MTU是其最優值(包括任何包頭)。
UDT擁塞控制演算法將速率控制和窗口(流量控制)合並起來,前者調整包的發送周期,後者限制最大的位被應答的包。在速率控制中使用的參數通過帶寬估計技術來更新,他繼承來自基於接收的包方法。同時,速率控制周期是估計RTT的常量,流控制參數依賴於對方的數據到達速度,另外接收端釋放的緩沖區的大小。
UDP構建可靠數據傳輸
簡單來講,要使用UDP來構建可靠的面向連接的數據傳輸,就要實現類似於TCP協議的超時重傳,有序接受,應答確認,滑動窗口流量控制等機制,等於說要在傳輸層的上一層(或者直接在應用層)實現TCP協議的可靠數據傳輸機制,比如使用UDP數據包+序列號,UDP數據包+時間戳等方法,在伺服器端進行應答確認機制,這樣就會保證不可靠的UDP協議進行可靠的數據傳輸,不過這好像也是一個難題!
B. 路由器埠怎麼設置udp
UDP 是User Datagram Protocol的簡稱, 中文名是用戶數據報協議,是OSI(Open System Interconnection,開放式系統互聯) 參考模型中一種無連接的傳輸層協議,下面一起看看路由器埠怎麼設置udp吧!
UDP協議傳輸的打開方法:
1、本地鏈接-屬性-TCP/IP協議-高級-選項-TCP/IP篩選。
2、UDP的介紹:
UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議。它是面向非連接的協議,它不與對方建立連接,而是直接就把數據包發送過去!
用戶數據報協議(UDP)是 OSI 參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。 UDP 協議基本上是 IP 協議與上層協議的介面。 UDP 協議適用埠分別運行在同一台設備上的多個應用程序。
如何在路由器中設置埠映射:
工具/原料
Ubuntu 15.10。
無線路由器。
方法/步驟
打開瀏覽器,登錄無線路由器的管理界面。
方法:在瀏覽器的地址欄輸入路由器的地址,回車。此地址一般是 192.168 私有網段中的一個地址,具體參考路由器說明書。
1.在路由器管理頁面,在右側的菜單中,導航到「轉發規則」——「虛擬伺服器」一節。
2.2界面右側則顯示「虛擬伺服器」的相關設置。
3.在路由器管理頁面,點擊「添加新條目」按鈕,頁面轉入輸入界面。包括 5 個輸入項:服務埠號,對應軟體埠;內部埠號,可以留空;IP地址,電腦在路由器內部網路上的地址;協議,分 TCP、UDP和「全部」三項;狀態,分「生效」和「失效」兩種。
4.新打開瀏覽器的一個標簽頁,進入 mldonkey 的管理界面(在地址欄輸入 http://localhost:4080),點擊主菜單上的「Help+」,再點擊二級菜單上的「Sysinfo」,進入系統信息界面。
5.在上述打開 mldonkey 的設置頁面,中間有一個埠列表,共分三列,從左到右依次是:網路類型、埠號、協議類型。
6.轉迴路由器設置界面(第 3 步驟所示),將第 5 步驟所示「網路類型」是「Donkey」的那三行中的'埠號和協議類型,分別填到步驟 3 圖所示「服務埠號」和「協議」中;該界面中的「IP地址」,則填寫 mldonkey 所在電腦被路由器分配的地址。
7.由於設置了埠映射,因此 mldonkey 所在的電腦,其由路由器分配的地址必須是固定的。為路由器內網設置固定地址的方法,請參見經驗:《防蹭網:無線路由分配靜態地址控制客戶端數量》。
8.防蹭網:無線路由分配靜態地址控制客戶端數量
將所需埠全部映射完成後,保存、重啟路由器,回到 mldonkey 設置界面,點擊「Server」主菜單,會看到所連接的伺服器,它們的「ID」全部為「High」,這樣才能確保 mldonkey 連接到最大數量的 p2p 源。
沒有實施埠映射時,這里的 ID 則顯示」low「,只能連接到極少數的 p2p 源。
拓展:UDP主要特點和協議對比
1、UDP是一個無連接協議,傳輸數據之前源端和終端不建立連接,當它想傳送時就簡單地去抓取來自應用程序的數據,並盡可能快地把它扔到網路上。在發送端,UDP傳送數據的速度僅僅是受應用程序生成數據的速度、計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應用程序每次從隊列中讀一個消息段。
由於傳輸數據不建立連接,因此也就不需要維護連接狀態,包括收發狀態等,因此一台服務機可同時向多個客戶機傳輸相同的消息。
UDP信息包的標題很短,只有8個位元組,相對於TCP的20個位元組信息包而言UDP的額外開銷很小。
吞吐量不受擁擠控制演算法的調節,只受應用軟體生成數據的速率、傳輸帶寬、源端和終端主機性能的限制。
UDP是面向報文的。發送方的UDP對應用程序交下來的報文,在添加首部後就向下交付給IP層。既不拆分,也不合並,而是保留這些報文的邊界,因此,應用程序需要選擇合適的報文大小。
雖然UDP是一個不可靠的協議,但它是分發信息的一個理想協議。例如,在屏幕上報告股票市場、顯示航空信息等等。UDP也用在路由信息協議RIP(Routing Information Protocol)中修改路由表。在這些應用場合下,如果有一個消息丟失,在幾秒之後另一個新的消息就會替換它。UDP廣泛用在多媒體應用中。
2、UDP和TCP協議的主要區別是兩者在如何實現信息的可靠傳遞方面不同。TCP協議中包含了專門的傳遞保證機制,當數據接收方收到發送方傳來的信息時,會自動向發送方發出確認消息;發送方只有在接收到該確認消息之後才繼續傳送其它信息,否則將一直等待直到收到確認信息為止。與TCP不同,UDP協議並不提供數據傳送的保證機制。如果在從發送方到接收方的傳遞過程中出現數據包的丟失,協議本身並不能做出任何檢測或提示。因此,通常人們把UDP協議稱為不可靠的傳輸協議。
TCP 是面向連接的傳輸控制協議,而UDP 提供了無連接的數據報服務;TCP 具有高可靠性,確保傳輸數據的正確性,不出現丟失或亂序;UDP 在傳輸數據前不建立連接,不對數據報進行檢查與修改,無須等待對方的應答,所以會出現分組丟失、重復、亂序,應用程序需要負責傳輸可靠性方面的所有工作;UDP 具有較好的實時性,工作效率較 TCP 協議高;UDP 段結構比 TCP 的段結構簡單,因此網路開銷也小。TCP 協議可以保證接收端毫無差錯地接收到發送端發出的位元組流,為應用程序提供可靠的通信服務。對可靠性要求高的通信系統往往使用 TCP 傳輸數據。