킹의 개발일지
WebRTC 용어 정리! 본문
이번 글에서는 WebRTC에서 등장 할 용어들을 조금 정리해보고자 한다!
그럼.. 시작!
ICE(Interactive Connectivity Establishment)
처음 봤을 땐 무슨 얼음?.. 싶었던 용어다... 여튼 설명하자면, ICE는 브라우저가 peer를 통한 연결이 가능하도록 해주는 프레임워크이다.
그렇다면 우리는 사용자 A에서 사용자 B로 곧 바로 연결하고 싶지만 그건 어려울 수 있다.
다음과 같은 이유인데, 연결을 시도할 때 방화벽을 통과해야 하기도 하고, 디바이스에 퍼블릭 IP가 없다면 유니크한 주소값을 할당해야할 것이다. 또한 라우터가 사용자간에 직접 연결하는 것을 허용하지 않을 때는 데이터를 릴레이해서 우회 할 필요가 있을 것이다.
ICE는 이러한 작업을 수행하기 위해서 STUN과 TURN 서버를 사용한다.
그렇다면 STUN과 TURN 서버란 무엇일까?
STUN(Session Traversal Utilities for NAT)
STUN은 사용자 자신의 퍼블릭 주소를 검색하고 피어간의 직접적인 연결을 방해하는 라우터의 제약 사항들을 판단하는 프로토콜이다.
아래 그림은 STUN 서버가 동작하는 모습을 간략하게 보여준다.

Peer A는 자신의 퍼블릭 주소를 알기위해 STUN 서버에 요청을 보낸다. 따라서 자신의 퍼블릭 IP가 208.141.55.130.3255라는 것을 알 수 있다. 또한 STUN 서버는 클라이언트가 라우터의 NAT 뒤에 접근할 수 있는지 없는지 그 여부도 알려준다.
NAT(Network Address Translation)
STUN 서버를 설명하면서 NAT를 잠시 꺼냈었는데, 지금 설명하겠다!
NAT는 사용자의 디바이스에 퍼블릭 IP를 제공하는데 쓰인다.

라우터는 퍼블릭 IP 주소를 가지고 있고 라우터에 연결된 모든 디바이스들은 각자의 프라이빗 IP 주소를 가지고있다. 위 그림에서는 젤 왼쪽 세개의 모니터 그림이 라우터에 연결된 디바이스이다. 이들은 각자 192.168.1 로 시작하는 주소를 가지고 있다.
요청들은 디바이스의 프라이빗 IP 주소를 유니크한 포트 번호를 가진, 라우터의 퍼블릭 IP주소로 변환 시켜 줄 것이다. 이렇게 하면 각 디바이스에 대해 유니크한 퍼블릭 IP가 필요하지 않지만 여전히 인터넷에서 검색될 수 있다!
그러나 일부 라우터에는 디바이스에 연결하는데 제한 사항이 존재 할 수 있다. 이러면 STUN 서버에서 퍼블릭 IP를 찾는다 하더라도 Peer와 연결을 할 수 없을 것이다. 이 때 사용해야 할 것이 TURN 서버이다.
TURN(Traversal Using Relays around NAT)
NAT를 사용하는 일부 라우터는 'Symmetric NAT'라는 제약을 사용하고 있다. Symmetric NAT는 라우터가 이전에 연결했던 피어들의 연결만 수락할 것을 의미한다.
그래서 TURN이 무엇인고 하면,
TURN서버와의 연결을 열고 해당 서버를 통해 모든 정보를 릴레이해서 Symmetric NAT 제한을 우회하기 위한 것이다.
특정 사용자가 TURN 서버에 연결하고, 서버에 연결된 모든 Peer들에게 패킷을 보내라고 말하면 그 패킷이 사용자에게 전달 되는 형식이다. 이것은 분명 오버헤드가 있을 것이므로 다른 대안이 없는 경우에만 사용될 것이다.
아래 그림은 TURN 서버가 동작하는 모습을 간략히 보여준다.

SDP(Session Description Protocol)
SDP는 한 번 데이터가 전송되면, 두 피어가 서로를 알 수 있도록 해상도, 형식, 코덱, 암호화 등과 같은 생성된 연결의 멀티미디어 콘텐츠를 설명하는 표준이라고 할 수 있다. 이것은 본질적으로 미디어 콘텐츠 자체가 아니라 콘텐츠를 설명하는 메타데이터이다.
SDP는 데이터 포맷으로 볼 수있는데, 이는 디바스간 미디어를 공유하는 연결을 설명하는데 사용된다.
SDP는 하나 이상의 UTF-8 텍스트 행으로 구성되며 각 행은 하나의 문자 유형으로 시작하고 그 뒤에 등호("=")와 값 또는 설명으로 구성된 구조화된 텍스트가 온다. 형식은 유형에 따라 다른데, 지정된 문자로 시작하는 텍스트 행을 일반적으로 "문자 행"이라고 한다. 예를 들어 미디어 설명을 제공하는 줄은 "m" 유형을 가지므로 이러한 줄을 "m-lines"라고 한다.
아래에 그림에서 대략적인 SDP의 구조를 볼 수 있다!

'WebRTC' 카테고리의 다른 글
| WebRTC protocol (2) | 2023.02.05 |
|---|