日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

簡介

簡單就是美。在網絡協議的世界中,TCP和UDP是建立在IP協議基礎上的兩個非常通用的協議。我們現在經常使用的HTTP協議就是建立在TCP協議的基礎上的。相當于TCP的穩定性來說,UDP因為其數據傳輸的不可靠性,所以用在某些特定的場合,如直播、廣播消息、視頻音頻流處理等不太需要校驗數據完整性的場合。

UDP相對TCP協議而言,其特點就是簡潔,它刪除了在TCP協議中為了保證消息準確性的各種限制性特征。簡潔帶來的好處就是快!今天給大家講解一下,基于UDP的高速數據傳輸協議UDT。

UDT協議

UDP因為其簡單的特性,所以可以做到很多TCP做不到的事情,比如進行大數據量的快速傳輸。這里并不是要將TCP和UDP分個好壞高下,畢竟各個協議的適應場景不同,他們之所以流行,就是因為可以在特定的場景發揮出重要的作用。套用中國的一句諺語就是:不管白貓黑貓,能抓到老鼠的,就是好貓。

用好UDP協議,我們就可以快速的傳遞大量的數據,這個協議就是UDT協議。

話說,像這些基礎協議都是老外發明的,而中國的互聯網巨頭都在搶著做平臺、做流量的生意,真的是無話可說....

UDT項目開始于2001年,是由Yunhong Gu在芝加哥伊利諾伊大學國家數據挖掘中心 (NCDM)讀博士期間開發的,并在畢業之后持續的進行維護和升級改進。

UDP的出現是因為那時候,傳輸更快更便宜的光纖網絡出現了,代替了之前的銅纜線和雙絞線,從而極大的提升了信息傳輸的效率。這時候大家就發現之前使用TCP協議來進行大數據的傳輸會有很大的問題。從而基于UDP的UDT協議出現了。

UDT的第一個版本,也稱為SABUL(Simple Available Bandwidth Utility Library),UDT通過支持批量數據傳輸,從而方便在私有網絡中進行數據的傳輸。

要注意的是UDT的第一個版本SABUL使用UDP協議進行傳輸數據,同時使用單獨的TCP協議連接傳輸控制消息。

UDT的初始版本是在超高速網絡(1 Gbit/s、10 Gbit/s等)上進行開發和測試的,2003年10月,NCDM實現了從美國芝加哥到荷蘭阿姆斯特丹的平均每秒6.8G比特的傳輸。在30分鐘內的測試中,他們傳輸了大約1.4TB的數據。

從2004年發布的2.0版本開始,SABUL改名為UDT,UDT的全稱是UDP-based Data Transfer Protocol,也就是基于UDP的數據傳輸協議。

為什么要改成UDT呢?因為在UDT2.0中,刪除了SABUL中的TCP 控制連接,并使用UDP來處理數據和控制信息。 另外,UDT2還引入了一種新的擁塞控制算法,允許協議動態調整UDT和TCP流,實現UDT和TCP流的并發運行。

在2006年,UDT協議升級到了3版本,該協議不僅是在私有網絡中運行了,而是擴展到了商業互聯網中。同時UDT3中的擁塞控制可以進行調整優化,可以在低帶寬的環境中運行,并且允許用戶輕松定義和安裝自己的擁塞控制算法。另外,UDT3還顯著減少了系統資源(CPU和內存)的使用。

2007年,UDT4版本在高并發和防火墻穿透方面進行優化和性能的提升。UDT4允許多個UDT連接綁定到同一個UDP端口,它還支持集合連接設置,以便UDP hole punching。

什么是UDP hole punching呢?

UDP hole punching通常被用在網絡地址轉換 (NAT)中。用來維護穿越NAT的用戶UDP數據包流。它是一種使用網絡地址轉換器在專用網絡中的Internet主機之間建立雙向UDP連接的方法。

什么是NAT呢?

大家都知道IPV4地址是有限的,很快IPV4地址就快用完了,那怎么解決這個問題呢?

當然,一個永久解決的辦法是IPV6,不過IPV6推出這么多年了,好像還沒有真正的普及。

不使用IPV6的話還有什么解決辦法呢?

這個辦法就是NAT(Network Address Translators)。

網絡協議之:基于UDP的高速數據傳輸協議UDT

 

NAT的原理是將局域網的IP和端口和NAT設備的IP和端口做個映射。

NAT內部維護著一張轉換表。這樣就可以通過一個NAT的IP地址和不同的端口來連接眾多的局域網服務器。

那么NAT有什么問題呢?

NAT的問題在于,內部客戶端不知道自己外網IP地址,只知道內網IP地址。

如果是在UDP協議中,因為UDP是無狀態的,所以需要NAT來重寫每個UDP分組中的源端口、地址,以及IP分組中的源IP地址。

如果客戶端是在應用程序內部將自己的IP地址告訴服務器,并想跟服務器建立連接,那么肯定是建立不了的。因為找不到客戶端的公網IP。

即使找到了公網IP,任何到達NAT設備外網IP的分組還必須有一個目標端口,而且NAT轉換表中也要有一個條目可以將其轉換為內部主機的IP地址和端口號。否則就可能出現下圖的連接失敗的問題。

網絡協議之:基于UDP的高速數據傳輸協議UDT

 

怎么解決呢?

第一種方式是使用STUN服務器。

網絡協議之:基于UDP的高速數據傳輸協議UDT

 

STUN服務器是IP地址已知的服務器,客戶端要通信之前,先去STUN服務器上面查詢一下自己的外網IP和端口,然后再使用這個外網IP和端口進行通信。

但有時UDP包會被防火墻或者其他的應用程序所阻擋。這個時候就可以使用中繼器技術Traversal Using Relays around NAT (TURN) 。

網絡協議之:基于UDP的高速數據傳輸協議UDT

 

雙方都將數據發送到中繼器server,由中繼器server來負責轉發數據。注意,這里已經不是P2P了。

最后,我們有一個集大成者的協議叫做ICE(Interactive Connectivity Establishment ):

網絡協議之:基于UDP的高速數據傳輸協議UDT

 

它實際上就是直連,STUN和TURN的綜合體,能直連的時候就直連,不能直連就用STUN,不能用STUN就用TURN。

在使用STUN和ICE的過程中,我們會有一臺網絡主機用來建立端口映射和保持其他UDP端口狀態,但是UDP的狀態通常在幾十秒到幾分鐘的短時間后過期,為了保證NAT中UDP的狀態和生命周期,于是有了UDP hole punching的技術。通過定時傳輸keep-alive數據包,對NAT中的UDP狀態進行更新。

UDT的缺點

因為UDT是基于UDP協議的,但是UDP協議因為其簡潔的特性,所以并不具備安全性的特征。所以基于其上的UDT協議因為缺乏安全特性,所以在商業環境中應用會受到一定的限制。

不過UDT的新版本已經在開發中,大家可以期待一下。

總結

UDT被廣泛用于高性能計算,比如光纖網絡上的高速數據傳輸。我們后續會在netty中告訴大家怎么使用UDT協議。

鏈接:
https://juejin.cn/post/7038409409537507341

分享到:
標簽:協議 網絡
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定