💡 개요
SSAFY할 때 한번 써봤던 것..
하지만 너무 오래돼서 기억이 안 나기 때문에 한번 정리해 보자.
🛠️ WebRTC
WebRTC란 웹 브라우저 내부에서 따로 플러그인을 설치하지 않고 오디오, 비디오, 일반 채팅을 실시간으로 주고받을 수 있게 해주는 기술이다.
그리고 오디오나 비디오같은 데이터는 P2P(Peer-To-Peer) 방식으로 전송된다.
✨ P2P
P2P란 한 피어와 다른 피어가 데이터를 주고받는 통신 방식을 의미하는데, 여기서 피어는 WebRTC 통신에 참여하는 다른 사용자(브라우저)를 의미한다.
그렇기 때문에 두 사용자 사이에 중간 서버를 거치지 않고, 직접 데이터를 주고받기 때문에 속도 측면에서 더 유리하다.
하지만 처음 연결을 성립할 땐 연결 과정(시그널링), NAT 우회, 방화벽 통과와 같은 작업은 모두 서버의 도움을 받아야 한다.
하지만 SFU나 MCU를 사용하는 다자간 통신 구조는 완전한 P2P는 아니고, 중간 서버가 관여하기도 한다.
그런데 이 P2P 연결을 성립하기 위해 ICE, STUN, TURN, SDP와 같은 많은 작업이 필요하다.
⚙️ ICE (Interactive Connectivity Establishment)
두 피어 간에 가장 잘 연결되는 경로를 찾는 절차를 의미한다.
핵심 역할로는 STUN과 TURN 서버를 이용해 다양한 연결 후보(IP/Port)를 찾는다.
그리고 찾은 연결 후보들 중에서 테스트를 통해 가장 안정적이고 빠른 IP 정보를 정한다.
⚙️ STUN (Session Traversal Utilities for NAT)
STUN은 NAT 장비같은 공유기 뒤에 있는 클라이언트가 자신의 Public IP와 포트번호를 알 수 있게 해주는 서버이다.
보통 많은 사용자들은 공유기와 같은 장비 뒤에서 Private IP를 사용해 인터넷을 사용하기 때문에 자신의 Public IP를 알지 못한다.
그렇기 때문에 STUN 서버를 사용해 자신의 Public IP를 조회하는 것이다.
⚙️ TURN (Traversal Using Relays around NAT)
TURN이 사용될 때는 STUN을 사용해 피어 간 연결이 실패했을 때 이다.
TURN은 피어 중간에 끼어들어 데이터를 중계해 주는 서버를 의미한다.
P2P 연결 실패 시, 대체 중계 서버 역할을 담당한다.
⚙️ SDP (Session Description Protocol)
WebRTC에서 피어 간 영상이나 오디오를 주고 받을 때 사용할 미디어 정보를 주고받는 프로토콜이다.
👨🏻💻 참고
What is WebRTC and How to Setup STUN/TURN Server for WebRTC Communication?
'개발 일기' 카테고리의 다른 글
[개발 일기] 2025.05.08 - 레코드 수준의 잠금(row-level locking) (0) | 2025.05.08 |
---|---|
[개발 일기] 2025.05.07 - WebRTC 구현 방식 (0) | 2025.05.07 |
[개발 일기] 2025.05.05 - 비밀번호 암호화 (Feat : BCryptPasswordEncoder) (1) | 2025.05.05 |
[개발 일기] 2025.05.04 - JWT 페이로드 종류 (0) | 2025.05.04 |
[개발 일기] 2025.05.03 - JWT 말고 인증에 사용할 만한 기술 (0) | 2025.05.03 |