투케이2K

16. (TWOK/STUDY) [투케이 학습] : WebRTC 실시간 스트리밍 STUN , TUN 서버 연결 학습 본문

투케이2K 학습정리

16. (TWOK/STUDY) [투케이 학습] : WebRTC 실시간 스트리밍 STUN , TUN 서버 연결 학습

투케이2K 2023. 9. 11. 19:54

[제 목]

[투케이 학습] : WebRTC 실시간 스트리밍 STUN , TUN 서버 연결 학습

 

[설 명]

 

                    /**
                     * -------------------------------------
                     * [요약 설명]
                     * -------------------------------------
                     * 1. WebRTC [ICE] 연결 형태 : 
                     * 
                     * Relayed Address : TURN 서버가 패킷 릴레이를 위해 할당하는 주소
                     * Server Reflexive Address : NAT 가 매핑한 클라이언트의 공인망(Public IP, Port)
                     * Local Address : 클라이언트의 사설주소(Private IP, Port)
                     * -------------------------------------
                     * 2. TUN / STUN 구분 : 
                     * 
                     * STUN 서버는 HOST 를 거쳐 >> Server Reflexive Address 만을 응답하지만, 
                     * TURN 서버는 Relayed Address와 Server Reflexive Address 를 모두 응답한다
                     * 
                     * STUN, TURN 서버를 이용해 SDP Answer IP주소 를 취득 >> RTCPeerConnection Remote 연결 수행
                     * -------------------------------------
                     * 3. 실시간 스트림 정보 요청 및 재생 로직 : 
                     * 
                     * Device A : 
                     *   getUserMedia() 로 미디어 캡처
                     *   RTCPeerConnection 생성, RTCPeerConnection.addTrack() 호출 (addStream deprecated)
                     *   RTCPeerConnection.createOffer() 메서드로 offer를 생성
                     *   RTCPeerConnection.setLocalDescription() 메서드로 offer를 localDescription으로 설정
                     *   setLocalDescription() 호출 후, Ice candidates를 STUN , TUN 서버에 요청
                     *   시그널링 서버(AWS)를 이용해 Device B에 Offer를 전송
                     * 
                     * 
                     * Device B : 
                     *   Device A의 Offer 를 수신
                     *   RTCPeerConnection.setRemoteDescription()호출해서 remoteDescription 기록
                     *   호출 종료시, local media 캡처, 각 mediaTrack을 RTCPeerConnection.addTrack()을 통해 peer connection에 연결
                     *   RTCPeerConnection.createAnswer() 메서드로 answer 생성
                     *   RTCPeerConnection.setLocalDescription() 으로 생성된 answer에 localDescription을 설정
                     *   시그널링 서버를 사용해 Device A에 answer를 전달
                     * 
                     * 
                     * Device A : 
                     *   answer 을 받고
                     *   RTCPeerConnection.setRemoteDescription() 호출로 answer를 remoteDescription으로 설정
                     * -------------------------------------
                     * 4. STUN 서버 특징 : 
                     * 
                     * 클라이언트는 자신의 Public IP를 확인하기 위해 STUN 서버로 요청을 보내고 서버로 부터 자신의 Public IP를 받는다
                     * 클라이언트는 자신이 받은 Public IP를 이용하여 시그널링을 할때 받은 그 정보를 이용해서 시그널링을 수행 한다
                     * STUN 서버는 candidate 에서 HOST 를 사용해 공인 주소를 얻고 usernameFragment 를 사용해 고유 식별자를 통해 인증을 수행
                     * -------------------------------------
                     * 5. TUN 서버 특징 : 
                     * 
                     * 클라이언트들이 통신할 때 Public 망에 존재하는 TURN 서버를 경유하여 통신한다
                     * 클라이언트는 자신의 Private IP가 포함된 TURN 메세지를 턴서버로 보내고 >> TURN 서버는 메세지에 포함된 Network Layer IP 주소와 Transport Layer의 UDP 포트 넘버와의 차이를 확인하고 클라이언트의 Public IP로 응답 한다
                     * -------------------------------------
                    */

 

반응형
Comments