麻豆国内精品欧美在线-麻豆国内精品久久久久久-麻豆国产在线观看一区二区-麻豆国产在线观看免费-麻豆国产原创-麻豆国产一区二区在线观看

功能強(qiáng)大的ICE(區(qū)塊鏈從p2p開始 )區(qū)塊鏈

ZFUND基金 2018-08-10 23:25
分享到:
導(dǎo)讀

ICE的全稱為InteractiveConnec-tivityEstablishment,即交互式連接建立.初學(xué)者可能會(huì)將其與網(wǎng)絡(luò)編程的ICE弄混,其實(shí)那是不一樣的東西,在網(wǎng)絡(luò)編程中。

ICE的全稱為Interactive Connec-tivi ty Establishment,即交互式連接建立.初學(xué)者可能會(huì)將其與網(wǎng)絡(luò)編程的ICE 弄混,其實(shí)那是不一樣的東西,在網(wǎng)絡(luò)編程中,如C 的ICE庫(kù),都是指Inter-nate Communications Engine, 是一種用于分布式程序設(shè)計(jì)的網(wǎng)絡(luò)通信中間件.我們這里說的只是交互式連接建立.

01

ICE簡(jiǎn)介

ICE是一個(gè)用于在offer/answ-er模式下的NAT傳輸協(xié)議,主要用于UDP下多媒體會(huì)話的建立,其使用了STUN協(xié)議以及TURN 協(xié)議,同時(shí)也能被其他實(shí)現(xiàn)了offer/answer模型的的其他程序所使用,比如SIP(Se-ssi on Initiation Protocol).

使用offer/answer模型(RFC3264)的協(xié)議通常很難在NAT之間穿透,因?yàn)槠淠康囊话闶墙⒍嗝襟w數(shù)據(jù)流,而且在報(bào)文中還 攜帶了數(shù)據(jù)的源IP和端口信息,這在通過NAT時(shí)是有問題的.RFC3264還嘗試在客戶端之間建立直接的通路,因此中間就缺少 了應(yīng)用層的封裝.這樣設(shè)計(jì)是為了減少媒體數(shù)據(jù)延遲,減少丟包率以及減少程序部署的負(fù)擔(dān).然而這一切都很難通過NAT而完成. 有很多解決方案可以使得這些協(xié)議運(yùn)行于NAT環(huán)境之中,包括應(yīng)用層網(wǎng)關(guān)(ALGs),Cla ssic STUN以及Realm Specific IP SDP 協(xié)同工作等方法.不幸的是,這些技術(shù)都是在某些網(wǎng)絡(luò)拓?fù)湎鹿ぷ骱芎?而在另一些環(huán)境下表現(xiàn)又很差,因此我們需要一個(gè)單一的, 可自由定制的解決方案,以便能在所有環(huán)境中都能較好工作.

02

ICE工作流程

一個(gè)典型的ICE工作環(huán)境如下,有兩個(gè)端點(diǎn)L和R,都運(yùn)行在各自的NAT之后(他們自己也許并不知道),NAT的類型和性質(zhì)也是未知的. L和R通過交換SDP信息在彼此之間建立多媒體會(huì)話,通常交換通過一個(gè)SIP服務(wù)器完成:

ZFUND基金-功能強(qiáng)大的ICE(區(qū)塊鏈從p2p開始 四)

ICE的基本思路是,每個(gè)終端都有一系列傳輸?shù)刂?包括傳輸協(xié)議,IP地址和端口)的候選,可以用來和其他端點(diǎn)進(jìn)行通信. 其中可能包括:

直接和網(wǎng)絡(luò)接口聯(lián)系的傳輸?shù)刂?host address)

經(jīng)過NAT轉(zhuǎn)換的傳輸?shù)刂?即反射地址(server reflective address)

TURN服務(wù)器分配的中繼地址(relay address)

雖然潛在要求任意一個(gè)L的候選地址都能用來和R的候選地址進(jìn)行通信.但是實(shí)際中發(fā)現(xiàn)有許多組合是無法工作的.舉例來說, 如果L和R都在NAT之后而且不處于同一內(nèi)網(wǎng),他們的直接地址就無法進(jìn)行通信.ICE的目的就是為了發(fā)現(xiàn)哪一對(duì)候選地址的 組合可以工作,并且通過系統(tǒng)的方法對(duì)所有組合進(jìn)行測(cè)試(用一種精心挑選的順序).

為了執(zhí)行ICE,客戶端必須要識(shí)別出其所有的地址候選,ICE中定義了三種候選類型,有些是從物理地址或者邏輯網(wǎng)絡(luò)接口繼承 而來,其他則是從STUN或者TURN服務(wù)器發(fā)現(xiàn)的.很自然,一個(gè)可用的地址為和本地網(wǎng)絡(luò)接口直接聯(lián)系的地址,通常是內(nèi)網(wǎng)地址, 稱為HOST CANDIDATE,如果客戶端有多個(gè)網(wǎng)絡(luò)接口,比如既連接了WiFi又插著網(wǎng)線,那么就可能有多個(gè)內(nèi)網(wǎng)地址候選.

其次,客戶端通過STUN或者TURN來獲得更多的候選傳輸?shù)刂?即SERV-ER REFLEXIVE CANDIDATES和R-ELAYED CANDIDATES, 如果TURN服務(wù)器是標(biāo)準(zhǔn)化的,那么兩種地址都可以通過TURN服務(wù)器獲得.當(dāng)L獲得所有的自己的候選地址之后,會(huì)將其 按優(yōu)先級(jí)排序,然后通過signaling通道發(fā)送到R.候選地址被存儲(chǔ)在SDP offer報(bào)文的屬性部分.當(dāng)R接收到offer之后, 就會(huì)進(jìn)行同樣的獲選地址收集過程,并返回給L.

這一步驟之后,兩個(gè)對(duì)等端都擁有了若干自己和對(duì)方的候選地址,并將其配對(duì),組成CANDIDATE PAIRS.為了查看哪對(duì)組合 可以工作,每個(gè)終端都進(jìn)行一系列的檢查.每個(gè)檢查都是一次STUN request/response傳輸,將request從候選地址對(duì)的本地 地址發(fā)送到遠(yuǎn)端地址. 連接性檢查的基本原則很簡(jiǎn)單:

以一定的優(yōu)先級(jí)將候選地址對(duì)進(jìn)行排序.

以該優(yōu)先級(jí)順序發(fā)送checks請(qǐng)求

從其他終端接收到checks的確認(rèn)信息

兩端連接性測(cè)試,結(jié)果是一個(gè)4次握手過程:

ZFUND基金-功能強(qiáng)大的ICE(區(qū)塊鏈從p2p開始 四)

值的一提的是,STUN request的發(fā)送和接收地址都是接下來進(jìn)多媒體傳輸(如RTP和RTCP)的地址和端口,所以, 客戶端實(shí)際上是將STUN協(xié)議與RTP/RTCP協(xié)議在數(shù)據(jù)包中進(jìn)行復(fù)用(而不是在端口上復(fù)用).

由于STUN Binding request用來進(jìn)行連接性測(cè)試,因此STUN Binding respons e中會(huì)包含終端的實(shí)際地址, 如果這個(gè)地址和之前學(xué)習(xí)的所有地址都不匹配,發(fā)送方就會(huì)生成一個(gè)新的candidate,稱為PEER RE FLEXIVE CANDIDATE, 和其他candida te一樣,也要通過ICE的檢查測(cè)試.

03

連接性檢查

所有的ICE實(shí)現(xiàn)都要求與STUN(R-FC5 389)兼容,并且廢棄Classic STU-N(RFC3 489).ICE的完整實(shí)現(xiàn)既生成checks(作為STUN client), 也接收checks(作為STUN server),而lite實(shí)現(xiàn)則只負(fù)責(zé)接收checks.這里只介紹完整實(shí)現(xiàn)情況下的檢查過程.

1. 為中繼候選地址生成許可(Permissions).

2. 從本地候選往遠(yuǎn)端候選發(fā)送Binding Request.

在Binding請(qǐng)求中通常需要包含一些特殊的屬性,以在ICE進(jìn)行連接性檢查的時(shí)候提供必要信息:

PRIORITY 和 USE-CANDIDATE

終端必須在其request中包含PRIORITY屬性,指明其優(yōu)先級(jí),優(yōu)先級(jí)由公式計(jì)算而得. 如果有需要也可以給出特別指定的候選(即USE-CANDIDATE屬性).

ICE-CONTROLLED和ICE-CONTROLLING

在每次會(huì)話中,每個(gè)終端都有一個(gè)身份,有兩種身份,即受控方(con-trolled role)和主控方(control-ling role). 主控方負(fù)責(zé)選擇最終用來通訊的候選地址對(duì),受控方被告知哪個(gè)候選地址對(duì)用來進(jìn)行哪次媒體流傳輸, 并且不生成更新過的offer來提示此次告知.發(fā)起ICE處理進(jìn)程(即生成offer)的一方必須是主控方,而另一方則是受控方. 如果終端是受控方,那么在request中就必須加上ICE-CONTROLL-ED屬性,同樣,如果終端是主控方,就需要ICE-CONTROLLING屬性.

生成Credential

作為連接性檢查的Binding Request必須使用STUN的短期身份驗(yàn)證.驗(yàn)證的用戶名被格式化為一系列username段 的聯(lián)結(jié),包含了發(fā)送請(qǐng)求的所有對(duì)等端的用戶名,以冒號(hào)隔開;密碼就是對(duì)等端的密碼.

3. 處理Response.

當(dāng)收到Binding Response時(shí),終端會(huì)將其與Binding Request相聯(lián)系,通常通過事務(wù)ID.隨后將會(huì)將此事務(wù)ID與 候選地址對(duì)進(jìn)行綁定。

失敗響應(yīng)

如果STUN傳輸返回487(Role Conflict)錯(cuò)誤響應(yīng),終端首先會(huì)檢查其是否包含了ICE-CONTROLLED或ICE-CONTROLLING 屬性.如果有ICE-CONTROLLED,終端必須切換為controlling role;如果請(qǐng)求包含ICE-CONTROLLING屬性, 則必須切換為controlled role.切換好之后,終端必須使產(chǎn)生487錯(cuò)誤的候選地址對(duì)進(jìn)入檢查隊(duì)列中, 并將此地址對(duì)的狀態(tài)設(shè)置為Waiting.

成功響應(yīng),一次連接檢查在滿足下列所有情況時(shí)候就被認(rèn)為成功:

STUN傳輸產(chǎn)生一個(gè)Success Response

response的源IP和端口等于Binding Request的目的IP和端口

response的目的IP和端口等于Binding Request的源IP和端口

終端收到成功響應(yīng)之后,先檢查其map ped address是否與本地記錄的地址對(duì)有匹配,如果沒有則生成一個(gè)新的候選地址. 即對(duì)等端的反射地址.如果有匹配,則終端會(huì)構(gòu)造一個(gè)可用候選地址對(duì)(valid pair).通常很可能地址對(duì)不存在于任何 檢查列表中,檢索檢查列表中沒有被服務(wù)器反射的本地地址,這些地址把它們的本地候選轉(zhuǎn)換成服務(wù)器反射地址的基地址, 并把冗余的地址去除掉.

本文中具體工作過程和詳細(xì)的屬性描述都未包含,如果需要根據(jù)協(xié)議來實(shí)現(xiàn)具體的應(yīng)用程序,還需要對(duì)RFC的文檔進(jìn)行仔細(xì)閱讀

地址 ICE STUN 檢查 終端
分享到:

1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會(huì)明確標(biāo)注作者和來源;
2.TMT觀察網(wǎng)的原創(chuàng)文章,請(qǐng)轉(zhuǎn)載時(shí)務(wù)必注明文章作者和"來源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
3.作者投稿可能會(huì)經(jīng)TMT觀察網(wǎng)編輯修改或補(bǔ)充。


專題報(bào)道

主站蜘蛛池模板: 午夜精品免费 | 成人国产精品一区二区不卡 | 大陆国产精品视频 | girlfriend动漫在线播放 | 91精品国产综合久久 | 欧美久草在线 | 40岁女人三级全黄 | 男女性gif抽搐出入视频 | 日本高清中文字幕一区二区三区 | 思久久| 免费看国产一级特黄aa大片 | 欧美式禁忌 | www久久精品 | 美人的淫事[纯hh] | 亚洲精品片 | 日韩欧美中文字幕一区二区三区 | 青草娱乐极品免费视频 | 亚洲区精品久久一区二区三区 | 99热久热这里只精品 | 91色+91sesex| 黄色大片网站 | 亚洲天堂网站在线 | 青柠影院在线观看免费完整版1 | 美女被躁了在线观看视频 | 五月天色小说 | 亚洲乱码一二三四区国产 | 秋霞理论在一l级毛片 | 欧洲男同直粗无套播放视频 | 天天澡夜夜澡狠狠澡 | a级毛片毛片免费很很综合 a级黄色视屏 | 国产午夜免费视频 | 午夜片无码区在线观看 | 手机看片日韩1024你懂的首页 | 国产成人毛片 | 免费一级片在线观看 | 99热在这里只有精品 | 国产成人在线播放视频 | 亚洲欧美日韩成人一区在线 | 国产在线伊人 | chinese圣水黄金调教 | 日韩在线视频免费不卡一区 |