1069. WebRTC NAT 횡단 (STUN/TURN/ICE 통합) - 브라우저 P2P 실시간 화상 통신 홀 펀칭 라우터 사설 IP 장벽 돌파 아키텍처
핵심 인사이트: 줌(Zoom)이나 구글 미트(Meet) 같은 화상 채팅을 크롬 브라우저에서 별도 프로그램 설치 없이 튼다(WebRTC). 가장 완벽한 화상 통화는 내 노트북 렌즈가 찍은 영상을 미국에 있는 친구 노트북으로 '중간 서버 없이 다이렉트(P2P)'로 꽂아버리는 거다(서버비 절감, 지연 제로). 그런데 끔찍한 방해물이 있다. 우리 집 공유기(NAT)다! 공유기는 내 노트북에 가짜 주소(사설 IP 192.168.x.x)를 줬기 때문에, 미국 친구가 쏜 영상 패킷이 우리 집 공유기에 대가리를 박고 막혀버린다. "야! 사설 IP에 갇힌 내 노트북과 미국 친구 노트북이 서로 얼굴(공인 IP)을 알아내게 STUN 거울을 비춰주고, 도저히 공유기 벽을 못 뚫겠으면 TURN 서버로 우회시켜서 무조건 길(ICE)을 뚫어라!" P2P 통신의 가장 큰 벽인 공유기를 드릴로 박살 내는 흑마법, NAT 횡단이다.
Ⅰ. WebRTC (Web Real-Time Communication)의 개념 🌟
- 개념: 플래시나 줌 클라이언트 프로그램 설치 1도 없이, 순수 웹 브라우저(크롬, 엣지) 간에 음성, 비디오, 데이터를 중간 미디어 서버를 거치지 않고 P2P(Peer-to-Peer)로 1:1 직접 연결하여 초저지연으로 쏘는 구글 오픈소스 통신 표준입니다. (505번 연계)
- 딜레마: P2P로 직접 쏘려면 상대방의 '진짜 집 주소(공인 IP)'를 알아야 하는데, 전 세계 PC 99%는 911번에서 배운 공유기(NAT/방화벽) 뒤에 숨은 가짜 사설 IP(
192.168.0.2)를 쓰기 때문에 길을 절대 찾을 수 없습니다.
Ⅱ. 찰떡 콤비의 탄생: NAT 횡단 (NAT Traversal) 3대 흑마법 🌟 핵심 기출 🌟
막혀버린 공유기에 구멍(홀 펀칭, Hole Punching)을 뚫어 P2P 직통 길을 여는 무기들입니다.
1. STUN (Session Traversal Utilities for NAT) - "거울의 방"
가장 이상적이고, 가장 먼저 시도하는 돈 안 드는 마법입니다.
- 내 폰(가짜 IP)이 외부 인터넷에 있는 STUN 서버(거울)를 향해 "나 누구게?" 하고 패킷을 툭 던집니다.
- 공유기(NAT)가 이 패킷을 인터넷 밖으로 내보낼 때 겉껍데기를 공유기 자신의 '진짜 공인 IP와 포트 번호'로 치환해서 내보냅니다.
- STUN 서버는 패킷에 찍힌 공유기 IP를 보고, 내 폰에게 대답을 쏴줍니다. "야! 네 겉모습(진짜 공인 IP 주소)은
203.10.x.x야!" - 내 폰은 드디어 내 진짜 주소(거울에 비친 모습)를 알게 되었고, 이 주소를 미국 친구에게 알려줘서 다이렉트 1:1 (P2P) 직통 고속도로를 완벽하게 개통시킵니다.
2. TURN (Traversal Using Relays around NAT) - "비싼 우회 중계소"
회사 방화벽(Symmetric NAT)이 너무 악질이라 STUN 거울 작전이 안 통할 때 쓰는 최후의 수단입니다.
- 거울 작전 실패 시, P2P 직통 터널 뚫기를 눈물을 머금고 포기합니다.
- 대신 중간 허공에 떠 있는 TURN 서버(중계 서버)를 끌어들여 패킷을 우회(Relay)시킵니다. 내 폰 ➜ TURN 서버 ➜ 미국 친구 폰으로, 옛날 방식처럼 서버를 징검다리로 거쳐 비디오 패킷을 쏴줍니다.
- 이 방식은 통신은 무조건 성공하지만, TURN 서버의 트래픽(서버비) 폭발과 핑 딜레이 증가라는 피눈물 나는 코스트를 대가로 치릅니다.
3. ICE (Interactive Connectivity Establishment) - "최적의 길찾기 두뇌"
STUN과 TURN을 조종하는 똑똑한 사령관입니다.
- 크롬 브라우저의 ICE 엔진은 무턱대고 쏘지 않습니다.
- 동작: "자, 일단 사내망 직통(LAN)으로 쏴보고 ➜ 안 되면 STUN(거울)으로 홀 펀칭 뚫어보고 ➜ 젠장 방화벽 너무 쎄네? 마지막으로 비싼 TURN(중계 서버)으로 우회 돌려라!"
- 이처럼 가장 빠르고 돈 안 드는 다이렉트 통신(STUN)부터, 최후의 릴레이 서버(TURN) 우회까지 수십 개의 후보 경로(Candidate)를 싹 다 뒤져서 단 1초 만에 최적의 길을 찾아내 연결을 성사시키는 종합 패키지 프레임워크입니다.
Ⅲ. WebRTC 생태계의 완성 (시그널링)
- P2P 영상 터널을 뚫기(ICE) 직전에, A와 B는 "나 화상 회의 걸게! 비디오 코덱(H.264) 이걸로 쓰자!"라고 최초 인사를 나눠야 합니다. 이를 **시그널링(Signaling)**이라 하며, 주로 1066번 웹소켓이나 SIP 프로토콜이 이 중매쟁이 역할을 맡아준 뒤 길을 열어줍니다.
📢 섹션 요약 비유: 인터넷 세상의 99% 사용자들은 공유기라는 '두꺼운 콘크리트 벽(NAT 방화벽)' 뒤의 지하 벙커(사설 IP)에 숨어 삽니다. 그래서 A와 B가 1:1로 비밀 직통 전화(WebRTC P2P 화상)를 하려면 콘크리트를 뚫어야 합니다. **STUN(스턴)**은 벙커 밖에 있는 **'잠망경 거울'**입니다. A가 벙커 구멍 밖으로 잠망경을 쓱 내밀어 거울에 비친 자기 벙커의 진짜 외벽 주소(공인 IP)를 알아낸 뒤, B에게 알려주어 벙커 밖에서 다이렉트로 직통 선을 연결하는 싸고 완벽한 꼼수입니다. 하지만 군부대급 벙커(악질 NAT)는 잠망경 꼼수마저 튕겨냅니다. 이때 구원 투수 TURN(턴) 서버가 등장합니다. 직통 선 연결을 포기하고, 하늘에 떠 있는 **'거대한 중계 위성(우회 서버)'**을 띄워 양쪽에서 벙커 밖으로 우주를 향해 전파를 쏴서 연결해 버립니다(비싸지만 100% 성공). 이 STUN과 TURN 중 어떤 길로 뚫을지 1초 만에 수십 번 찔러보며 가성비 최고의 통로를 확정 짓는 지능형 내비게이션 뇌가 바로 ICE 프레임워크이며, 크롬 브라우저에서 줌(Zoom) 화상 회의를 1초 만에 기적처럼 열리게 만드는 P2P 철벽 관통 아키텍처입니다.