티스토리 뷰

728x90

회사에서 사용하고 있는 WebRTC에 대한 개념을 공부하기 위해 블로깅 해봅니다. 

WebRTC Flow

 

WebRTC ?

 

Web RealTime Communication 의 약자로 플러그인 설치없이 실시간 소통(비디오, 오디오)이 가능하도록 만들어주는 기술입니다.

WebRTC를 사용하는 서비스
Google Meet, Zoom 등 
별다른 프로그램 설치없이도 실시간 소통을 할 수 있는것!

 

 

통신원리

 

일반적으로 P2P(Peer to Peer)를 사용하며,

P2P란, 두개의 단말이 서로 1:1 통신을 한다는 뜻으로,

서버의 개념없이 동등한 노드들로 구성되어 데이터를 주고받는 형식으로 되어있습니다.

 

RTCPeerConnection

WebRTC 컴포넌트로, peer들간의 데이터를 안정적이고 효율적으로 통신하게 도와줍니다.

커넥션이 이루어지고 열리면, MediaStream과 RTCDataChannel들을 커넥션에 연결할 수 있습니다. 

 

 

ICE(Interactive Connectivity Establishment)

두 단말이 서로 통신할 수 있는 최적의 경로를 찾을 수 있도록 도와주는 프레임워크 입니다.

 

단말 간에 연결을 해도 정상 작동하지 않는 이유가 있습니다. 

  • 방화벽 통과 문제 
  • 단말에 퍼블릭 IP가 없을 경우, 유일한 주소값을 할당 해야하는 문제
  • 라우터가 단말간의 직접연결을 허용하지 않을때, 데이터를 릴레이(질문) 해야하는 문제 

이를 해결하기 위해 STUNTURN 서버를 활용합니다.

 

ICE Candidate

 

STUN과 TURN서버를 활용해 찾아낸 연결가능한 네트워크 주소들.

 

  • Local Address: 단말 Private IP 주소와 포트번호
  • Server Reflexive Address: 단말의 Public IP 주소와 포트번호
  • Relayed Address: TURN서버의 IP주소와 포트번호

 

 

 

참고

https://brunch.co.kr/@linecard/156

https://developer.mozilla.org/ko/docs/Web/API/WebRTC_API/Protocols

https://temasys.io/guides/developers/webrtc-ice-sorcery/


 

다음주 스터디

  • NAT 
  • ✩SDP 
  • ✩STUN - 해당 단말의 퍼블릭IP주소를 보내는 역할을 함(두 단말이 같은 NAT 환경에 있거나, NAT의 보안정책이 엄격할 경우 연결되지않음)
  • ✩TURN - STUN에서 연결에 실패할경우 최후 수단으로 이 서버를 사용 (리소스 낭비가 심하다는 단점)
  • ✩Signaling

개인공부

  • UDP/ TCP
  • SFU/ MFU - (여러유저와 통신할경우)
  •  
728x90