티스토리 뷰

기술 및 라이브러리 소개

WebRTC란?

최초의 펭귄 2018. 5. 20. 18:00

안녕하세요. 오늘은 WebRTC란 무엇인지에 대해 알아보겠습니다.

WebRTC란?

WebRTC(Web Real-Time Communications)란 웹, 앱에서 별도의 소프트웨어, 플러그인 없이
영상, 음성, 텍스트, 파일 같은 데이터들을 주고 받을 수 있도록 만든 기술입니다.
WebRTC로 구성된 소프트웨어는 별도의 플러그인과 소프트웨어 없이 P2P 화상회의 및 데이터 공유가 가능합니다.

P2P 연결을 위해

NAT로 인해 공인 IP와 사설 IP가 달라지게 되는데 이로 인해 각 Client간의 연결이 어려워집니다.
이 때 ICE, STUN, TURN이라는 개념이 들어가게 되는데
먼저 STUN 서버를 이용하여 NAT를 넘어 두 Client간의 연결을 시도하며
NAT의 구조로 인해 실패할 경우 TURN 서버를 통해 데이터를 거쳐가도록 연결합니다.
ICE는 두 Client간의 데이터 송수신 비용을 최소화 경로를 찾아주는 프레임 워크입니다.

STUN

STUN 서버는 각 Client의 NAT 통과 전후의 IP를 기록하여
상대방 Client에 이 정보를 전달해 주며 이를 통해 P2P 연결을 성립시킵니다.

TURN

TURN 서버는 STUN서버을 이용한 연결이 실패하였을 경우 사용되는데요.
공인 IP로 돌아가는 TURN 서버를 이용하여
각 Client가 보내주는 데이터를 다른 Client로 보내는 작업을 실시하여 P2P 연결을 성립시킵니다.

SDP

각 Peer에서 송수신 되는 멀티미디어 컨텐츠 규격(해상도, 포맷, 코덱, 압축 등)의 표준으로
SDP를 이용하여 서로의 컨텐츠의 정보를 이해할 수 있습니다.
(SDP는 컨텐츠 데이터가 아니라 컨텐츠의 메타데이터이라는 점!)

Signaling

서로 다른 네트워크에 있는 Client들은 서로를 연결하기 위해서
각 Client의 위치와 미디어 포맷 협의가 필요합니다.
이러한 프로세스를 Signaling이라고 하며 Signaling을 위해서는
Signaling 서버가 필요합니다.

Signaling 서버

두 Client사이에서 서로의 Signaling 정보를 전달 할 수 있는 서버가 필요하며
어떠한 통신 방법이든 상관 없습니다.
또한 Signaling에서 사용되는 협의 메세지인 SDP의 내용도 몰라도 됩니다.
그냥 Signaling 서버는 Client에서 오는 정보를 다른 Client로 전달하는 역할만 수행하면 됩니다.

ICE candidate

Signaling을 이용하여 SDP를 결정한 후에 ICE candidate(후보)들을 교환하기 시작합니다.
ICE candidate는 발신 Client에서 통신을 어떻게 하는지의 방법을 설명하며
통신 방법이 검색되는 순서대로 ICE candidate를 보냅니다.
이미 ICE를 정해 미디어 스트리밍을 시작 했더라도 가능한 모든 ICE candidate를 전송하여
최고의 ICE를 결정합니다. (이 때문에 초반에 영상의 품질이 낮을 수 있습니다.)

마치며

오늘은 WebRTC의 흐름을 정리하고 이에 사용되는 다양한 개념들을 간단히 정리하는 시간을 가졌습니다.
처음 읽기에 어려울 수 있지만 WebRTC에 관한 프로젝트를 진행하면서 공부하여 보면 충분히 이해될 것이라고 생각합니다.
질문은 하단에 주시면 아는 만큼 답변해 드리겠습니다.

HyunsuKim님의 WebRTC 문서를 참고하여 글을 작성하였습니다!

감사합니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday