WebRTC搭建與應用(一)
近期由于項目需要在研究前端WebGL渲染轉為云渲染,借此機會對WebRTC、ICE信令協議等有了初步了解,在此記錄一下,以防遺忘。
第一章 ICE服務搭建
文章目錄
- WebRTC搭建與應用(一)
- 前言
- 一、ICE是什么?
- 二、什么是STUN、TURN
- 三、Coturn開源框架
-
- 環境準備
- 部署過程
-
- 1.Ubuntu開啟圖形桌面化
- 2.Windows遠程連接Ubuntu
- 3 安裝Coturn
- 總結
前言
之前工作主要集中于桌面端和前端的輕量化圖形渲染與數據組織,服務端相關技術主要是接口調用,沒有什么技術積累,本次搭建工作屬于摸著石頭過河。
最開始在本地測試WebRTC點對點傳輸沒有任何問題,但是跨電腦測試時會提示ICE失敗,所以還是得研究一下什么是ICE。
一、ICE是什么?
ICE即交互式連通建立方式(Interactive Connectivity Establishment),ICE并非一種新的協議,而是通過綜合運用某幾種協議(STUN、TURN等),使之在最適合的情況下工作,以彌補單獨使用其中任何一種所帶來的固有缺陷。
基于IP的語音、數據、視頻等業務在網絡中所面臨的一個實際困難就是如何有效地穿透各種NAT(Network Address Translator:網絡地址轉換)以及FW(Fire Wall:防火墻)的問題。對此,SIP(會話初始化協議)以往的解決方法由ALGs(Application Layer Gateway Service:應用層網關)、STUN、TURN等方式。
二、什么是STUN、TURN
STUN(Session Traversal Utilities for NAT)即網絡地址轉換會話穿越應用程序。STUN提供了一種方式使一個端點能夠確定NAT分配的和本地私有IP地址和端口相對應的公網IP地址和端口以及NAT的類型信息。它也為端點提供了一種方式保持一個NAT綁定不過期。NAT綁定過期則表示為相同的內網地址重新分配外網地址也就是端口號。
TURN(Traversal Using Relay NAT)即網絡地址轉換中繼穿越協議。
TURN與STUN的共同點都是通過修改應用層中的私網地址達到NAT穿透的效果,不同點是TURN是通過兩方通訊的“中間人”方式實現穿透。
三、Coturn開源框架
Coturn 是一種開源服務器框架用于實現 TURN及STUN協議,用于解決 NAT 穿透問題。它幫助客戶端在受限網絡環境(例如防火墻或 NAT 后面)中實現雙向通信。
環境準備
Coturn主要部署在Linux系統中,本次測試采用華為云服務器Ubuntu 24.04版本。
部署過程
1.Ubuntu開啟圖形桌面化
之前僅通過FinalShell遠程連接過Ubuntu系統的命令行模式,此次是本人第一次操刀服務器使用,說來慚愧,各種坑各種不會,所以好好記錄一下一路的曲折。
sudo startx 啟動圖形用戶界面;
如果失敗,查看是否安裝了圖形界面,如果沒有,可按下述流程安裝:
(1)確保apt源可用并更新源
sudo apt-get update
(2)安裝桌面圖形化顯示
sudo apt-get install ubuntu-desktop
(3)設置默認開啟方式為圖形化界面顯示
sudo systemctl set-default graphical.target
(4)重啟
reboot
2.Windows遠程連接Ubuntu
對于前端開發人員來說一般都是在Windows環境進行開發,如果想要連接到Ubuntu服務器進行操作和測試,需要進行一些配置。
Windows的遠程桌面使用的協議為RDP,首先需要在Ubuntu的操作系統中安裝xrdp。
sudo apt-get install tightvncserver xrdp
安裝完成后,在Windows中通過遠程桌面連接輸入Ubuntu的ip以及用戶名、密碼即可實現遠程連接。
3 安裝Coturn
安裝過程請參考:
https://blog.csdn.net/yushangyong/article/details/129973873
切記:listening-port設置的監聽端口一定要將TCP和UDP都開放,min-port和max-port設置的端口一定要將UDP開放對外,否則會無法連接。
以下是中文版TURN服務測試地址
https://docs.wildfirechat.cn/webrtc/trickle-ice/
總結
以上步驟如果都正確完成以后,那恭喜你WebRTC的長征邁出了堅實的一步,下面就要開始研究點對點通信以及WebRTC推流了,后續有時間在嘗試一下使用docker部署Coturn,我們下一章繼續WebRTC之旅。