[CS-Challenge : WebRTC]

SELOG·2024년 1월 29일
0

CS-CHALLENGE

목록 보기
1/5

:) OpenVidu로 WebRTC 기술을 사용하고 커스텀 했었는데 개념정리 해볼게욥

1. WebRTC란

WebRTC (Web Real-Time Communication)

  • WebRTC (Web Real-Time Communication)는 웹 브라우저 간에 실시간 음성, 비디오, 데이터를 교환할 수 있게 하는 기술 및 표준

  • 플러그인이나 외부 소프트웨어 없이 웹 브라우저를 통해 직접 통신할 수 있음


2. 주요 특징

P2P (Peer to Peer )

  • 직접 연결: 사용자들의 브라우저가 서로 직접 연결되어 데이터를 주고받는다.
  • 서버 부담 감소: 중앙 서버를 거치지 않기 때문에, 서버의 부담이 줄어들고, 대역폭 사용이 최적화된다. 이는 특히 대규모 데이터 전송이나 실시간 통신에 유리하다!
  • 실시간 통신: 데이터가 중간 서버를 거치지 않기 때문에, 지연 시간이 줄어들어 실시간 통신이 가능하다.
  • 보안과 프라이버시: 모든 P2P 통신은 기본적으로 암호화되어, 보안과 프라이버시가 강화된다.

추가 특징

  • 접근성과 호환성: 대부분의 현대 웹 브라우저들이 WebRTC를 지원하며, 추가적인 소프트웨어나 플러그인이 필요 없어 사용자 접근성이 높다.
  • 다양한 미디어 형식 지원: 오디오, 비디오, 텍스트 등 다양한 형태의 미디어 및 데이터를 지원한다.
  • 저 지연성: 피어 간 직접 연결을 통해 데이터 전송 시간을 최소화하여 지연 시간이 적다.
  • 스케일러빌리티: 다수의 피어와의 연결을 관리할 수 있어, 대규모 통신 네트워크 구축에 적합하다.
  • 개방형 표준: WebRTC는 개방형 표준을 따르고 있어, 이를 기반으로 한 애플리케이션 개발과 통합이 용이하다.
  • 네트워크 적응성: 네트워크 상태의 변화에 따라 동적으로 품질을 조절하여 최적의 통신 품질을 유지한다.

3. 주요 개념

WebRTC의 기본 구성 요소

  • APIs (Application Programming Interfaces): 개발자들이 WebRTC 기능을 손쉽게 웹 애플리케이션에 통합할 수 있도록 다양한 API를 제공한다.
  • RTCDataChannel: 데이터를 P2P 방식으로 직접 교환할 수 있게 해주는 기능. 이를 통해 파일 공유, 채팅 등의 기능을 구현할 수 있다.
  • RTCPeerConnection: 오디오와 비디오 통신을 위한 연결을 설정하고 관리하는 인터페이스.
  • MediaStream: 사용자의 미디어 스트림(예: 카메라, 마이크)에 접근할 수 있게 해주며, 이를 다른 피어와 공유하는 데 사용된다.

WebRTC의 지원 기술

ICE (Interactive Connectivity Establishment):

  • 목적: 두 컴퓨터가 가능한 한 직접 서로 통신할 수 있는 최적의 네트워크 경로를 찾기 위해 사용되는 기술.
  • 작동 방식: ICE 프로세스는 먼저 STUN을 사용하여 직접 연결을 시도. 만약 STUN을 통한 연결이 불가능할 경우, TURN 서버를 통한 연결로 전환하여 통신을 구축한다.

STUN (Session Traversal Utilities for NAT):

  • 목적: STUN 서버는 NAT(Network Address Translation) 뒤에 있는 장치의 공용 IP 주소를 찾는 데 사용된다.
  • 작동 방식: 클라이언트는 STUN 서버에 요청을 보내고, STUN 서버는 클라이언트의 공용 IP 주소와 포트를 응답으로 보낸다.

TURN (Traversal Using Relays around NAT):

  • 목적: STUN으로 연결이 불가능/끊겼을 때 사용. TURN 서버는 중계 서버로서의 역할을 하여, 피어 간 직접 연결이 불가능한 경우에도 통신을 가능하게 한다.
  • 작동 방식: TURN 서버는 모든 데이터를 자신을 통해 중계하므로, NAT 또는 방화벽에 의해 차단되는 문제를 해결할 수 있다.

NAT (Network Address Translation)

  • 목적: NAT는 많은 장치들이 공용 IP 주소를 공유할 수 있게 해주는 네트워크 기술이다. 주로 가정이나 기업의 라우터에 사용되며, 내부 네트워크(사설 IP 주소)와 외부 인터넷(공용 IP 주소) 간의 통신을 가능하게 한다.

  • 작동 방식:

    • IP 주소 변환: NAT는 내부 네트워크에서 외부 네트워크로 나가는 패킷의 소스 IP 주소를 라우터의 공용 IP 주소로 변경한다. 반대로, 외부에서 들어오는 패킷의 대상 IP 주소를 내부 네트워크의 해당 장치의 사설 IP 주소로 변경한다.
    • 포트 매핑: NAT는 각 연결에 대해 고유한 포트 번호를 할당하여, 여러 장치가 동일한 공용 IP 주소를 사용하면서도 서로 다른 연결을 유지할 수 있도록 한다.
  • WebRTC와의 관계:

    • 연결 문제: NAT의 존재는 P2P 연결을 복잡하게 만든다. 특히, 두 피어가 모두 NAT 뒤에 있을 때, 각자의 실제 공용 IP 주소와 포트를 알아내고 이를 서로에게 전달해야 한다.
    • 해결책: WebRTC는 STUN과 TURN 서버를 사용한다. STUN 서버는 피어의 공용 IP 주소와 포트를 찾는 데 도움을 주고, TURN 서버는 NAT 뒤에 있는 피어들 간의 연결을 중계하는 역할을 한다.

4. 통신 과정

WebRTC의 통신 프로세스

  1. 시그널링 (Signaling): 이 단계에서는 두 피어(통신을 원하는 두 장치)가 서로 연결을 시작하고, 통신에 필요한 정보를 교환한다.

    이 정보에는 미디어 형식, 암호화 방식, 각 피어의 네트워크 정보 등이 포함된다. WebRTC는 시그널링 프로토콜을 직접 제공하지 않기 때문에, WebSocket, XMPP, SIP 등의 외부 시그널링 메커니즘을 사용해야 한다.

  2. NAT 트래버설 (NAT Traversal): 대부분의 장치들은 NAT(Network Address Translation) 뒤에 숨어 있기 때문에, 다른 피어와 직접 연결을 위해서는 NAT 트래버설이 필요하다.

    이를 위해 WebRTC는 STUN(Session Traversal Utilities for NAT) 서버를 사용하여 피어의 공용 IP 주소를 찾아내고, 필요한 경우 TURN(Traversal Using Relays around NAT) 서버를 사용하여 피어 간의 연결을 중계한다.

  3. 미디어 캡처 (Media Capture): 이 단계에서는 피어의 카메라, 마이크 등에서 오디오 및 비디오 스트림을 캡처한다. 이는 getUserMedia() API를 통해 수행된다.

  4. P2P 연결 설정 (P2P Connection Setup): RTCDataChannel과 RTCPeerConnection을 사용하여 피어 간의 직접적인 연결을 설정한다. 이 연결을 통해 데이터와 미디어 스트림이 실시간으로 전송됨.

  5. 데이터 교환 (Data Exchange): 마지막 단계로, 암호화된 연결을 통해 실시간으로 데이터 및 미디어 스트림이 교환된다. 이를 통해 높은 수준의 보안과 신뢰성 있는 통신이 이루어진다.


5. OpenVidu

OpenVidu란

  • OpenVidu는 WebRTC 기술을 기반으로 하는 고성능, 확장 가능한 비디오 컨퍼런스 솔루션.
  • OpenVidu를 사용하여 다양한 플랫폼에서 실시간 비디오 및 오디오 통신 기능을 손쉽게 구현할 수 있다.

OpenVidu 통신 과정:

  • 세션 및 토큰 생성: 서버 측에서는 OpenVidu 서버를 통해 실시간 커뮤니케이션 세션을 생성하고, 이 세션을 사용할 수 있는 토큰을 생성한다.
  • 클라이언트 연결: 클라이언트(웹 또는 모바일 애플리케이션)는 생성된 토큰을 사용하여 OpenVidu 서버에 연결한다.
  • 미디어 스트림 공유: 사용자는 자신의 비디오 및 오디오 스트림을 다른 참가자와 공유할 수 있으며, OpenVidu는 이 스트림을 다른 참가자들에게 전달한다.
  • 실시간 통신: 참가자 간의 실시간 비디오 및 오디오 통신이 가능해진다.

내가 프로젝트에서 OpenVidu를 사용한 이유

  • 커스텀 개발 : OpenVidu의 유연성을 활용하여 맞춤형 UX/UI 개발 및 비디오 컨퍼런스 애플리케이션을 개발할 수 있다.
  • 확장성 및 안정성 : OpenVidu는 다양한 크기의 컨퍼런스와 높은 동시 사용자 수를 지원하여, 여러 사용자가 동시에 사용해야 했었다.
profile
금융 IT 전문가가 될거야

0개의 댓글