반응형
그니_
삽질탐방기
그니_
  • 분류 전체보기 (24)
    • 개발 (15)
    • ETC (1)
    • 트러블슈팅 & 삽질기록 (7)
    • 성능개선 (1)

인기 글

최근 글

최근 댓글

태그

  • GPT 플러그인
  • Spring
  • springboot
  • Database
  • chatgpt 히스토리 삭제
  • easyrandom
  • spring log
  • chatgpt 정리
  • chatgpt 확장 추천
  • java
  • spring docker compose
  • 네트워크
  • index
  • 마이크로소프트 ai tour
  • timeunit
  • chatgpt 채팅 삭제
  • chatgpt 확장 프로그램
  • db
  • chatgpt 기록 삭제
  • spring docker
hELLO · Designed By 정상우.
그니_

삽질탐방기

개발

WebRTC

2022. 7. 6. 04:15
반응형

최근 스트리밍 서비스들이 많기도 하고 사용하는 서비스도 많아, 비디오 스트리밍 관련 토이 프로젝트나 해볼까? 하며 찾다보니 WebRTC란 API가 있길래 한번 찾아봤다.

 

WebRTC란?

WebRTC(Web Real-Time Communication)는 웹 브라우저 간에 플러그인의 도움 없이 서로 통신할 수 있도록 설계된 API이다. W3C에서 제시된 초안이며, 음성 통화, 영상 통화, P2P 파일 공유 등으로 활용될 수 있다. - 위키백과 - 

https://www.baeldung.com/webrtc

 

위의 그림을 보아 하니 서버를 통해서 전달하는 방식이 클라이언트간에 서로 직접 통신하는 방식인거 같다.

 

서버구성

1. signaling server

WebRTC (피어들로 불리우는) 브라우저들 사이에 스트리밍 데이터를 주고 받는 RTCPeerConnection를 사용한다.
통신을 조율하고 조장할 메세지를 주고 받기 위해 Signaling으로 알려진 일련의 과정이 필요하다. 이러한 과정을 수행하는 서버이다.

 

2. sturn server

STUN 은 Session Traversal Utilities for NAT 의 약자이다. STUN 은 IETF RFC 5389에 정의된 네트워크 프로토콜/패킷 포맷으로, 네트워크 환경에 대한 Discovery 를 위한 것이다. 메신저들끼리 통신하기 위하여 STUN 패킷을 이용한다.

stun 은 Session Traversal Uilities for NAT의 약자이다.
다만 이 STUN으로 모든걸 해결할 수는 없는데 바로 두 Client가 같은 네트워크에 존재하고 있을때는 이것으로는 해결이 되지 않는다. 또한, NAT 환경에서는 Symmetirc NAT의 경우는 어플리케이션이 달라지면 NAT의 매핑테이블이 바뀔 수 있기 때문이다
.

 

3. turn server

TURN 서버는 클라이언트들이 통신할 때 Public 망에 존재하는 TURN 서버를 경유하여 통신하게 된다.
클라이언트는 자신의 Private IP가 포함된 TURN 메세지를 턴서버로 보낸다. 그러면 TURN 서버는 메세지에 포함된 Network Layer IP 주소와 Transport Layer의 UDP 포트 넘버와의 차이를 확인하고 클라이언트의 Public IP로 응답하게 된다. 이때 NAT는 NAT 매핑테이블에 기록되어 있는 정보에 따라서 내부 네트워크에 있는 클라이언트의 Private IP 로 메세지를 전송한다.

 

4. media server

미디어 서버에 대해선 좀더 찾아봐야겠다. open-source도 많은것 같음.

 

참고

http://www.itdaily.kr/news/articleView.html?idxno=208873 

 

[기고] 다자간 화상회의에 최적화된 WebRTC 미디어 서버 아키텍처 - 아이티데일리

[아이티데일리] 코로나19 팬데믹으로 화상회의가 재조명 받으면서 다양한 제품이 쏟아져 나왔다. 덕분에 국내외 주요 화상회의 제품들은 기술과 성능 측면에서 상향평준화됐다. 1:1 중심의 전화

www.itdaily.kr

https://meetrix.io/blog/webrtc/introduction.html

 

WebRTC Media Server Comparison

WebRTC Library Comparision

meetrix.io

 

반응형

'개발' 카테고리의 다른 글

SSH into docker container  (0) 2022.07.11
VLAN  (0) 2022.07.07
참고 사이트 정리  (0) 2022.07.06
DB Index란?  (0) 2022.06.29
[Jackson] 추상클래스, 인터페이스를 파라미터로?  (0) 2022.06.27
    '개발' 카테고리의 다른 글
    • SSH into docker container
    • VLAN
    • 참고 사이트 정리
    • DB Index란?
    그니_
    그니_
    머리속에서만 존재하는 내용을 글로 정리

    티스토리툴바