WebRTC 용어 정리

zziano·2022년 4월 28일
0

WebRTC(Web Real-Time Communication)은 웹 애플리케이션과 사이트가 중간자 없이 브라우저 간에 오디오나 영상 미디어를 포착하고 마음대로 스트림할 뿐 아니라, 임의의 데이터도 교환할 수 있도록 하는 기술입니다. WebRTC를 구성하는 일련의 표준들은 플러그인이나 제 3자 소프트웨어 설치 없이 종단 간 데이터 공유와 화상 회의를 가능하게 합니다.

즉 드라이버나 플러그인 설치 없이 웹 브라우저 간 P2P연결을 통해 데이터 교환을 가능하게 하는 기술

시그널링이란?


서로 다른 네트워크에 있는 2개의 디바이스들을 통신하기 위해서는 각 디바이스들의 위치(IP) 발견 및 미디어 포맷협의가 필요합니다. 이 프로세스를 시그널링이라고 부르고 각 디바이스들을 상호간에 동의된 서버(socket)에 연결시킨다.

  • 시그널링 데이터 = SDP
  • SDP를 교환한 후 두 peer들은 ICE candidate를 교환한다.
  • ICE candidate는 발신 피어 입장에서 통신을 할 수있는 방법 설명

시그널링 서버

두 디바이스 사이에 WebRTC 커넥션을 만들기 위해 그 둘을 연결시키는 작업을 해줄 서버가 필요하다.

방화벽과 NAT

일반적인 컴퓨터에는 공인 IP가 할당되어 있지 않다. 그 원인으로는 방화벽, 여러 대의 컴퓨터가 하나의 공인 IP를 공유하는 NAT, 유휴 상태의 IP를 일시적으로 임대받는 DHCP때문
-> 공인 IP만을 알아낸다해서 특정 사용자를 가르킬 수 없다. 해당 네트워크에 연결된 사설 IP 주소까지 알아내야 특정한 사용자를 지정 가능
일반적으러 라우터가 NAT 역할을 한다. 외부에서 접근하는 공인 IP와 포트 번호를 확인하여 현재 네트워크 내의 사설 IP를 적절히 매핑
-> 어떤 브라우저 두개가 직접 통신을 하려면 각자 현재 연결된 라우터의 공인 IP와 포트를 먼저 알아내야 한다.

하지만 어떤 라우터들은 주소나 포트와의 연결을 차단하는 방화벽 설정이 되어 있을 수도 있기때문에 라우터를 통과해서 연결할 방법을 찾는 과정을 NAT 트래버셜이라 한다.

STUN과 TURN 서버

STUN : 외부 네트워크 주소를 얻는데 사용
TURN : P2P 연결이 실패할 경우 트래픽을 중계하는데 사용

NAT 트래버셜 작업은 STUN(Session Traversal Utilliies for NAT) 에 의해 이루어진다.
STUN방식은 단말이 자신의 공인 IP주소와 포트를 확인하는 과정에 대한 프로토콜
인터넷의 복잡한 주소들 속에서 유일하게 자기 자신을 식별할 수 있는 정보를 반환
-> WebRTC연결 시작 전 STUN 서버에 요청을 보내면 STUN 서버는 NAT뒤에 있는 Peer들이 서로 연결할 수 있도록 공인 IP와 포트를 찾아준다.

하지만 SUTN 서버가 주소를 찾아내지 못할 경우 TURN(Traversal Using Relay NAT)서버를 대안으로 이용한다.
TURN 방식은 네트워크 미디어를 중개하는 서버를 이용, 중간에 서버를 한 번 거치기 때문에 엄밀히 이야기 하면 P2P 통신은 아니게 되며 구조상 지연이 필연적으로 발생하게 된다. -> 최후의 수단으로 선택되어야 한다.

ICE, Candidate

Ip 주소와 프로토콜, 포트 조합으로 구성된 연결 가능한 네트워크 주소들을 후보(Candidate)라고 부른다. 이 과정을 Finding Candidiate라고 한다.

  • 자신의 사설 IP와 포트 넘버
  • 자신의 공인 IP와 포트 넘버(STUN, TURN 서버로 획득 가능)
  • TURN 서버의 IP와 포트 넘버(TURN 서버로부터 획등 가능)

이 과정은 ICE(Interactive Connectivity Establishment)라는 프레임 위크 위에서 이루어진다.
-> ICE란 ? 두 개의 단말이 P2P 연결을 가능하게 하도록 최적의 경로를 찾아주는 프레임위크

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

profile
Onion on Sale

0개의 댓글