2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

stun, turn, ice協(xié)議概述

 昵稱(chēng)15515903 2014-01-27

stun, turn, ice協(xié)議概述

stun,turn,ice是ietf提出的處理voip網(wǎng)絡(luò)中nat穿越問(wèn)題的協(xié)議族。

    stun 可以處理大部分nat問(wèn)題,turn是stun協(xié)議的一個(gè)增強(qiáng)版,專(zhuān)用于處理對(duì)稱(chēng)形nat問(wèn)題,而ice則是綜合stun及turn的產(chǎn)物,是一個(gè)框架,綜合運(yùn)用STUN和TURN的結(jié)構(gòu),它提供可靠的VoIP或視頻通話配置以及媒體傳輸,通過(guò)一個(gè)SIP供給/應(yīng)答模型供端點(diǎn)交換多個(gè)候選IP地址和端口(比如私有地址和TURN服務(wù)器地址)。

    采用此框架可以完美解決voip 中 媒體傳輸中遇到的 nat及防火墻問(wèn)題,而信令穿越則需要另一套機(jī)制,過(guò)去人們提出了多種處理nat問(wèn)題的方案,但都有局限性,采用ice則完全解決了這些問(wèn)題,ice的另一個(gè)特點(diǎn)時(shí)能夠通過(guò)一定機(jī)制檢測(cè)nat類(lèi)型,從而決定采用何種方案處理,比如對(duì)于大多數(shù)呼叫,媒體可能直接用p2p方式即可,而有些方案可能不論什么nat類(lèi)型都用media-relay方式,這種方式增加了端到端延時(shí)及丟包概率。

    stun和turn都是client/server協(xié)議,說(shuō)白了就是客戶端向服務(wù)器要自己的公網(wǎng)地址及端口,然后放在自己invite請(qǐng)求的sdp消息體及對(duì)invite的 200 ok  sdp 消息體中。

大多數(shù)sip客戶端和服務(wù)器支持stun協(xié)議,所以都有一定缺陷。


http://blog.csdn.net/perfectpdl/article/details/7636067


TURN協(xié)議深入剖析

概括一下:

若一個(gè)主機(jī)位于NAT后面,那么在特定的環(huán)境下,它不可能跟其他主機(jī)通信。這種情況下,這臺(tái)主機(jī)有必要通過(guò)一個(gè)轉(zhuǎn)發(fā)的主機(jī)來(lái)實(shí)現(xiàn)通信。有種協(xié)議叫TURN,允許主機(jī)通過(guò)轉(zhuǎn)發(fā)來(lái)和其他主機(jī)通信。TURN協(xié)議與其他轉(zhuǎn)發(fā)協(xié)議不同的地方在于它允許客戶端用一個(gè)轉(zhuǎn)發(fā)地址同多個(gè)主機(jī)交流。


 1 簡(jiǎn)介

一個(gè)位于NAT后面的主機(jī)可能相同其他位于NAT后面的主機(jī)交流。為了達(dá)到目的,可以用打洞的方法來(lái)找到一條路徑,但是不通過(guò)轉(zhuǎn)發(fā)。

當(dāng)兩臺(tái)主機(jī)都位于對(duì)稱(chēng)NAT之后時(shí),打洞技術(shù)可能會(huì)失敗。

TURN協(xié)議允許一個(gè)位于NAT之后的主機(jī)請(qǐng)求另一臺(tái)主機(jī)轉(zhuǎn)發(fā)。客戶端可以通過(guò)服務(wù)端轉(zhuǎn)發(fā)包到另一端。并且可以控制轉(zhuǎn)發(fā)如何結(jié)束。這個(gè)客戶端通過(guò)在服務(wù)端獲取一個(gè)IP端口對(duì),也被稱(chēng)作轉(zhuǎn)發(fā)端口地址來(lái)進(jìn)行上述操作。


當(dāng)對(duì)方發(fā)送一個(gè)包到轉(zhuǎn)發(fā)端口地址時(shí),服務(wù)器就將這個(gè)包轉(zhuǎn)發(fā)到客戶端。當(dāng)一個(gè)客戶端發(fā)送一個(gè)數(shù)據(jù)包到服務(wù)器時(shí),服務(wù)器轉(zhuǎn)發(fā)這個(gè)包到轉(zhuǎn)發(fā)端口地址所對(duì)應(yīng)的客戶端。


一個(gè)采用TURN協(xié)議的客戶端一定有一些方法把自己的轉(zhuǎn)發(fā)地址告訴對(duì)方,并且知道每個(gè)通信伙伴的IP端口地址對(duì)。


若TURN協(xié)議被用作ICE協(xié)議中,那么它的轉(zhuǎn)發(fā)IP端口對(duì)和其他伙伴的IP端口對(duì)都包含在ICE候選者信息中。例如,如果TURN和ICE被SIP用于媒體傳輸時(shí),SIP以會(huì)話協(xié)議的方式,將ICE候選者的信息放進(jìn)SIP消息體中。若TURN和ICE協(xié)議被用在其他會(huì)話協(xié)議中,那么【MUSIC-ICE-NONSIP】將提供一些會(huì)話協(xié)議必須實(shí)現(xiàn)的功能。


雖然TURN服務(wù)器的應(yīng)用能使兩個(gè)位于NAT之后的主機(jī)交流成為可能,但是這對(duì)TURN服務(wù)器來(lái)說(shuō)開(kāi)銷(xiāo)太大。因而,最后是在直接交流沒(méi)法執(zhí)行的時(shí)候,才用TURN服務(wù)器。當(dāng)客戶端與伙伴通過(guò)ICE協(xié)議來(lái)確定通信路徑的時(shí)候,ICE協(xié)議將首先通過(guò)打洞的方法來(lái)尋找一條直接的路徑來(lái)讓兩方通信,僅僅當(dāng)這條路徑找不到的時(shí)候才會(huì)用TURN服務(wù)器。


TURN原來(lái)被設(shè)計(jì)用來(lái)支持基于SIP的多媒體會(huì)話信號(hào)傳輸。

TURN被設(shè)計(jì)成ICE中的用于NAT穿越的一部分。

TURN是一個(gè)STUN的擴(kuò)展版本。大多數(shù)情況下,TURN消息是STUN格式的消息。該文檔的讀者應(yīng)該熟悉STUN協(xié)議。

2 大體看一下操作

這一節(jié)給出了TURN操作的一個(gè)預(yù)覽。

在一個(gè)傳統(tǒng)的配置中,TURN客戶端被連接到私有網(wǎng)絡(luò)中,并且通過(guò)這個(gè)一個(gè)或多個(gè)NATS連到共有網(wǎng)絡(luò)中。在這個(gè)沒(méi)有共有網(wǎng)絡(luò)中,是TURN服務(wù)器。其他的就是這個(gè)TURN客戶端想連接的同伴客戶端。這些同伴可能處在NAT的后面也可能沒(méi)有處在NAT的后面??蛻舳擞眠@個(gè)服務(wù)器作為一個(gè)轉(zhuǎn)發(fā)來(lái)發(fā)送數(shù)據(jù)包到其他的伙伴,并且通過(guò)轉(zhuǎn)發(fā)接收來(lái)自同伴機(jī)的數(shù)據(jù)包。

圖1顯示了一個(gè)經(jīng)典的過(guò)程。這個(gè)圖中,TURN客戶端和TURN服務(wù)端被NAT分割??蛻舳嗽谒接芯W(wǎng)絡(luò)中,服務(wù)端在公網(wǎng)中。NAT是地址端口對(duì)稱(chēng)。

客戶端通過(guò)一個(gè)叫做客戶端主機(jī)傳輸?shù)刂返玫絀P地址端口對(duì)同server通話。

客戶端從它的主機(jī)傳輸?shù)刂分袀鬏擳URN消息到一個(gè)TURNServer的一個(gè)端口地址中。

由于這個(gè)客戶端位于NAT的后面,這個(gè)服務(wù)器根據(jù)客戶端在NAT的傳輸?shù)刂房吹搅藦目蛻舳酥袀骰氐陌_@個(gè)NAT的傳輸?shù)刂方凶鯯ERVER-REFLEXIVEtransport address。

這個(gè)客戶端用TURN命令在服務(wù)端進(jìn)行了一個(gè)ALLOCATION操作。allocation是一個(gè)位于server的數(shù)據(jù)結(jié)構(gòu)體。這個(gè)數(shù)據(jù)結(jié)構(gòu)體包含了分配的RELAYED TRANSPORT ADDRESS?;锇閭兛梢酝ㄟ^(guò)這個(gè)RELAYED TRANSPORTADDRESS讓服務(wù)器轉(zhuǎn)發(fā)消息到客戶端。

只要這個(gè)allocation被創(chuàng)建,客戶端就能發(fā)送應(yīng)用程序數(shù)據(jù)到服務(wù)器,并且指明這個(gè)數(shù)據(jù)將送給那個(gè)伙伴。這樣,服務(wù)器將轉(zhuǎn)發(fā)數(shù)據(jù)島相關(guān)的伙伴。客戶端發(fā)送的應(yīng)用程序數(shù)據(jù)包含在TURN消息中。

在服務(wù)端,應(yīng)用程序?qū)?shù)據(jù)從TURN消息中取出。并將數(shù)據(jù)發(fā)送以UDP的形式發(fā)給伙伴。相反的,伙伴同樣可以以UDP的方式發(fā)送應(yīng)用程序數(shù)據(jù)到服務(wù)端分配的轉(zhuǎn)發(fā)傳輸?shù)刂?。服?wù)端將從TURN消息解析出數(shù)據(jù),并且將這個(gè)數(shù)據(jù)發(fā)送到伙伴指定的客戶端。由于TURN消息總是包含著客戶端將發(fā)給的同伴的地址??蛻舳丝梢杂梦ㄒ坏囊粋€(gè)allocation和多個(gè)peer通信。

當(dāng)peer位于NAT之后,客戶端必須通過(guò)peer的server-reflexive transport address辨別peer而不是host transportaddress。例如上圖,發(fā)送數(shù)據(jù)到PeerA,客戶端必須辨別192.0.2.150:32102而不是192.168.100.2:49582。

每一個(gè)allocation屬于單一的一個(gè)客戶端。并且有確切的一個(gè)relayed transport address。這樣當(dāng)一個(gè)包到達(dá)relayed transport address時(shí),服務(wù)端知道數(shù)據(jù)將到哪個(gè)客戶端。

每個(gè)allocation屬于唯一的一個(gè)客戶端。但是一個(gè)客戶端可以有多個(gè)allocation。

2.1 Transport

TURN,就如在這個(gè)說(shuō)明書(shū)中定義的那樣,總是通過(guò)UDP在服務(wù)端和peer中通信。然而TCP也允許。

2.2 Allocation

為了創(chuàng)建一個(gè)Allocation在服務(wù)端。客戶端發(fā)送一個(gè)Allocate請(qǐng)求道服務(wù)端,服務(wù)端將回復(fù)一個(gè)Allocate Sucessresponse,這個(gè)response包含著一個(gè)allocated relayed transportaddress。客戶端可以包含屬性到這個(gè)Allocate request中,這個(gè)屬性可以描述allocation的類(lèi)型(例如allocation的壽命)。

一旦relayed transport address被分配??蛻舳吮仨毐WCallocation處于活躍狀態(tài)。為了達(dá)到目的,客戶端必須周期性的發(fā)送更新請(qǐng)求到server。更新的頻率跟allocation的壽命相關(guān)。默認(rèn)的allocation的壽命是10分鐘。這個(gè)值已經(jīng)足夠的常,以至于更新及時(shí)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多