본문 바로가기

WebRTC

[WebRTC] WebRTC 프로토콜 & API 용어정리

프로토콜

WebRTC란?

  • 웹 브라우저 간에 실시간 음성, 영상 및 데이터 통신을 가능하게 하는 오픈 소스 프로젝트
  • P2P를 이용한 기술로, 서버 없이 클라이언트와 클라이언트가 직접적으로 연결하여 통신
  • 클라이언트 간 직접 연결을 통해, 더 빠른 연결 속도와 더 작은 지연 시간을 제공
  • API는 JavaScript로 구현
  • RFC 8825 : https://datatracker.ietf.org/doc/html/rfc8825#name-terminology

SDP

  • 세션을 초기화하고 미디어 통신을 위한 세션 파라미터를 교환하는 데 사용되는 프로토콜
  • 세션을 설명하고 제안하는 메타데이터 형식으로, 웹 애플리케이션에서 피어 간에 미디어 통신을 설정하고 제어하는 데 사용
  • 미디어 유형(예: 오디오, 비디오), 코덱 정보, IP 주소 및 포트 번호, 프로토콜 등이 포함
  • 피어 간에 교환되며, 각 피어는 자신의 기능과 요구 사항을 SDP로 전달
  • RFC 8866 : https://datatracker.ietf.org/doc/html/rfc8866

ICE

  • 두 피어 간의 네트워크 연결을 확립하는 프로토콜
  • 두 피어가 서로 통신할 수 있는 가장 효과적인 경로를 찾는 역할을 수행
  • 수행과정
    1. Gathering: 모든 가능한 IP 주소(ICE candidate)를 수집. 로컬 IP 주소, 공용 IP 주소, 그리고 STUN 서버를 통해 얻은 주소를 포함
    2. Connectivity Checks : 수집된 모든 IP 주소의 효용성을 확인. TURN 서버를 사용하여 NAT 또는 방화벽을 통과할 수 있는지 테스트.
    3. Nominating: 가장 효과적인 연결 경로를 선택. 모든 경로 중 가장 효과적인 경로를 선택.
    4. Using: 선택된 경로를 사용하여 통신 시작.
  • RFC 8445 : https://datatracker.ietf.org/doc/html/rfc8445

Signaling

  • 두 피어가 서로 통신을 시작하기 전에 필요한 정보를 교환하는 과정을 의미
  • 통신을 시작하기 위한 핸드셰이크처럼 동작
  • WebRTC 연결의 초기 설정, 오디오와 비디오의 메타데이터 교환, 그리고 네트워크 정보를 교환하는 데 필요함
  • 수행과정
    1. 세션 제어 메시지 교환 : 통신을 시작하거나 종료하려는 의도를 상대방에게 알리는 메시지를 교환
    2. 미디어 메타데이터 교환 : 미디어의 종류(오디오, 비디오 등), 포맷, 코덱 등에 대한 정보를 교환. 이 정보는 SDP(Session Description Protocol) 형식으로 교환됨.
    3. 네트워크 데이터 교환 : 각 피어의 IP 주소와 포트 정보를 교환하여 피어 간 직접 연결을 설정. 이 과정에서는 ICE 프로토콜이 사용됨
  • Signaling 서버는 PeerConnection을 맺기 위한 세션정보를 교환해주는 서버를 의미
  • 시그널링 서버에서 세션정보를 교환하는 기술에 대한 표준은 존재하지 않으며, WebSocket, STOMP, gRPC 등 다양한 방식으로 구현

STUN

  • NAT(Network Address Translation) 환경에서 피어의 공용 IP 주소를 찾아내는 서버
  • 피어는 STUN 서버에 요청을 보내고, STUN 서버는 요청을 보낸 피어의 공용 IP 주소와 포트 정보를 응답
  • 이 정보는 시그널링 과정에서 다른 피어에게 전달되어 피어 간 직접 연결을 가능하게 함

TURN

  • STUN이 실패했을 때, 즉 피어 간 직접 연결이 불가능한 환경에서 사용되는 서버
  • Symmetric NAT 제한을 우회하기 위함
  • 모든 트래픽을 중계하는 역할을 수행
  • 피어는 데이터를 TURN 서버에 보내고, TURN 서버는 이 데이터를 목적지 피어에게 전달
  • 더 많은 네트워크 리소스를 사용하기 때문에, 최후의 보루

Symmetric

  • 네트워크 주소 변환(Network Address Translation)의 한 유형
  • 호스트가 외부로 통신을 시도할 때마다, 소스 IP 주소와 포트 번호를 변경하여 외부로 나가는 패킷을 공용 IP 주소로 변환
  • 각 호스트가 인터넷에 접속할 때마다 공용 IP 주소 및 포트 번호가 변경됨을 의미
  • ‘외부에서 내부 호스트로 직접 접근 제한’ , ‘IP 주소 부족문제해결’ 을 위해 등장함.

 

API

 

getUserMedia

  • 웹 브라우저에 접근하여 사용자의 카메라와 마이크를 사용할 수 있게함
  • 이를 통해 비디오와 오디오 스트림을 캡처

RTCPeerConnection

  • 미디어 스트림 연결 : 두 피어 간의 오디오, 비디오, 데이터 스트림을 교환하기 위한 커넥션 객체
  • 시그널링 프로세스 관리 : 두 피어가 연결을 설정하고, 미디어 데이터를 교환하고, 네트워크 정보를 공유할 수 있게 함
  • ICE 프레임워크 활용 : ICE 프레임워크를 사용하여 네트워크 경로를 찾음. STUN과 TURN 서버를 이용하여 NAT 및 방화벽을 통과하고, 두 피어 간의 가장 효과적인 연결을 확립

RTCDataChannel

  • (오디오, 비디오 이외에) 텍스트, 이미지, 파일 등의 데이터를 직접 교환할 때 사용됨
  • 데이터 손실 방지를 위한 확인 응답 프로토콜 지원
  • 데이터 순서를 유지함
  • 필요에 따라 대역폭 사용량 조정