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 서버의 조건

  1. 공인 IP 필요
  2. TCP/UDP 포트 열려있어야함
  3. coutun 이라는 오픈소스 TURN 서버가 자주 사용됨.

ICE 후보등록

  1. 브라우저가 후보들을 수집 (아래 후보 1,2,3)
  2. 수집된 후보들을 상대방과 교환(SDP 에 포함됨)
  3. 각 후보 쌍을 서로 테스트 (1->1, 1->2,,,,,3->3)
  4. 연결이 성립되는 가장 좋은 경로를 선택 (속도, 지연, 성공여부에 따라)

후보등록 순서

  1. 사설 IP : Local Network
  2. STRN 서버 : Public Network - STUN 서버를 통해 공인 IP 로 통신
  3. TURN 서버 - 직접 통신이 안될 경우 대체 서버인 TURN 서버를 통해 중계
    1. NAT (network address translate 사설->공인 주소변환) 뒤에 있거나 방화벽안에 있을 경우
    2. 직접 통신을 못하는 경우가 발생한다.
    3. 이때 TURN(중계서버)를 두어 A, B 클라이언트 모드 TURN 서버로 연결하게 해서 통신
    4. 클라이언트에서 inbound 가 막힐 경우에도 outbound 가 가능하다면, turn 서버로 연결해 연결을 만들어 놓고 그 열어놓은 경로로 통신을 할 수 있다
    5. 가장 느리지만 안정적

chrome://webrtc-internals 입력하고 webRTC 연결하면 자동을 로그 기록됨

참고
https://webrtc.org/?hl=ko

반응형