wonsama avatar

[ WebRTC ] 1일차 - 기초지식 주입중 ...

wonsama

Published: 27 Jul 2018 › Updated: 27 Jul 2018[ WebRTC ] 1일차 - 기초지식 주입중 ...

[ WebRTC ] 1일차 - 기초지식 주입중 ...

최대한 알기 쉽게 요약 !

  • WebRTC를 통해 화상통화 + 채팅 + 게임 + 파일전송등을 손쉽게 할 수 있음.
  • 대표적인 예 카톡영상통신, 행아웃 등 생각하면 됨
  • P2P(개인간 통신)이 기본이지만 쫌 머리쓰면 다자 통신도 가능(서버 추가구성 필요)

1. WebRTC 미리보기

1.1 기본 체계

WebRTC 를 통해 다른 웹 브라우저에 P2P(개인간) 연결을 손쉽고 빠르게 할 수 있습니다. 일반적으로 통신을 배우려 한다면 NAT, 데이터손실, 연결 끊기 등 다양한 문제를 처리해야 되는데 WebRTC를 사용하면 이런 기능을 브라우져에서 기본적으로 제공하게 됩니다.

WebRTC API는 미디어 캡춰, 음성 및 영상의 인/디코딩 처리, 전송/세션 레이어관리를 지원합니다.

  • 미디어 캡춰 : 사용자의 카메라와 마이크 권한 획득 후 스트림 처리
  • 음성 및 영상의 인/디코딩 처리 : 영상을 프레임단위로, 음성을 작은 단위로 나눠 압축/복원 하는 코덱 지원(H.264, iSAC, Ipus, VP8 등)
  • 전송 레이어 : 패킷 교환, 정렬, 손실 및 다른 유저에게 접속하는 것을 WebRTC API를 통해 손쉽게 관리
  • 세션 관리 : 접속 관리, 연결, 조직화 등을 관리(signaling 이라 부름)하며 RTCDataChannel API를 통해 처리

1.2 WebRTC의 활용

  • 실시간 마켓팅
  • 실시간 광고
  • 백오피스 통신(CRM, ERP, SCM, FFM)
  • 채용 괸리
  • 소셜 네트워킹
  • 데이팅 서비스
  • 온라인 의료 상담
  • 금융 서비스
  • 감시
  • 멀티 게임
  • 실시간 방송
  • 이러닝

2. WebRTC 아키텍처

webrtc_architecture.png

복잡함

triangle_model.png

여러 구성이 있긴 하지만 (개인 - 서버 - 개인 형태로 연결) 이구성을 통해 개발해보기로 함. (중간에 ICE + STUN / TURN은 일단 배제)

rtc_peer_connection.png

접속 => 연결관리(세션관리, 응답, 스트리밍관리, ICE 후보관리) => 이벤트 처리

2.1 RTCPeerConnection

  • WebRTC API의 진입점
  • 개인간 연결 초기화할 때 유용

2.2 MediaStream

  • getUserMedia API
  • 음성 및 영상 스트림에 접속권한 부여
  • 사용자 기기(카메라, 마이크) 선택 정보 관리
  • 스트림(영상,음성) 전송 중 보안레벨 지원

2.3 RTCDataChannel

  • 개인간의 미디어 스트림 전송 채널 관리

2.4 요약

  • RTCPeerConnection : 접속 관리
  • MediaStream : 사용자 기기관리 및 보안
  • RTCDataChannel : 데이터 처리, 채널링

3. 환경구성

3.1 정적 웹서버 설치

  • nodejs 설치
  • node-static 설치 sudo npm install -g node-static
  • 실행 static 명령어가 실행된 기준 해당 디렉토리가 static 하게 웹호스팅 된다

3.2 WebRTC 프로토콜

실시간 데이터 통신은 두 사용자간 빠른 속도로 대화하는 것이다. 고품질 유지를 위해서는 초당 약 30~60회 음성/영상 데이터가 교환이 필요하다. 그래서 중요한건 최신 데이터(프레임)를 상대에게 보내는 것이 중요

3.3 라우팅 기술

successful_peer_con.png

  • STUN (Session Traversal Utilities for NAT) : 세션 순회 유틸

STUN 서버를 통해 사용자 식별(IP정보) 후 사용자 간의 연결을 도움.
실운영(production) 환경에서는 자체 STUN 및 TURN을 배포해야합니다.

  • TURN (Traversal Using Relays around NAT) : 릴레이를 사용한 순회

STUN 을 허용하지 않는 네트워크에서는 TURN을 활용하여 사용자 식별
하지만, 왠만한 곳에서 TURN 없이 STUN 으로만 사용자 식별이 가능함.

  • ICE (Interactive Connectivity Establishment) : 대화 형 연결 설정

ICE는 STUN 서버를 사용하여(연결 실패 시 TURN 사용) 연결된 사용자정보를 클아이언트 응용 프로그램에 알린 후 연결을 설정합니다.

3.4 데이터 전송

sctp_transport.png

WebRTC에서는 SCTP 프로토콜을 통해 DataChannel 개체로 감싸서 데이터를 보내는 API를 제공합니다. (SCTP 프로토콜 : UDP의 높은 성능과 신뢰성이 포함된 프로토콜)

Leave [ WebRTC ] 1일차 - 기초지식 주입중 ... to:

Written by

개발자 - flutter, nodejs, java, 금융권

Read more #kr posts


Best Posts From wonsama

We have not curated any of wonsama's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From wonsama