WebRTC 개념 정리 : ICE, NAT, STUN 서버, TURN 서버

괄괄이·2024년 4월 28일

WebRTC with Kotlin

목록 보기
3/4

WebRTC : P2P

peer끼리 직접 연결하여 데이터를 송수신해 서버에 부하가 적다. 하지만 연결이 많아지면 클라이언트에 과부하가 간다.

  • peer? 통신을 수행하는 두 클라이언트 단말

P2P 방식으로 구현하려면 ...

signalling : 두 peer 간 통신 방법을 찾는 과정

  • 이 과정을 관리하기 위해 signalling server가 필요하다.

signalling server

ICE(Interactive Connectivity Establishment)

브라우저가 peer를 통해 통신할 수 있는 최적의 경로를 찾게 돕는 프레임워크.

ICE는 클라이언트가 모든 통신 가능한 주소를 식별하는 것을 의미하며 3가지의 주소를 확인한다.
1. Relayed Address : TURN 서버가 패킷 릴레이를 위해 할당하는 주소
2. Server Reflexive Address : NAT 가 매핑한 클라이언트의 공인망(Public IP, Port)
3. Local Address : 클라이언트의 사설주소(Private IP, Port)

Candidate: IP + 포트의 조합으로 표시된 주소, Candidate를 통해 연결을 지원

모든 단말은 다양한 환경(사무실 내부망, 학교 내부망, 집의 네트워크 등)을 가지기에 peer A에서 peer B까지 단순하게 연결되지 않는다.

  • 방화벽이 존재하면 방화벽 통과 필요
  • 단말의 Public IP가 없으면 유일한 주소값 할당 필요
  • 라우터가 peer간 직접 연결을 허용하지 않으면 데이터 릴레이 필요

peer간 연결이 작동하도록 STUN과 TURN 서버를 상황에 따라 둘 다 혹은 하나만 사용한다.

출처: https://subscription.packtpub.com/book/web-development/9781783983100/4/ch04lvl1sec33/using-stun-and-turn
  • STUN(Session Traversal Utilities for NAT) 서버
    - 클라이언트가 자신의 Public IP 주소를 알게 해주며, Public IP를 통해 다른 peer와 연결을 시도한다.
    • 하지만 STUN만으로 모든 네트워크 문제를 해결할 수 없다.
    • 예: NAT 환경에서 두 클라이언트가 동일 네트워크 내에 위치한 경우
      • NAT(Network Address Transilation)?
        - 단말에 Private IP를 1대 1로 대응시켜 Public IP 주소로 변환해 할당
        - 각각의 단말이 유일한 공개 IP 없이 인터넷 상 검색이 가능해짐
        - 몇몇 라우터는 Symmetric NAT(제한 NAT)을 사용해 같은 Private IP와 포트 번호 조합에서 발신된 요청에 대해 고유한 Public IP와 포트 번호를 할당한다. 요청을 보낼 때 각각 다른 Public IP를 사용하게 하여 STUN 서버만으로는 연결 설정이 어렵다.

출처: https://subscription.packtpub.com/book/web-development/9781783983100/4/ch04lvl1sec33/using-stun-and-turn
  • TURN(Traversal Using Relays around NAT) 서버
    - Symmetric NAT 제한을 우회한다.
    • TURN 서버와 연결한 후 모든 peer들에게 서버에 모든 패킷을 보내고 다시 TURN 서버에 전달한다.
    • 오버헤드(간접적으로 발생하는 추가 자원)가 발생하므로 대안이 없는 경우에만 사용한다.

STUN 서버와 TURN 서버의 차이?

  • STUN 서버는 라우팅 테이블을 통해 Private와 Public IP를 연결한다.
  • TURN 서버는 STUN 서버의 개념을 포함하는 Super Set으로 단순히 연결하는데 그치지 않고, 모든 데이터를 TURN 서버를 우회하여(Relay 서버) 원하는 peer에게 전달한다.

(참고)
봄나라인님: NAT, ICE, STUN, TURN 이란?
죠현졍님: [WebRTC] P2P
millo님: WebRTC 이론 정리하기
AndoneKwon님:WebRTC란? (STUN과 TURN 서버의 이해) (2)
alnova2님: [WebRTC] STUN 과 TURN 에 대하여 #1 - 개요
출처: https://alnova2.tistory.com/1110 [몽상가:티스토리]

0개의 댓글