본문 바로가기
Stove Dev Camp

WebRTC란? (1)

by AndoneKwon 2020. 12. 22.

WebRTC?

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

- 위키백과-

 

간단하게 이야기 해서 웹브라우저간에 Adobe Flash나 ActiveX와 같은 별도의 플러그인 없이 서로 통신할 수 있도록 만든 기술이며 이것을 이용해서 음성,영상 통화 등 여러가지를 할 수 있다. 여러분이 알만한 회사중에 WebRTC로 구성된 서비스는 Discord가 있다.

 

일반적인 통신은 그림을 대충 그러보자면

일반적인 미디어 통신

이렇게 서버를 거쳐서 클라이언트에게 전송하는 방식이다.

 

하지만 WebRTC의 기본적인 통작과정은 다음과 같다.

 

단계 1
단계 2
3단계

대략 이런식으로 작동한다. 본래 첫 태생 자체는 P2P를 위한 통신방식이었다.

 

근데 아무래도 Websocket을 이용하거나 하기 때문에 직접적으로 IP를 연결하는 방식을 차용하기 때문에 방화벽이 존재하거나 허브를(또는 라우터를) 사용하는 NAT환경에서는 연결이 불가하다. 따라서, 앞서 말한 시그널링을 위해서는 방화벽을 통과시켜주거나 private ip를 public ip로 바꿔주는 STUN서버 또는 TURN서버를 시용해야 한다.

(NAT가 무엇인지 알고 있다는 가정하에 설명하도록 한다. 간단하게 설명하자면 Wifi 환경과 같이 퍼플릭 IP가 따로 존재하고 공유기 내부에서는 private ip를 이용하여 구분할때, 공유기에서 public ip를 private ip 로 매핑시켜주는 환경을 이야기 한다.)

 

그림으로 나타내자면 다음과 같다.

 

NAT 환경에서의 인터넷 통신과정

중간에 NAT가 존재하여 벽이 있다고 생각하면 된다.

 

그래서 이러한 상황을 타계하고나 나온것이 STUN서버와 TURN 서버이다. 이러한 것들에 대한 자세한 설명은 다음장으로 넘기도록 하겠다.