WebSocket과 webRTC

Ahyeon, Jung·2023년 9월 18일
post-thumbnail

요약

웹 애플리케이션 및 네트워크 통신을 위한 프로토콜 및 기술

WebSocket: 클라이언트가 서버에게 요청을 보내면 모든 다른 소켓에게 전송하는 방식 => 서버의 부하 및 비용 관리가 필요함

webRTC: 서버를 빼고 클라이언트가 서로 통신(p2p), ICE를 활용하여 case에 따른 서버 사용


WebSocket

양방향 통신을 지원하는 프로토콜
클라이언트와 서버 간 실시간 데이터를 교환하는데 사용

  • TCP 기반 프로토콜, 연결을 유지한 채 데이터를 주고받을 수 있음
  • HTTP 기반의 웹 통신과 달리, 계속적인 연결을 유지하므로 더 낮은 지연 시간을 제공하며 더 효율적으로 데이터를 전송 가능

WebSocket은 서버를 중심으로 request와 response로 정보전달이 이루어져 서버에서 사용자 간 통신의 부하를 받음

=> 메모리문제, 전달속도 비용 문제

socket.io

WebSocket 기반 라이브러리
WebSocket의 기능을 향상시키고 실시간 양방향 통신을 쉽게 구현할 수 있도록 도와줌

  • 연결이 끊기면 자동재접속을 시도
  • 사용 불가능한 환경에서도 폴백 메커니즘을 통해 실시간 통신을 지원
  • 웹소켓 접속자마다 자동으로 id를 부여
  • 모든 웹소켓 유저에게 전체 메시지를 전송할 수 있음
  • 웹소켓 룸을 개설

WebRTC(Web Real Time Communication)

웹 브라우저 간에 플로그인없이 통신 가능한 실시간 커뮤니티 서비스
브라우저 간의 실시간 음성, 비디오 및 데이터 통신을 위한 오픈 소스 프로젝트
음성, 영상, p2p(peer to peer) 파일공유 기능을 이용할 수 있음

  • 실시간 멀티 미디어 통신 제공
  • 플러그인 없이 브라우저에서 바로 사용 가능
  • P2P 통신을 지원하여 중간 서버 없이 데이터를 직접 교환 가능

Signaling

Signaling Server를 통해서 자신의 IP 주소를 상대방과 교환

Stun

public ip 공유기에는 여러개의 private IP 주소가 내부적으로 라우팅되어 있음

이 private IP를 할당받은 디바이스의 경우 자신의 public IP 주소를 모름

따라서 Stun Server를 통해 자신의 public IP 주소를 알아냄

Turn

connection 연결이 제대로 되지 않았을때를 대비한 서버


SDP

Session의 Description을 담당하는 프로토콜

생성할 세션의 타입 정보를 전송

offer: 통신 종류, 인코딩 방식, ip주소값 등의 정보를 가지고 통신 요청

answer: offer를 제공받은 후 응답

ICE

peer connection을 담당하는 framework(아래 세 가지의 통신을 지원)

동일한 라우터를 공유하는 경우

서로 다른 라우터를 가지고 있는 경우(stun 서버를 통해 public IP로 통신)

P2P 통신이 불가능한 경우(turn 서버가 연결을 중재)

Communictation Protocol

미디어, 오디오, screen sharing할 때만 적용 가능한 통신 프로토콜

RTP

전송되는 데이터 패킷의 format

RTCP

RTP의 통계값을 확인해 active call인지 체크하여 대역폭을 낭비하지 않도록 조절하는 것

File sharing, text message, game 관련 등 비디오나 오디오를 제외한 나머지 데이터의 경우

SCTP(Stream Control Transmission Protocol)

데이터를 small chunk로 분리한 뒤, 채널을 통해 전송하는 방식

ex. Real-time network games, Game player action events, Asset exchange, Text chat

DTLS, SRTP

Signaling 과정에서 하나의 certificate를 생성하고, 서로 교환함

서로 교환한 certificate로 데이터를 복호화해서 데이터를 확인

해커가 데이터를 가로채더라도 북호화는 불가능하도록 만듦

SRTP(Secure Real-time Transport Protocol)

RTP 데이터를 암호화하는 프로토콜, RTP에서 사용하는 데이터인 미디어, 오디오, sharing screen에 사용

DTLS(Datagram Transport Layer Security)

RTP를 제외한 나머지 데이터의 통신 과정에서 사용


Reference

https://post.naver.com/viewer/postView.nhn?volumeNo=30734315&memberNo=33264526&vType=VERTICAL

profile
https://a-honey.tistory.com/

0개의 댓글