国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于WebRTC的實時通信

2021-11-27 02:08:20常天宇彭振
工程技術(shù)與管理 2021年20期
關(guān)鍵詞:公網(wǎng)服務(wù)端信令

常天宇 彭振

國家無線電監(jiān)測中心檢測中心,中國·北京 100041

1 概述

WebRTC 是一個跨平臺的多媒體框架可以進行音視頻處理和實時通訊。通過瀏覽器進行音視頻設(shè)備訪問管理、音視頻采集、數(shù)據(jù)傳輸最終搭建實時互動的平臺[1]。

信令服務(wù)器用來交換每個終端支持的媒體信息(編解碼器等)和網(wǎng)絡(luò)信息(每個終端可能支持的通路);STUN/TURN 服務(wù)器用來進行NAT 穿越和提供中繼服務(wù);NAT 穿越成功可以建立P2P 通道直連進行媒體數(shù)據(jù)的傳輸,否則需要中繼節(jié)點進行中轉(zhuǎn)[2]。

2 信令服務(wù)器的搭建

①下載并安裝nodejs、express、serve-index、socket.io模塊。

②新建server.js 文件中引入以上模塊。

③創(chuàng)建http 和https 服務(wù)。

④將socket 服務(wù)和web 服務(wù)綁定。

⑤服務(wù)端偵聽底層發(fā)送的connection 事件后,繼續(xù)偵聽客戶端自定義事件并進行后續(xù)的邏輯處理。

⑥打開端口http 服務(wù)監(jiān)聽80,https 服務(wù)監(jiān)聽443。(web和socket 服務(wù)端口復(fù)用)

⑦node 運行server.js 文件開啟服務(wù)。

⑧編寫好的客戶端html、js、css 文件放在服務(wù)端public 路徑,利用本地瀏覽器的v8 引擎進行渲染處理后實現(xiàn)交互。

3 NAT 穿越

NAT 功能是給內(nèi)網(wǎng)地址提供一個公網(wǎng)的映射地址,提高安全性并解決IPV4 地址不足。

有四種類型的NAT,即完全錐型、地址限制性NAT、端口限制性NAT、對稱性NAT。安全性依次增加,給NAT穿越打洞帶來挑戰(zhàn)。對于端口受限錐形與對稱性NAT、對稱型NAT 與對稱性NAT 之間幾乎很難打洞成功[3]。雖然可以嘗試IP 地址和端口猜測的方式,但對猜測算法要求很高。

如何進行NAT 類型檢測有以下步驟:

①服務(wù)器2 臺,需有2 個IP 地址和端口(#1 服務(wù)器雙網(wǎng)卡)。

②客戶端向服務(wù)端發(fā)送多個ECHO(UDP 報文)請求,服務(wù)端用該IP 地址和端口返回響應(yīng)。如果一個響應(yīng)也沒有收到,那么說明不支持UDP 形式檢測。

③如果客戶端收到回復(fù)響應(yīng),則需要對比返回的ip 地址和發(fā)送的IP 地址,如果相同則客戶端沒有在NAT 之后,否則在NAT 之后。

④客戶端再向服務(wù)端發(fā)送請求,服務(wù)端用不同于接收請求的IP 地址和端口進行回復(fù)響應(yīng),如果客戶端收到了響應(yīng)則說明客戶端處于完全開放的公網(wǎng),否則客戶端位于對稱性防火墻之后。

⑤如果第三步在NAT 之后重復(fù)第四部步驟,客戶端收到回復(fù)響應(yīng),則NAT 類型為完全錐形,否則需要進一步判斷。

⑥向第二臺服務(wù)器重復(fù)步驟二操作,得到回復(fù)后對比經(jīng)過NAT 映射后的公網(wǎng)IP 地址和第三步得到的公網(wǎng)IP 是否相同,如果不同則為對稱性NAT,如果相同客戶端向一臺服務(wù)器再次發(fā)送請求,服務(wù)器端用相同的IP 地址但是不同的端口進行回復(fù)響應(yīng),如果客戶端能收到則為IP 限制性NAT,否則為端口限制性NAT。

4 STUN 服務(wù)

交換公網(wǎng)IP 地址和端口,便于進行NAT 穿越。是典型的客戶端/服務(wù)器模式。即客戶端發(fā)送請求,服務(wù)端響應(yīng)。如果沒有STUN 服務(wù),客戶端無法知道彼此的IP,即使在公網(wǎng)上的主機也是無法進行通訊的(見圖1)。

圖1 STUN 服務(wù)器工作原理

5 TURN 服務(wù)

建立在STUN 協(xié)議之上,TURN 客戶端發(fā)送allocate 請求,服務(wù)器分配公網(wǎng)IP 地址和端口提供流媒體數(shù)據(jù)的中轉(zhuǎn)服務(wù)以解決NAT 無法穿越的問題。TURN 服務(wù)器對于同一客戶端有2 個端口分別提供allocate 請求服務(wù)和數(shù)據(jù)中轉(zhuǎn)服務(wù):TURN 服務(wù)器的3478 端口和客戶端可以是TCP 或者UDP(NAT 穿越基于TCP 打洞或UDP 打洞,一般來說為了保證請求服務(wù)的可靠性都是基于TCP 或者TLS over TCP);50000 端口和客戶端是流媒體的UDP 包,UDP 數(shù)據(jù)的傳輸方式有send/data 或channel,兩者可以共存[4]。

6 ICE 框架

收集每個終端可能的通路(本機地址、反射地址、中繼地址)通過信令服務(wù)器進行交換然后再進行連通性檢測。優(yōu)先P2P 穿越,不成功選擇TURN 中轉(zhuǎn)服務(wù)。

STUN/TURN 服務(wù)器搭建選型Coturn 并下載安裝到服務(wù)器,需要配置表1的參數(shù)可以提供基本的STUN/TRUN服務(wù)。

表1 配置參數(shù)

配置好后開啟該服務(wù)并用Trickle ICE 檢查服務(wù)運行是否正常。candidate 收集到2 個本機的地址(host 雙網(wǎng)卡)、1 個經(jīng)過NAT 之后的映射公網(wǎng)地址(srflx)以及1 個提供TURN 服務(wù)的中繼地址(relay)。具體網(wǎng)絡(luò)可以通過wireshark 或者linux 下的tcpdump 進行抓包分析。

7 建立通訊

Peer A 和Peer B 進行通訊,先進行媒體協(xié)商(即協(xié)商共同支持的編解碼器等),再進行候選者收集鏈路優(yōu)先級排序檢查通路,最后進行媒體流的傳輸。Peer A、Peer B 在建立的通路上進行媒體數(shù)據(jù)的傳輸,并將收到的數(shù)據(jù)添加在本地html頁面標簽上顯示。

信令服務(wù)和STUN/TURN 服務(wù)可以部署在同一臺物理設(shè)備上,客戶端可以發(fā)送本地采集的音視頻數(shù)據(jù)、共享本地桌面、文字聊天和文件傳輸?shù)葘崿F(xiàn)1V1 實時互動。如果是同一NAT 后的終端通訊,不需要開啟STUN/TURN 服務(wù)即可建立P2P 直連,如果是不同網(wǎng)絡(luò)在NAT 穿越失敗后需要TURN 服務(wù)中轉(zhuǎn)才能進行通訊。

8 結(jié)語

WebRTC 通訊基于服務(wù)端(信令服務(wù)、STUN/TURN 服務(wù))和客戶端的交互,其中信令服務(wù)極為重要。隨著IPV6的普及,NAT 的功能或被淡化,即可以減少NAT 穿越帶來的困難,又能增加網(wǎng)絡(luò)安全性,為音視頻的實時傳輸提供保障。

猜你喜歡
公網(wǎng)服務(wù)端信令
淺析大臨鐵路公網(wǎng)覆蓋方案
中國新通信(2022年4期)2022-04-23 23:04:20
公網(wǎng)鐵路應(yīng)急通信質(zhì)量提升的技術(shù)應(yīng)用
SLS字段在七號信令中的運用
移動信令在交通大數(shù)據(jù)分析中的應(yīng)用探索
云存儲中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
新時期《移動Web服務(wù)端開發(fā)》課程教學(xué)改革的研究
基于信令分析的TD-LTE無線網(wǎng)絡(luò)應(yīng)用研究
在Windows Server 2008上創(chuàng)建應(yīng)用
基于公網(wǎng)短信的河北省高速公路數(shù)據(jù)傳輸應(yīng)用
LTE網(wǎng)絡(luò)信令采集數(shù)據(jù)的分析及探討
郸城县| 奉节县| 蓝山县| 都匀市| 邓州市| 泰来县| 古交市| 涞源县| 长春市| 陆川县| 大足县| 晋州市| 泉州市| 阜宁县| 锦州市| 巴彦淖尔市| 西畴县| 织金县| 砚山县| 淮阳县| 周宁县| 阳城县| 瑞丽市| 犍为县| 四会市| 定襄县| 江津市| 阿克| 汕尾市| 濉溪县| 藁城市| 湛江市| 新闻| 丰镇市| 龙岩市| 水城县| 三原县| 什邡市| 鲁山县| 朔州市| 奇台县|