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

功能強大的ICE(區塊鏈從p2p開始 )區塊鏈

ZFUND基金 2018-08-10 23:25
分享到:
導讀

ICE的全稱為InteractiveConnec-tivityEstablishment,即交互式連接建立.初學者可能會將其與網絡編程的ICE弄混,其實那是不一樣的東西,在網絡編程中。

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

01

ICE簡介

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

使用offer/answer模型(RFC3264)的協議通常很難在NAT之間穿透,因為其目的一般是建立多媒體數據流,而且在報文中還 攜帶了數據的源IP和端口信息,這在通過NAT時是有問題的.RFC3264還嘗試在客戶端之間建立直接的通路,因此中間就缺少 了應用層的封裝.這樣設計是為了減少媒體數據延遲,減少丟包率以及減少程序部署的負擔.然而這一切都很難通過NAT而完成. 有很多解決方案可以使得這些協議運行于NAT環境之中,包括應用層網關(ALGs),Cla ssic STUN以及Realm Specific IP SDP 協同工作等方法.不幸的是,這些技術都是在某些網絡拓撲下工作很好,而在另一些環境下表現又很差,因此我們需要一個單一的, 可自由定制的解決方案,以便能在所有環境中都能較好工作.

02

ICE工作流程

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

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

ICE的基本思路是,每個終端都有一系列傳輸地址(包括傳輸協議,IP地址和端口)的候選,可以用來和其他端點進行通信. 其中可能包括:

直接和網絡接口聯系的傳輸地址(host address)

經過NAT轉換的傳輸地址,即反射地址(server reflective address)

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

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

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

其次,客戶端通過STUN或者TURN來獲得更多的候選傳輸地址,即SERV-ER REFLEXIVE CANDIDATES和R-ELAYED CANDIDATES, 如果TURN服務器是標準化的,那么兩種地址都可以通過TURN服務器獲得.當L獲得所有的自己的候選地址之后,會將其 按優先級排序,然后通過signaling通道發送到R.候選地址被存儲在SDP offer報文的屬性部分.當R接收到offer之后, 就會進行同樣的獲選地址收集過程,并返回給L.

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

以一定的優先級將候選地址對進行排序.

以該優先級順序發送checks請求

從其他終端接收到checks的確認信息

兩端連接性測試,結果是一個4次握手過程:

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

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

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

03

連接性檢查

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

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

2. 從本地候選往遠端候選發送Binding Request.

在Binding請求中通常需要包含一些特殊的屬性,以在ICE進行連接性檢查的時候提供必要信息:

PRIORITY 和 USE-CANDIDATE

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

ICE-CONTROLLED和ICE-CONTROLLING

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

生成Credential

作為連接性檢查的Binding Request必須使用STUN的短期身份驗證.驗證的用戶名被格式化為一系列username段 的聯結,包含了發送請求的所有對等端的用戶名,以冒號隔開;密碼就是對等端的密碼.

3. 處理Response.

當收到Binding Response時,終端會將其與Binding Request相聯系,通常通過事務ID.隨后將會將此事務ID與 候選地址對進行綁定。

失敗響應

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

成功響應,一次連接檢查在滿足下列所有情況時候就被認為成功:

STUN傳輸產生一個Success Response

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

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

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

本文中具體工作過程和詳細的屬性描述都未包含,如果需要根據協議來實現具體的應用程序,還需要對RFC的文檔進行仔細閱讀

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

1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。


專題報道

主站蜘蛛池模板: 久久精品国产久精国产果冻传媒 | 天天爱综合 | 男人天堂资源 | 亚洲高清国产品国语在线观看 | 免看一级a一片成人123 | 青草视频网站在线观看 | 国产精品免费_区二区三区观看 | 国产精品一区二区在线观看完整版 | 日本福利视频网站 | 红杏网 | 四虎在线最新永久免费 | 亚洲欧美日韩国产一区二区精品 | 色多多影院| 亚洲人成影院午夜网站 | 国产成年人视频 | 波多野结衣无码 | 国产第一福利视频导航在线 | 我与旗袍老师疯狂床震 | 秋霞一级毛片 | 欧美摸胸| 国产成人手机在线好好热 | 校花小雪灌满了男人们的浓浆 | gogort人体的最新网站 | 女教师波多野结衣高清在线 | 国产成人精品免费午夜 | 国内精品91久久久久 | 亚洲国产欧美久久香综合 | 九九大香尹人视频免费 | 国产大片视频免费观看 | 欧美一区二区三区四区五区六区 | 欧美日韩国产一区二区三区欧 | 亚洲精品一区在线观看 | 国产精品亚洲专区一区 | 成人午夜视频一区二区国语 | 男人影院在线观看 | 国产精品成人扳一级aa毛片 | 极品丝袜小说全集 | 91超级碰 | 欧美 亚洲 综合 卡通 另类 区 | sss在线播放| 太紧太深了受不了黑人 |