Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

Code Habit

WebRTC 본문

카테고리 없음

WebRTC

코드베어 2022. 12. 12. 16:18

WebRTC는 'web real-time communication'을 뜻하며 따로 서버를 구성할 필요 없이 peer-to-peer방식으로 peer간 media 데이터를 교환할 수 있게 해준다. 데이터를 교환하기 전 서로 연결을 위해 '시그널링' 이라는 과정이 필요한데 이때는 서버가 필요하긴 하나 일단 연결이 이루어지고 나면 peer간 통신에 서버는 더이상 관여하지 않는다. 

 

P2P(peer-to-peer)연결은 중개 서버를 거치지 않기 때문에 빠른 속도가 보장되며, HTTPS가 강제되기 때문에 보안이 보장된다.

 

WebRTC를 이해하는데 필요한 몇몇 용어들을 간단히 정리해보겠다.

 

- ICE 

Interactive Connectivity Establishment ( ICE )은 웹브라우저 간 서로 연결을 도와주는 프레임워크다. 하지만 피어 간의 연결을 위해서는 서로의 주소정보(IP)를 알아야 하는데 보통 우리가 사용하는 디바이스는 공용 IP를 가지고 있지 않은 경우가 대부분이다. 그 원인으로는 방화벽, 여러대의 컴퓨터가 하나의 IP를 공유하는 NAT, 유휴상태의 IP를 일시적으로 임대받는 DHCP 때문이다. 그래서 ICE는 이 문제를 해결하기 위해 STUN 혹은 TURN 서버를 사용한다.

 

- STUN

Session Traversal Utilities for NAT ( STUN )은 피어간의 연결을 방해하는 라우터의 제한사항들을 알아내거나 당신의 공인주소를 찾는데 사용되는 서버다. 

 

클라이언트는 인터넷상에 스턴서버에게 요청을 보내고 서버는 라우터의 NAT뒤에 있는 클라이언트에 접속할 수 있는지, 또 클라의 공인 주소를 알려준다.

 

- NAT

Network Address Translation ( NAT )은 단말에 공개 IP주소를 할당하기 위해 사용된다. 일반적으로 라우터가 NAT역할을 한다. 외부에서 접근하는 공인 IP와 포트 번호를 확인하여 현재 네트워크 내의 사설 IP들을 적절히 매핑시켜준다. 그러니 어떤 브라우저 두 개가 서로 직접 통신 하려면, 각자 현재 연결된 라우터의 공인 IP 주소와 포트를 먼저 알아내야 한다. 몇몇 라우터들은 네트워크에 연결하는데 제한을 갖고 있다. STUN 서버에 의해 공개 IP 주소를 발견한다고 해도 모두가 연결할 수 있는 것은 아니다. 이를 위해 TURN 서버가 필요하다. 

 

- TURN

몇몇 라우터들은 'Symmetric NAT'이라 불리는 제한을 채택한다. 이는 이전에 연결 됬었던 피어들의 연결만 받아들인다는 의미이다. Traversal Using Relays around NAT ( TURN )은 peer간의 연결에 중간에 TURN 서버를 둠으로써 'Symmetric NAT' 제한을 우회하는 것을 의미한다. 바로 연결이 아닌 서버를 거치기 때문에 엄밀히 말하면 이는 P2P방식이 아니며 중간에 지연이 발생할 수 있다. 하여 다른 대안이 없을때만 사용한다.

 

- SDP

Session Description Protocol ( SDP ) 은 해상도나 형식, 코덱 암호화 등의 멀티미디어 컨텐츠의 연결을 설명하기 위한 표준 프로토콜이다. 이는 peer들이 서로의 전송하고 있는 미디어 데이터를 이해하게 해준다.

 

- 참고 사이트

https://wormwlrm.github.io/2021/01/24/Introducing-WebRTC.html

https://web.dev/webrtc-infrastructure/

https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Protocols