WebRTC는 P2P(Peer to Peer) 연결을 통해 음성, 영상 등의 데이터를 교환하는 기술이다.
P2P 과정에서 클라이언트간의 주소를 공유하고 방화벽을 우회하는 과정이 필요한데 이 과정에서 문제가 생긴다.
대부분의 가정용 컴퓨터는 공인 IP가 아닌 공유기에 물린 사설 IP를 많이 사용한다. 이 때에는 공인 IP 뿐만 아니라 사설 IP까지 알아내야 한다. 공유기(라우터)를 넘어 사설 IP를 알아내는 과정을
NAT traversal 이라고 한다.
STUN Server
MDN WebRTC Protocol - STUN
STUN(Session Traversal Utilities for NAT)은(는) 공인 IP를 찾을 때 사용하는 프로토콜이다. WebRTC 연결 전 STUN 서버로 요청을 보내주면 서버는 대상 클라이언트의 공인IP와 포트를 찾아서 알려준다.
TURN Server
MDN WebRTC Protocol - TURN
TURN(Traversal Using Relays around NAT)은(는) STUN으로 공인 IP를 알아낼 수 없을 때 사용한다. TURN 서버는 네트워크에서 데이터를 중계하는 역할을 한다. TURN 서버를 사용하게 되면 P2P 통신은 아니며 STUN 서버에 비해 자원 소모가 심하다.
그래서 STUN 서버가 안될 경우 최후의 방법으로 사용한다.