自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于UDP的高速數(shù)據(jù)傳輸協(xié)議UDT

網(wǎng)絡(luò) 通信技術(shù)
UDP相對(duì)TCP協(xié)議而言,其特點(diǎn)就是簡(jiǎn)潔,它刪除了在TCP協(xié)議中為了保證消息準(zhǔn)確性的各種限制性特征。簡(jiǎn)潔帶來(lái)的好處就是快!今天給大家講解一下,基于UDP的高速數(shù)據(jù)傳輸協(xié)議UDT。

簡(jiǎn)介

簡(jiǎn)單就是美。在網(wǎng)絡(luò)協(xié)議的世界中,TCP和UDP是建立在IP協(xié)議基礎(chǔ)上的兩個(gè)非常通用的協(xié)議。我們現(xiàn)在經(jīng)常使用的HTTP協(xié)議就是建立在TCP協(xié)議的基礎(chǔ)上的。相當(dāng)于TCP的穩(wěn)定性來(lái)說(shuō),UDP因?yàn)槠鋽?shù)據(jù)傳輸?shù)牟豢煽啃?,所以用在某些特定的?chǎng)合,如直播、廣播消息、視頻音頻流處理等不太需要校驗(yàn)數(shù)據(jù)完整性的場(chǎng)合。

UDP相對(duì)TCP協(xié)議而言,其特點(diǎn)就是簡(jiǎn)潔,它刪除了在TCP協(xié)議中為了保證消息準(zhǔn)確性的各種限制性特征。簡(jiǎn)潔帶來(lái)的好處就是快!今天給大家講解一下,基于UDP的高速數(shù)據(jù)傳輸協(xié)議UDT。

[[440279]]

UDT協(xié)議

UDP因?yàn)槠浜?jiǎn)單的特性,所以可以做到很多TCP做不到的事情,比如進(jìn)行大數(shù)據(jù)量的快速傳輸。這里并不是要將TCP和UDP分個(gè)好壞高下,畢竟各個(gè)協(xié)議的適應(yīng)場(chǎng)景不同,他們之所以流行,就是因?yàn)榭梢栽谔囟ǖ膱?chǎng)景發(fā)揮出重要的作用。套用中國(guó)的一句諺語(yǔ)就是:不管白貓黑貓,能抓到老鼠的,就是好貓。

用好UDP協(xié)議,我們就可以快速的傳遞大量的數(shù)據(jù),這個(gè)協(xié)議就是UDT協(xié)議。

話說(shuō),像這些基礎(chǔ)協(xié)議都是老外發(fā)明的,而中國(guó)的互聯(lián)網(wǎng)巨頭都在搶著做平臺(tái)、做流量的生意,真的是無(wú)話可說(shuō)….

UDT項(xiàng)目開(kāi)始于2001年,是由Yunhong Gu在芝加哥伊利諾伊大學(xué)國(guó)家數(shù)據(jù)挖掘中心 (NCDM)讀博士期間開(kāi)發(fā)的,并在畢業(yè)之后持續(xù)的進(jìn)行維護(hù)和升級(jí)改進(jìn)。

UDP的出現(xiàn)是因?yàn)槟菚r(shí)候,傳輸更快更便宜的光纖網(wǎng)絡(luò)出現(xiàn)了,代替了之前的銅纜線和雙絞線,從而極大的提升了信息傳輸?shù)男?。這時(shí)候大家就發(fā)現(xiàn)之前使用TCP協(xié)議來(lái)進(jìn)行大數(shù)據(jù)的傳輸會(huì)有很大的問(wèn)題。從而基于UDP的UDT協(xié)議出現(xiàn)了。

UDT的第一個(gè)版本,也稱(chēng)為SABUL(Simple Available Bandwidth Utility Library),UDT通過(guò)支持批量數(shù)據(jù)傳輸,從而方便在私有網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)的傳輸。

要注意的是UDT的第一個(gè)版本SABUL使用UDP協(xié)議進(jìn)行傳輸數(shù)據(jù),同時(shí)使用單獨(dú)的TCP協(xié)議連接傳輸控制消息。

UDT的初始版本是在超高速網(wǎng)絡(luò)(1 Gbit/s、10 Gbit/s等)上進(jìn)行開(kāi)發(fā)和測(cè)試的,2003年10月,NCDM實(shí)現(xiàn)了從美國(guó)芝加哥到荷蘭阿姆斯特丹的平均每秒6.8G比特的傳輸。在30分鐘內(nèi)的測(cè)試中,他們傳輸了大約1.4TB的數(shù)據(jù)。

從2004年發(fā)布的2.0版本開(kāi)始,SABUL改名為UDT,UDT的全稱(chēng)是UDP-based Data Transfer Protocol,也就是基于UDP的數(shù)據(jù)傳輸協(xié)議。

為什么要改成UDT呢?因?yàn)樵赨DT2.0中,刪除了SABUL中的TCP 控制連接,并使用UDP來(lái)處理數(shù)據(jù)和控制信息。 另外,UDT2還引入了一種新的擁塞控制算法,允許協(xié)議動(dòng)態(tài)調(diào)整UDT和TCP流,實(shí)現(xiàn)UDT和TCP流的并發(fā)運(yùn)行。

在2006年,UDT協(xié)議升級(jí)到了3版本,該協(xié)議不僅是在私有網(wǎng)絡(luò)中運(yùn)行了,而是擴(kuò)展到了商業(yè)互聯(lián)網(wǎng)中。同時(shí)UDT3中的擁塞控制可以進(jìn)行調(diào)整優(yōu)化,可以在低帶寬的環(huán)境中運(yùn)行,并且允許用戶(hù)輕松定義和安裝自己的擁塞控制算法。另外,UDT3還顯著減少了系統(tǒng)資源(CPU和內(nèi)存)的使用。

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

什么是UDP hole punching呢?

UDP hole punching通常被用在網(wǎng)絡(luò)地址轉(zhuǎn)換 (NAT)中。用來(lái)維護(hù)穿越NAT的用戶(hù)UDP數(shù)據(jù)包流。它是一種使用網(wǎng)絡(luò)地址轉(zhuǎn)換器在專(zhuān)用網(wǎng)絡(luò)中的Internet主機(jī)之間建立雙向UDP連接的方法。

什么是NAT呢?

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

當(dāng)然,一個(gè)永久解決的辦法是IPV6,不過(guò)IPV6推出這么多年了,好像還沒(méi)有真正的普及。

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

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

NAT的原理是將局域網(wǎng)的IP和端口和NAT設(shè)備的IP和端口做個(gè)映射。

NAT內(nèi)部維護(hù)著一張轉(zhuǎn)換表。這樣就可以通過(guò)一個(gè)NAT的IP地址和不同的端口來(lái)連接眾多的局域網(wǎng)服務(wù)器。

那么NAT有什么問(wèn)題呢?

  • NAT的問(wèn)題在于,內(nèi)部客戶(hù)端不知道自己外網(wǎng)IP地址,只知道內(nèi)網(wǎng)IP地址。

如果是在UDP協(xié)議中,因?yàn)閁DP是無(wú)狀態(tài)的,所以需要NAT來(lái)重寫(xiě)每個(gè)UDP分組中的源端口、地址,以及IP分組中的源IP地址。

如果客戶(hù)端是在應(yīng)用程序內(nèi)部將自己的IP地址告訴服務(wù)器,并想跟服務(wù)器建立連接,那么肯定是建立不了的。因?yàn)檎也坏娇蛻?hù)端的公網(wǎng)IP。

即使找到了公網(wǎng)IP,任何到達(dá)NAT設(shè)備外網(wǎng)IP的分組還必須有一個(gè)目標(biāo)端口,而且NAT轉(zhuǎn)換表中也要有一個(gè)條目可以將其轉(zhuǎn)換為內(nèi)部主機(jī)的IP地址和端口號(hào)。否則就可能出現(xiàn)下圖的連接失敗的問(wèn)題。

怎么解決呢?

第一種方式是使用STUN服務(wù)器。

STUN服務(wù)器是IP地址已知的服務(wù)器,客戶(hù)端要通信之前,先去STUN服務(wù)器上面查詢(xún)一下自己的外網(wǎng)IP和端口,然后再使用這個(gè)外網(wǎng)IP和端口進(jìn)行通信。

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

雙方都將數(shù)據(jù)發(fā)送到中繼器server,由中繼器server來(lái)負(fù)責(zé)轉(zhuǎn)發(fā)數(shù)據(jù)。注意,這里已經(jīng)不是P2P了。

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

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

在使用STUN和ICE的過(guò)程中,我們會(huì)有一臺(tái)網(wǎng)絡(luò)主機(jī)用來(lái)建立端口映射和保持其他UDP端口狀態(tài),但是UDP的狀態(tài)通常在幾十秒到幾分鐘的短時(shí)間后過(guò)期,為了保證NAT中UDP的狀態(tài)和生命周期,于是有了UDP hole punching的技術(shù)。通過(guò)定時(shí)傳輸keep-alive數(shù)據(jù)包,對(duì)NAT中的UDP狀態(tài)進(jìn)行更新。

UDT的缺點(diǎn)

因?yàn)閁DT是基于UDP協(xié)議的,但是UDP協(xié)議因?yàn)槠浜?jiǎn)潔的特性,所以并不具備安全性的特征。所以基于其上的UDT協(xié)議因?yàn)槿狈Π踩匦?,所以在商業(yè)環(huán)境中應(yīng)用會(huì)受到一定的限制。

不過(guò)UDT的新版本已經(jīng)在開(kāi)發(fā)中,大家可以期待一下。

總結(jié)

UDT被廣泛用于高性能計(jì)算,比如光纖網(wǎng)絡(luò)上的高速數(shù)據(jù)傳輸。我們后續(xù)會(huì)在netty中告訴大家怎么使用UDT協(xié)議。

 

責(zé)任編輯:未麗燕 來(lái)源: 今日頭條
相關(guān)推薦

2014-09-12 18:18:02

tcpudtUDP

2010-07-12 17:31:36

UDTUDP協(xié)議

2010-07-12 15:40:24

2023-06-26 14:56:04

以太網(wǎng)數(shù)據(jù)傳輸

2020-08-13 08:34:10

MySQL數(shù)據(jù)DTS

2023-07-12 15:52:28

2020-06-12 07:50:15

大數(shù)據(jù)

2023-11-04 09:06:11

2013-11-26 15:51:45

Android編程藍(lán)牙數(shù)據(jù)傳輸

2010-04-07 14:54:38

2022-02-17 15:53:19

遠(yuǎn)程醫(yī)療安全

2012-02-22 10:14:58

北通USB數(shù)據(jù)線

2021-10-08 08:37:38

數(shù)據(jù)傳輸數(shù)據(jù)調(diào)用網(wǎng)絡(luò)協(xié)議

2010-07-13 15:55:12

FTP數(shù)據(jù)傳輸模式

2023-04-12 16:20:00

同步數(shù)據(jù)異步數(shù)據(jù)傳輸

2015-10-14 09:44:55

TCP網(wǎng)絡(luò)協(xié)議數(shù)據(jù)傳輸

2022-11-25 14:39:19

數(shù)據(jù)安全數(shù)據(jù)保護(hù)

2011-03-04 13:22:10

FileZilla

2010-06-30 15:06:27

FTP數(shù)據(jù)傳輸模式

2009-04-10 23:40:06

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)