Study/WEB
내가 이해한 webRTC
나아가는
2025. 11. 14. 10:58
반응형
keyword : ICE 후보 등록, STUN/TURN 서버
용어정리
- NAT: network Address Translation : 주소변환 (private ip -> public ip)
- Fall back : 대안
- ICE : interaction Connectivity Establishment
- 기본적으로 P2P 연결을 통해 초저지연 양방향 데이터 전송을 지원한다.
- P2P 연결을 위해서는 각 클라이언트의 IP, PORT 값이 필요하다.
- 이때 ICE 서버가 필요함
ICE 서버
1. STUN 서버
- 각 클라이언트가 공인 IP,port 를 가지고 있을 때, 이 클라이언트의 주소정보를 어 상대한테 알려주려고 사용
- 자체 서버를 운영하던가 구글에서 제공하는 STUN 서버 이용 가능하다.
2. TURN 서버
- 클라이언트가 NAT 안에 있을 경우 또는 방화벽에 막힐 때 (대부분의 경우에 해당) 외부에서 직접 연결 불가능하다.
- 중계서버. 릴레이 서버의 역할을 하게 됨. 클라이언트가 접근할 수 있어야함.
- -> 따라서 공인 IP를 가지고 있어야함
- 엄밀히 말해 P2P는 아니지만?? webRTC 프로토콜에서는 fall back(대안) 경로로 정식지원
A --O-> TURN <--O-- B
client <--X-- server --X--> client궁금증: 클라이언트에 접근할 수 없는데 TURN 은 어떻게 통신이 가능한지??
- 내부망 -> 외부망으로 outbound 는 NAT에서 대부분 허용됨
- URN 서버는 클라이언트에 접근 할 수 없어도 (inboud X) 클라이언트는 TURN 서버에 접근할 수 있으니(outbound O) 클라이언트에서 TURN 서버에 연결을 수립
- 내부에서 열린 NAT 세션을 통해 통신할 수 있음. 따라서 TURN 서버는 A와 B를 직접 접근할 필요가 없음
GTP의 비유 (내부망 장치에서 TURN 서버에 전화를 건다고 생각)
- 내부 -> 외부로 거는건 NAT 가 허용. 반대는 불가능
- 하지만 전화가 연결되면 대화가 가능
TURN 서버의 조건
- 공인 IP 필요
- TCP/UDP 포트 열려있어야함
- coutun 이라는 오픈소스 TURN 서버가 자주 사용됨.
ICE 후보등록
- 브라우저가 후보들을 수집 (아래 후보 1,2,3)
- 수집된 후보들을 상대방과 교환(SDP 에 포함됨)
- 각 후보 쌍을 서로 테스트 (1->1, 1->2,,,,,3->3)
- 연결이 성립되는 가장 좋은 경로를 선택 (속도, 지연, 성공여부에 따라)
후보등록 순서
- 사설 IP : Local Network
- STRN 서버 : Public Network - STUN 서버를 통해 공인 IP 로 통신
- TURN 서버 - 직접 통신이 안될 경우 대체 서버인 TURN 서버를 통해 중계
- NAT (network address translate 사설->공인 주소변환) 뒤에 있거나 방화벽안에 있을 경우
- 직접 통신을 못하는 경우가 발생한다.
- 이때 TURN(중계서버)를 두어 A, B 클라이언트 모드 TURN 서버로 연결하게 해서 통신
- 클라이언트에서 inbound 가 막힐 경우에도 outbound 가 가능하다면, turn 서버로 연결해 연결을 만들어 놓고 그 열어놓은 경로로 통신을 할 수 있다
- 가장 느리지만 안정적
chrome://webrtc-internals 입력하고 webRTC 연결하면 자동을 로그 기록됨
반응형