Web RTC - swkim0128/PARA GitHub Wiki
WebRTC(Web Real-Time Communication)๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ๊ณผ ์ฌ์ดํธ๊ฐ ์ค๊ฐ์ ์์ด ๋ธ๋ผ์ฐ์ ๊ฐ ์ค๋์ค๋ ์์ ๋ฏธ๋์ด๋ฅผ ํฌ์ฐฉํ๊ณ , ์์ ๋ก์ด ์คํธ๋ฆผ๊ณผ ๋๋ถ์ด ์์์ ๋ฐ์ดํฐ ๊ตํ ๊ธฐ๋ฅ๋ ์ ๊ณต.
์ฃผ๋ก ํ์ ์ปจํผ๋ฐ์ค, ํ์ผ ๊ณต์ , ํ๋ฉด ๊ณต์ , ๋ฐฉ์ก ๋ฑ์ ์ฐ์ ๋๋ค.
[WebRTC API] https://developer.mozilla.org/ko/docs/Web/APIWebRTC_API
[WebRTC ์ค์๊ฐ ๋ฐ์ดํฐ ๊ตํ] https://wormwlrm.github.io/2021/01/24/Introducing-WebRTC.html
[WebRTC STUN, TURN ์๋ฒ] https://andonekwon.tistory.com/59
์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ์ธํฐ๋ท ๋คํธ์ํฌ์๋ ๋ฐฉํ๋ฒฝ์ด ์กด์ฌํ๋ฉฐ, NAT(Network Address Translation)๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ๋คํธ์ํฌ ์์ ์๋ฒ, ํธ์คํธ ๋ฑ์ด ์ผ๋ถ ๋ด๋ถ ๋คํธ์ํฌ๋ฅผ ํตํด ์๋ก ๋งคํํ์ฌ ํต์ ํ๋ ๋ฐฉ์์ ์ด์ฉํ๊ณ ์๋ค.
WebRTC๋ ์๊ทธ๋๋ง(Signaling)์ด๋ผ๋ ํต์ ์ ์ฐจ๋ฅผ ํตํด P2P(Peer to Peer)๋ก ํต์ ํ๋ฉฐ, ์ด ๋ ๋ฐฉํ๋ฒฝ ๋ค์ ์จ์ ๋คํธ์ํฌ์ ์ํ ํด๋ผ์ด์ธํธ Private IP ๊ฐ์ P2P ํต์ ์ ๋ถ๊ฐํ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ก ์ด ๋ STUN ๋๋ TURN ์๋ฒ๊ฐ ํ์ํฉ๋๋ค.
STUN ์๋ฒ๋ UDP ํ๋กํ ์ฝ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ, ํด๋ผ์ด์ธํธ์ Public IP๋ฅผ ํ์ธํ์ฌ ์๊ทธ๋๋ง ์ํํ ์ ์๋๋ก ํฉ๋๋ค. Signaling Server ๋๋ Kurento ๋ฏธ๋์ด ์๋ฒ๊ฐ ๋ ๊ฒ์ ๋๋ค.
TURN ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ค์ด ์๋ก ํต์ ํ ๋ Public ๋ง์ ์กด์ฌํ๋ TURN ์๋ฒ๋ฅผ ๊ฒฝ์ ํ๋๋กํ์ฌ ๋ฏธ๋์ด ์คํธ๋ฆฌ๋ฐ์ ๋ฆด๋ ์ดํ๋๋ก Peer ์ Peer๊ฐ ํต์ ํ ์ ์๋๋ก ํด์ค๋๋ค. TURN์ STUN์ ํ์ฅ ๊ฐ๋ ์ด๋ฉฐ, ํด๋ผ์ด์ธํธ๊ฐ ์๋ก ๋ค๋ฅธ NAT ๋๋ ๋ฐฉํ๋ฒฝ ๋ค์ ์ผ์ ๋, NAT ๋๋ ๋ฐฉํ๋ฒฝ์ ์ฐํํ๋ฉฐ ํด๋ผ์ด์ธํธ๊ฐ ์ค๊ฐ ์๋ฒ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ํฉ๋๋ค.
Kurento ๋ฏธ๋์ด ์๋ฒ๋ ์คํ ์์ค ํ๋ก์ ํธ๋ก WebRTC์ ์ฌ์์ด ๋ชจ๋ ๊ตฌํ๋ WebRTC ๋ฏธ๋์ด ์๋ฒ์ ํด๋ผ์ด์ธํธ API๋ฅผ ์ ๊ณตํ๋ ํจํค์ง์ด๋ฉฐ, WebRTC ํ์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ง์ํฉ๋๋ค.