본문

STUN : Session Traversal Utilities for NAT


STUN은 실시간 음성/화상/메시지 채팅 및 각종 대화형 IP 통신을 위한 프로그램에서의 NAT 순회를 위하여 사용되는, 네트워크 프로토콜 정의를 포함한 각종 표준화된 방법들의 집합을 의미합니다. 현재 표준은 'NAT을 위한 세션 순회 유틸리티(Session Traversal Utilities for NAT)'로서 RFC 5389에 등록되어 있습니다. 이 표준이 출시되기 전, 'NAT 환경에서의 UDP의 단순 순회(Simple Traversal of UDP through NATs)' 라는 이름으로 RFC 3489가 등록되었으며 이는 Classic STUN으로 불리기도 합니다. 이 표준은 NAT 순회를 위한 완벽한 솔루션을 목표로 하였으며, 종단기기가 NAT의 행동방식을 파악할 수 있는 알고리즘을 제공하기도 하였습니다. 하지만, 현재 버전의 STUN은 ICE등의 '프로토콜을 위한 툴'으로서 작용하도록 설계되었고, NAT 구분 알고리즘이 제거되었으며, 확장가능한 패킷 포맷을 정의합니다.

STUN 프로토콜은 NAT 환경에서 동작하는 어플리케이션이, NAT의 존재유무와, NAT 공인 IP 주소, 그리고 어플리케이션의 UDP 포트(NAT이 현재 접속에 어떤 포트를 할당했는지) 정보를 알아낼 수 있도록 하는데 목적이 있습니다. 이 프로토콜은 NAT 외부에 위치한 제 3의 서버(STUN 서버)의 도움을 받아 작동됩니다. Classic STUN의 경우에는 NAT의 행동방식을 알아내기 위한 방법들을 기술하고 있었으나 너무나 다양한 NAT 구현이 시제품들에 존재하여, 각각에 대해 파악하기 어려울 뿐만 아니라 문제를 일으키기 때문에, 새 버전(RFC 5389)에서는 이 부분이 삭제되었습니다.


===============
잘 알려진 UDP 홀 펀칭(클라이언트가 서버에 접근하여 ip와 포트번호를 제공) 방법입니다. 즉, rendezvous서버 =  STUN서버. 위 그림에서 붉은색 부분에서 통신이 이루어지지 않으며(symmetric 기기 사용시) 이런 경우에는 릴레이 서버를 사용하는 TURN(Traversal Using Relays around NAT)기법을 사용합니다. TURN기법에 많은 자원이 소모되므로 STUN을 우선 시도하고 이것이 실패할 경우에만 TURN을 사용합니다. 이것을 판단하는 방법이 ICE(Interactive Connectivity Establishment) 입니다. 아래 동영상에서 이를 설명하고 있습니다. 



Yahoo VoIP STUN



댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.