WebRTC는 끊임없이 연결이 유지되어 요청을 처리하는 상태유지(stateful)프로토콜 입니다.
일반적으로 HTTP 통신은 비상태(stateless) 프로토콜은 일회성으로 요청을 처리하고 응답합니다.
미디어 스트리밍을 제공하는 서버는 일반적인 시스템 구성과는 다른 전략이 필요합니다.
WebRTC 기술에 대한 이해
WebRTC는 Web Real-Time Communication의 약어로 웹에서 실시간 미디어(오디오, 비디오)와 데이터 통신을 위해 제안된 기술입니다.
이는 유저가 어떠한 네트워크 환경에 있더라도 최대 수백 밀리초(ms)내에 상호작용이 일어날 수 있도록 설계되었습니다
WebRTC는 모든 네트워크에서 실시간 저지연성을 실현시키기 위해
RTP
,
ICE
기반 기술들을 구현하고 있습니다.
저지연성이란? 데이터가 발생한 시점부터 처리되어 결과가 나타나기까지의 시간이 매우 짧은 상태를 가리킵니다.
연결 방식
WebRTC를 사용하여 두 사용자는 어떻게 연결되어 있을까요?
WebRTC는 다양한 프로토콜(ICE, RTP/RTCP, DTLS 등)이 복합적으로 연계되어 있는 양방향 연결인 PeerConnection을 통해 두 사용자를 직접적으로 연결하고 있습니다.
연결된 두 사용자는 PeerConnection을 통해 오디오나 비디오 등의 미디어롤 전송하고, DataChannel을 생성하여 미디어 외 데이터를 전송할 수 있습니다.
최초 두 사용자를 PeerConnection으로 연결시키기 위해서는 IP, 포트, 미디어 코덱 등의 세션정보를 교환해야합니다.
두 사용자 사이에서 PeerConnection을 맺기 위한 세션정보를 교환해주는 서버인
시그널링 서버
의 도움을 받아 두 사용자가 세션정보를 교환할 수 있습니다.
세션을 교환하는 기술에 대한 표준은 존재하지 않으며 WebSocket, STOMP, gRPC 등 다양한 방식으로 구현되고 있습니다.
시그널링 서버를 통해 PeerConnection을 맺는 과정은 일반적으로 Offer/Answer 모델에 따라 이뤄집니다.
Offer/Answer 모델
Offer/Answer 모델은 SDP를 사용하는 모델입니다.
프로세스는 시그널링 서버에서 진행되고, 진행과정은 다음과 같습니다.
Alice가 Bob에게 자신의 IP, 포트, 지원 가능한 미디어 코덱 등의 세션 정보를 시그널링 서버를 통해 전달(Offer)합니다.
Bob은 전달받은 Alice의 세션정보를 바탕으로 PeerConnection을 맺을 준비를 합니다.
Bob은 연결 가능한 자신의 IP, 포트, 미디어 코덱 등의 세션정보를 시그널링 서버를 통해 Alice에게 전달(Answer)합니다.
Alice는 전달받은 Bob의 세션정보를 바탕으로 PeerConnection을 맺습니다.
Alice와 Bob은 PeerConnection을 통해 서로에게 미디어를 전송할 수 있습니다.
용어정리
PeerConnection