로컬 컴퓨터와 원격 피어 간의 WebRTC 연결을 담당하며 원격 피어에 연결하기 위한 메서드들을 제공하고, 연결을 유지하고 연결 상태를 모니터링하며 더 이상 연결이 필요하지 않을 경우 연결을 종료합니다.
RTCPeerConnection → EventTarget
임의의 데이터의 양방향 Peer-to-Peer 전송을 위해 사용될 수 있는 네트워크 채널을 나타낸다. 모든 데이터 채널은 RTCPeerConnection과 연결되며 각 피어 연결에는 이론상 최대 65,534개의 데이터 채널이 존재할 수 있다.
데이터 채널을 만들고 원격 피어에 가입을 요청하려면 RTCPeerConnection의 createDataChannel()를 호출한다. 데이터 교환에 초대된 피어는 데이터 채널이 연결에 추가되었음을 알리는 datachannel 이벤트를 수신한다.
RTCDataChannelEvent() 생성자는 datachannel을 나타내는 신규 RTCDataChannelEvent 객체를 반환한다. 이 이벤트는 두 피어 사이에서 원격 피어가 RTCDataChannel을 개통하도록 요청되었을 때 RTCPeerConnection에 전달된다.
WebRTC API의 한 종류로서, RTCPeerConnection을 구축할 때 사용되기도하는 Internet Connectivity Establishment(ICE)의 후보군(candidate)를 말한다.
하나의 ICE candidate는 WebRTC가 원격 장치와 통신을 하기 위해 요구되는 프로토콜과 라우팅에 대해 알려준다. WebRTC 피어 연결을 처음 시작하게 되면, 일반적으로 여러 개의 candidate들이 연결의 각 end에 의해 만들어진다.그리고 이 과정은 로컬 유저와 원격 유저가 연결을 위해 최고의 방법을 서로의 동의하에 선택하기 전까지 계속된다.이후에 WebRTC가 선택한 candidate를 사용해서 연결을 시도하게 된다.
RTCIceTransport
인터넷 연결 설정(ICE) 전송에 대한 정보를 나타낸다.
RTCPeerConnectionIceEvent
대상이 있는 ICE 후보와 관련하여 발생하는 이벤트(일반적으로 RTCPeerConnection)을 나타낸다. icecandidate 유형의 이벤트만 있음.
RTCRtpSender
RTCPeerConnection에서 MediaStreamTrack의 데이터 인코딩 및 전송을 관리한다.
RTCRtpReceiver
RTCPeerConnection에서 MediaStreamTrack의 데이터 디코딩 및 수신을 관리한다.
RTCTrackEvent
새롭게 수신된 MediaStreamTrack이 생성되고 관련 RTCRtpReceiver 개체가 RTCPeerConnection 개체에 추가되었음을 나타낸다.
RTCSctpTransport
스트림 제어 전송 프로토콜(Stream Control Transmission Protocol, SCTP (en-US)) 전송을 설명하는 정보를 제공하고, 모든 RTCPeerConnection 데이터 채널에 대한 SCTP 패킷이 송수신되는 기본 데이터그램 전송 보안 계층 프로토콜(Datagram Transport Layer Security, DTLS (en-US)) 전송에 접근하기 위한 방법을 제공합니다.
단말이 자신의 공인 IP 주소와 포트를 확인하는 과정에 대한 프로토콜.
STUN 서버는 인터넷의 복잡한 주소들 속에서 유힐하게 자기 자신을 식별할 수 있는 정보를 반환해줌.
즉, WebRTC 연결을 시작하기 전에 STUN 서버를 향해 요청을 보내면, STUN 서버는 NAT 뒤에 있는 피어(Peer)들이 서로 연결할 수 있도록 공인 IP와 포트를 찾아줌
STUN 방식을 통해 자신의 정보를 알아내지 못한 경우, TURN 서버를 대안으로 이용.
TURN 방식은 네트워크 미디어를 중개하는 서버를 이용. 중간에 서버를 한 번 거치기 때문에, 정확하게는 P2P 통신이 아니게 되며 그 구조상 지연이 필연적으로 발생하게 됨. 보안 정책이 엄격한 개인 NAT 내부에 위치한 브라우저와 P2P 통신을 할 수 있는 유일한 방법이기 때문에, TURN 방식은 최후의 수단으로 선택되어야 함.
후보들을 수집하면 일반적으로 3개의 주소 얻을 수 있음.
이 모든 과정은 ICE라는 프레임워크 위에서 이루어짐.
WebRTC_API
WebRTC는 어떻게 실시간으로 데이터를 교환할 수 있을까?
WebRTC란? (STUN과 TURN 서버의 이해) (2)
Build the backend services needed for a WebRTC app
kurento-tutorial-java