[TIL] WebRTC

Paulo·2023년 1월 11일
post-thumbnail

WebRTC(Web Real-Time Communication)란, 웹 애플리케이션 및 사이트들이 별도의 소프트웨어 없이 음성, 영상 미디어, 텍스트, 파일 같은 데이터를 브라우저끼리 주고 받을 수 있도록 만든 기술이다. WebRTC로 구성된 프로그램들은 별도의 플러그인이나 소프트웨어 없이 P2P 화상회의 및 데이터를 공유한다.

즉, 브라우저 상에서 어떠한 플러그인도 필요없이 음성, 화상 채팅과 데이터 교환까지 가능하게 하는 기술이다.

WebRTC 구조

WebRTC가 동작하기 위해서는 P2P 연결이 선행되어야 하는데, 이 P2P 연결을 위해 별도의 서버가 필요하다. P2P 연결을 하기 위해서는 각 Peer들의 공인 네트워크 주소(IP)를 알아야 하는데, 우리가 실제 사용하는 컴퓨터의 방화벽 등 여러 보호장치로 인해 Peer 간의 연결이 쉽지 않다. 따라서 서버에서 공유하는 Peer의 IP를 얻기 위해서 STUN/TURN 서버가 필요하다.

STUN(Session Traversal Utilities for NAT) 서버

STUN 서버는 UDP 프로토콜 기반으로 동작하며, 클라이언트의 공인 네트워크 주소(IP:Port)를 알려준다. 클라이언트는 인터넷을 통해 클라이언트의 공인 네트워크 주소와 라우터 NAT 뒤에 있는 클라이언트가 접근 가능한지에 대한 답변을 STUN 서버에 요청한다.

NAT(Network Address Translation)

네트워크 주소 변환(NAT, Network Address Translation)은 단말의 비공개 네트워크 주소(Private IP Address)를 공개 네트워크 주소(Public IP Address)로 변환시키는 것을 의미한다. 이 변환은 라우터가 담당하는데 외부에서 접근하는 공개 네트워크 주소와 포트 번호를 확인하여 현재 네트워크 내의 비공개 네트워크 주소를 적절히 맵핑시켜준다.

하지만 몇몇 라우터들은 Symmetric NAT이라 불리는 제한을 위한 NAT를 사용하는데, Peer들이 이전에 연결된 적이 있는 연결만을 허용하기 때문에 STUN 서버에 의해 공개 네트워크 주소를 발견한다고 해도 연결이 반드시 성공하는 것은 아니다. 이를 해결하기 위해 TURN 서버가 필요하다.

TURN(Traversal Using Relays around NAT) 서버

TURN 서버는 Symmetric NAT 제약조건을 우회하기 위해 만들어졌다. TURN 서버와 연결을 맺고 이 서버에서 모든 교환 과정을 중계한다. 모든 Peer는 TURN 서버로 패킷을 보내고, 서버가 이를 중계하기 때문에 오버헤드가 발생한다.

ICE(Interactive Connectivity Establishment)

ICE는 브라우저가 Peer를 통한 연결이 가능하도록 하게 해주는 프레임 워크이다. ICE는 STUN/TURN 서버를 통해 얻은 네트워크 주소를 통해 Peer간 연결을 수행한다.

profile
후회는 후에 하는 것이다.

0개의 댓글