TURN
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
TURN(Traversal Using Relays around NAT)은 클라이언트와 피어가 NAT(Network Address Translation) 뒤에 있어 직접 연결이 불가능할 때, 중계 서버를 사용하여 통신을 가능하게 하는 기술이다. STUN(Session Traversal Utilities for NAT)이 대칭 NAT과 같은 특정 환경에서 작동하지 않을 경우 TURN이 사용된다. TURN 서버는 클라이언트에게 릴레이 주소를 할당하고, 클라이언트와 피어 간의 데이터 중계를 담당하여 대칭 NAT 환경에서도 통신을 가능하게 한다. TURN은 STUN보다 다양한 NAT 환경을 지원하지만, 서버 대역폭을 많이 사용하므로 ICE(Interactive Connectivity Establishment) 프로토콜은 우선 STUN을 사용하고, TURN은 STUN 사용이 불가능한 경우에만 사용하도록 권장한다.
더 읽어볼만한 페이지
- 네트워크 주소 변환 - 포트 포워딩
포트 포워딩은 외부 네트워크의 연결 요청을 내부 네트워크의 특정 장치나 서비스로 전달하여 외부에서 내부 서비스에 접근 가능하게 하는 네트워크 기술로, 라우터나 방화벽에서 설정되며 다양한 방식으로 구현되고 활용된다. - 네트워크 주소 변환 - STUN
STUN(Session Traversal Utilities for NAT)은 NAT 환경에서 통신 프로토콜이 NAT를 감지하고 통과하도록 돕는 클라이언트-서버 아키텍처 도구로, 클라이언트가 서버에 요청하여 외부 IP 주소와 포트 번호를 확인하며, VoIP, 인스턴트 메시징, 화상 회의 등에 활용되고 TURN, ICE와 함께 최적의 통신 경로 설정에 기여한다. - 음성 인터넷 프로토콜 - 구글 음성 검색
구글 음성 검색은 전화 기반의 음성 검색 도구로 시작하여 서비스는 종료되었으나, 관련 기술은 다양한 구글 제품에 영향을 주었으며, 모바일 음성 검색 시장에서 중요한 역할을 하고 다양한 구글 서비스와 통합되어 사용자 편의성을 높이고 언어 지원을 확대해왔다. - 음성 인터넷 프로토콜 - 음성 사서함
음성 사서함은 발신자가 녹음된 오디오 메시지를 수신자에게 전달하는 시스템으로, 다양한 사용자 인터페이스와 통신 방법을 통해 발전해 왔으며, 기업의 통신 흐름 개선에 기여한다. - 응용 계층 프로토콜 - 실시간 전송 프로토콜
실시간 전송 프로토콜(RTP)은 스트리밍 미디어의 실시간 전송을 위해 설계된 프로토콜로, IP 네트워크에서 오디오/비디오 전송의 표준으로 사용되며, 멀티미디어 데이터 전송, 타임스탬프, 순서 제어, QoS 피드백 등을 제공한다. - 응용 계층 프로토콜 - D-Bus
D-Bus는 2002년에 시작된 프로세스 간 통신 시스템으로, 시스템 버스와 세션 버스를 통해 정보 공유, 모듈성, 권한 격리를 제공하며, 일대일 요청-응답 및 발행/구독 통신 방식을 지원한다.
TURN | |
---|---|
TURN (Traversal Using Relays around NAT) | |
일반 정보 | |
종류 | 네트워크 프로토콜 |
기능 | NAT 환경에서 미디어 스트림 릴레이 |
약어 | TURN |
전체 이름 | Traversal Using Relays around NAT |
기술 정보 | |
포트 | 3478 (UDP), 443 (TLS over TCP), 5349 (TLS over TCP) |
프로토콜 | UDP, TCP, TLS |
RFC | RFC 8656 RFC 7065 |
기반 프로토콜 | STUN |
표준화 | |
IETF RFC | RFC 5766 RFC 6156 RFC 7065 |
2. NAT와 통신 문제
NAT는 IPv4 주소 고갈 문제를 완화하는 등 유용한 측면이 있지만, 기존의 많은 IP 응용 프로그램의 통신을 방해하고 새로운 응용 프로그램 배포를 어렵게 만드는 문제를 안고 있다.[1] 이러한 NAT 환경에서의 통신 문제를 해결하기 위해 STUN이나 TURN과 같은 기술들이 개발되었다. 각 기술은 서로 다른 방식으로 작동하며 장단점을 가지므로, ICE와 같은 방법을 통해 특정 환경에 가장 적합한 통신 방식을 선택하는 것이 일반적이다.
2. 1. NAT 친화적 프로토콜의 한계
NAT은 IPv6로의 전환 과정에서 IPv4 주소 고갈 문제를 완화하기 위한 수단으로 사용되지만, 여러 제약을 동반한다. 가장 큰 문제점은 NAT가 기존의 많은 IP 응용 프로그램의 정상 작동을 방해하고 새로운 응용 프로그램의 배포를 더 어렵게 만든다는 점이다.[1] 이러한 문제를 피하기 위해 "NAT 친화적인" 프로토콜을 만드는 방법에 대한 지침이 개발되었지만, 멀티미디어 응용 프로그램이나 파일 공유와 같은 많은 프로토콜은 이러한 지침을 따르기 어렵다.STUN은 응용 프로그램이 NAT 환경을 통과하여 통신할 수 있도록 돕는 한 가지 방법이다. STUN을 사용하면 클라이언트는 외부 피어로부터 패킷을 수신하는 데 사용할 수 있는 자신의 공인 IP 주소와 포트 번호를 얻을 수 있다. 하지만 STUN으로 얻은 주소가 모든 피어와의 통신에 항상 유효한 것은 아니다. 해당 주소의 사용 가능 여부는 네트워크 토폴로지 조건에 따라 달라지기 때문에, STUN 자체만으로는 NAT 통과 문제를 완전히 해결할 수 없다.
완전한 해결책을 위해서는 클라이언트가 공용 인터넷으로 패킷을 보낼 수 있는 어떤 피어로부터든 미디어를 수신할 수 있는 전송 주소를 확보할 수단이 필요하다. 이는 공용 인터넷에 위치한 서버를 통해 데이터를 중계(릴레이)하는 방식으로만 달성될 수 있다. TURN은 클라이언트가 이러한 릴레이 서버로부터 IP 주소와 포트를 할당받아 사용할 수 있도록 하는 프로토콜이다.
TURN은 거의 모든 네트워크 환경에서 클라이언트에게 연결성을 제공할 수 있다는 장점이 있지만, TURN 서버를 운영하는 데 많은 자원이 필요하다는 단점이 있다. 따라서 가능하다면 STUN이나 직접 연결과 같은 다른 메커니즘을 우선적으로 사용하고, 이것들이 불가능할 경우에만 최후의 수단으로 TURN을 사용하는 것이 바람직하다. 이러한 최적의 연결 방법을 찾기 위해 ICE 방법이 사용될 수 있다.
3. STUN (Session Traversal Utilities for NAT)
NAT은 IPv4 주소 고갈 문제를 완화하고 IPv6로의 전환 과정에서 유용하게 사용되지만, 기존의 많은 IP 애플리케이션의 정상적인 작동을 방해하고 새로운 애플리케이션의 도입을 어렵게 만드는 단점이 있다.[1] 특히 P2P 방식의 멀티미디어 통신이나 파일 공유 애플리케이션 등은 NAT 환경에서 통신에 제약을 받는다.
STUN(Session Traversal Utilities for NAT)은 이러한 NAT 환경에서 애플리케이션이 통신할 수 있도록 돕는 기술 중 하나이다. STUN은 클라이언트가 NAT 장비 뒤에 있더라도, 외부 공인 IP 주소와 포트로 구성된 자신의 전송 주소를 파악할 수 있게 해준다. 클라이언트는 이 정보를 통신하고자 하는 상대방(피어)에게 알려줌으로써, 피어가 해당 주소로 직접 패킷을 보낼 수 있도록 시도한다.
하지만 STUN으로 파악한 주소가 모든 종류의 NAT 환경이나 네트워크 구성에서 항상 유효한 것은 아니다. 네트워크 토폴로지나 NAT의 종류(특히 대칭형 NAT)에 따라 STUN 방식만으로는 통신이 불가능할 수 있다. 따라서 STUN은 NAT 통과 문제를 해결하는 완전한 해법은 아니며, 때로는 다른 기술과의 조합이 필요하다.
STUN으로 통신이 어려운 경우, TURN(Traversal Using Relays around NAT) 서버를 통해 데이터를 중계하거나, ICE(Interactive Connectivity Establishment) 방식을 사용하여 STUN, TURN, 직접 연결 등 가능한 최적의 통신 경로를 찾는 방법이 사용된다.
4. TURN (Traversal Using Relays around NAT)
네트워크 주소 변환(NAT)은 IPv4 주소 고갈 문제를 완화하는 데 도움을 주지만, 기존의 많은 IP 애플리케이션의 정상적인 동작을 방해하고 새로운 애플리케이션 개발을 어렵게 만드는 단점이 있다.[1] 특히 멀티미디어 애플리케이션이나 파일 공유와 같은 프로토콜은 NAT 환경에서 제대로 작동하기 어렵다.
이를 해결하기 위한 방법 중 하나로 NAT용 세션 트래버설 유틸리티(STUN)가 있다. STUN은 클라이언트가 NAT 외부에서 인식되는 자신의 공인 IP 주소와 포트 정보를 얻도록 도와준다. 이 정보는 다른 피어(peer)와 직접 통신 경로를 설정하는 데 사용될 수 있다. 하지만 STUN으로 얻은 주소 정보가 모든 종류의 NAT 환경이나 네트워크 구조에서 항상 유효한 것은 아니다. 예를 들어, 대칭 NAT(Symmetric NAT) 환경에서는 STUN 방식이 제대로 작동하지 않을 수 있다. 따라서 STUN만으로는 모든 NAT 환경을 통과하는 완전한 해결책이라고 보기 어렵다.
완전한 NAT 통과(NAT traversal) 솔루션은 클라이언트가 어떤 네트워크 환경에 있든, 공용 인터넷상의 다른 피어와 안정적으로 데이터를 주고받을 수 있는 방법을 제공해야 한다. 이를 위해 공용 인터넷에 위치한 중계 서버(relay server)를 통해 데이터를 전달하는 방식이 필요하며, TURN (Traversal Using Relays around NAT)은 바로 이러한 역할을 수행하는 프로토콜이다. TURN은 클라이언트가 중계 서버로부터 통신에 사용할 IP 주소와 포트(릴레이 주소)를 할당받을 수 있도록 지원한다. 클라이언트는 이 릴레이 주소를 사용하여 다른 피어와 데이터를 주고받게 되므로, 복잡한 NAT 환경에서도 안정적인 연결을 확보할 수 있다.
TURN은 거의 모든 경우에 연결성을 제공하지만, 모든 트래픽이 중계 서버를 거치기 때문에 서버 운영자에게는 상당한 자원(특히 대역폭) 부담을 준다. 따라서 일반적으로 STUN이나 직접 연결과 같은 다른 방법을 먼저 시도하고, 이것이 불가능할 경우에만 최후의 수단으로 TURN을 사용하는 것이 권장된다. 상호 연결 설정(ICE) 프레임워크는 이러한 여러 통신 방법을 조합하여 가장 효율적인 연결 경로를 찾는 데 사용된다.
4. 1. TURN의 동작 방식
클라이언트 컴퓨터와 상대방 컴퓨터가 모두 NAT 환경 뒤에 있어 직접적인 데이터 교환이 불가능할 때, 특히 STUN 프로토콜과 호환되지 않는 대칭 NAT 환경에서는 TURN 프로토콜을 사용해야 한다. TURN의 동작 방식은 다음과 같은 단계로 이루어진다.=== 할당 (Allocate) ===
먼저 클라이언트는 TURN 서버에 할당(Allocate) 요청을 보낸다. 이 요청은 클라이언트가 상대방 컴퓨터와 통신하기 위해 TURN 서버의 자원(릴레이 주소)을 사용하겠다는 의미이다. 서버는 요청을 받아들일 수 있다면, 클라이언트가 릴레이 통신에 사용할 IP 주소와 포트(이를 할당된 릴레이 전송 주소라고 함)를 할당하고, 이 정보를 포함한 '할당 성공' 응답을 클라이언트에게 전달한다.
=== 권한 생성 (CreatePermissions) ===
다음으로 클라이언트는 TURN 서버에 권한 생성(CreatePermissions) 요청을 보낸다. 이는 상대방 컴퓨터가 TURN 서버를 통해 클라이언트에게 데이터를 보낼 때, 해당 통신이 유효한지를 서버가 검증할 수 있도록 미리 규칙을 설정하는 과정이다. 즉, TURN 서버는 이 권한 정보를 바탕으로 특정 상대방 컴퓨터로부터 오는 데이터만 클라이언트에게 전달하게 된다.
=== 데이터 전송 방식 선택 ===
권한 생성이 완료되면, 클라이언트는 실제 데이터를 전송하기 위해 두 가지 방식 중 하나를 선택할 수 있다.
방식 | 특징 | 장점 | 단점 |
---|---|---|---|
Send 메커니즘 | 각 데이터 패킷에 TURN 헤더를 붙여 전송 | 구현이 비교적 간단함 | 헤더 크기(36바이트)가 커서 통신 대역폭을 많이 차지할 수 있음 |
ChannelBind 메커니즘 | 특정 상대방과의 통신 채널을 미리 설정하고 해당 채널로 데이터 전송 | 헤더 크기(4바이트)가 작아 대역폭 효율성이 높음 | 채널을 생성하고 주기적으로 갱신해야 하는 부담이 있음 |
Send 메커니즘은 사용하기 간단하지만 헤더 오버헤드가 크고, ChannelBind 메커니즘은 효율적이지만 채널 관리의 복잡성이 따른다.
=== 데이터 릴레이 ===
클라이언트가 Send 또는 ChannelBind 방식을 사용하여 TURN 서버로 데이터를 보내면, 서버는 이 데이터를 수신한다. 그리고 할당된 릴레이 전송 주소를 발신지 주소로 사용하여 UDP 데이터그램 형태로 상대방 컴퓨터에게 전달(릴레이)한다.
상대방 컴퓨터는 TURN 서버로부터 데이터를 수신하고, 응답이 필요한 경우 다시 TURN 서버의 릴레이 주소로 UDP 데이터그램을 보낸다. TURN 서버는 이 데이터를 수신하면, 권한 생성 단계에서 설정된 정보를 이용해 해당 데이터가 유효한지 확인하고, 유효한 경우에만 클라이언트에게 전달한다.
이처럼 클라이언트와 상대방 컴퓨터는 직접 통신하는 대신 TURN 서버를 중개자로 이용하여 데이터를 주고받는다. 양측 모두 TURN 서버의 공인 IP 주소(릴레이 주소)와 통신하기 때문에, 대칭 NAT와 같이 직접 연결이 어려운 네트워크 환경에서도 통신이 가능해진다.
=== STUN과의 관계 및 ICE 프로토콜 ===
TURN은 STUN보다 더 다양한 종류의 NAT 환경을 통과할 수 있다는 장점이 있다. 하지만 모든 통신 데이터가 TURN 서버를 경유해야 하므로, 단순히 공인 IP 주소 정보만 교환하는 STUN에 비해 서버의 부하가 훨씬 크고 더 많은 대역폭을 필요로 한다. 이러한 이유로, WebRTC 등에서 사용되는 ICE 프레임워크에서는 통신 경로 설정을 시도할 때 우선적으로 STUN을 사용하고, 대칭 NAT 환경과 같이 STUN으로 해결할 수 없는 경우에만 차선책으로 TURN을 사용하도록 규정하고 있다.
4. 2. TURN의 장점과 단점
TURN은 STUN보다 더 많은 종류의 NAT 환경을 지원한다는 점에서 강력하다. 특히 STUN으로는 통신이 어려운 대칭 NAT 환경에서도 클라이언트와 피어(peer) 간의 연결을 중계하여 통신을 가능하게 한다. 이는 클라이언트와 피어 모두 TURN 서버에 접속하여 할당된 릴레이 주소를 통해 데이터를 주고받기 때문에 가능하다.하지만 TURN의 가장 큰 단점은 모든 통신 데이터가 중앙의 TURN 서버를 거쳐 중계된다는 점이다. 이로 인해 단순히 공용 IP 주소를 확인하고 직접 통신 경로를 찾도록 돕는 STUN 방식에 비해 서버가 부담해야 하는 대역폭이 훨씬 크다.
이러한 장단점 때문에, ICE 프로토콜과 같은 실제 통신 환경에서는 일반적으로 STUN을 먼저 시도하고, STUN으로 연결 설정을 할 수 없는 경우(예: 대칭 NAT 환경)에 한해 TURN을 사용하는 방식을 따른다.
5. ICE (Interactive Connectivity Establishment)
네트워크 주소 변환(NAT) 환경은 IP 주소 고갈 문제를 완화하는 데 도움을 주지만, 기존의 많은 IP 기반 애플리케이션의 정상적인 작동을 방해하고 새로운 애플리케이션의 배포를 어렵게 만드는 단점이 있다.[1] 특히 실시간 멀티미디어 통신이나 P2P 파일 공유와 같이 장치 간 직접적인 연결이 필요한 경우 문제가 발생하기 쉽다.
이러한 NAT 환경에서의 통신 문제를 해결하기 위해 STUN 프로토콜이 개발되었다. STUN은 클라이언트가 NAT 장치 뒤에 있더라도 외부 인터넷에서 인식되는 자신의 공용 IP 주소와 포트 번호를 알아낼 수 있도록 돕는다. 이를 통해 장치 간 직접 통신 경로를 설정할 수 있다. 그러나 STUN은 모든 종류의 NAT 환경에서 작동하는 것은 아니며, 특히 네트워크 구성이 복잡하거나 대칭형 NAT와 같은 특정 유형의 NAT 환경에서는 직접 통신 경로를 설정하는 데 실패할 수 있다.
STUN을 통한 직접 연결 설정이 실패할 경우, TURN 프로토콜을 대안으로 사용할 수 있다. TURN은 통신 데이터를 중계 서버(TURN 서버)를 통해 전달하는 방식으로 작동한다. 모든 데이터가 공용 인터넷에 위치한 서버를 거치기 때문에, STUN으로는 연결이 어려웠던 복잡한 NAT 환경에서도 안정적인 통신 연결을 설정할 수 있다. 하지만 모든 트래픽이 중계 서버를 경유하므로 서버 운영 비용이 많이 들고, 직접 통신에 비해 지연 시간이 늘어날 수 있다는 단점이 있다.
이처럼 STUN은 효율적이지만 항상 성공하는 것은 아니고, TURN은 성공률이 높지만 자원 소모가 크다는 문제가 있다. 따라서 실제 통신 환경에서는 가능한 한 STUN을 이용한 직접 연결을 우선 시도하고, 이것이 실패했을 때만 최후의 수단으로 TURN을 사용하는 것이 바람직하다. ICE(Interactive Connectivity Establishment)는 바로 이러한 과정을 자동화하고 최적화하는 프레임워크이다. ICE는 STUN, TURN 등 사용 가능한 모든 통신 경로 후보를 수집하고 테스트하여, 현재 네트워크 환경에서 가장 효율적이고 안정적인 최적의 통신 경로를 동적으로 찾아낸다. 이를 통해 ICE는 NAT 환경에서의 통신 성공률을 높이는 동시에 불필요한 서버 자원 낭비를 최소화한다.
5. 1. ICE의 동작 방식
ICE 프로토콜은 두 장치 간의 통신 경로를 설정할 때, 먼저 STUN 프로토콜을 사용하려고 시도한다. STUN은 각 장치의 공용 IP 주소를 확인하고 서로 직접 통신할 수 있도록 돕는 비교적 간단한 방식이다. 이를 통해 클라이언트와 피어는 서로의 공용 IP 주소 정보를 받아 직접 통신을 시도할 수 있다.하지만 통신하려는 장치 중 하나라도 대칭 NAT 환경에 있는 등 STUN을 사용할 수 없는 상황에서는 직접 통신 경로를 설정하기 어렵다. STUN은 대칭 NAT와 같이 특정 유형의 NAT 환경에서는 작동하지 않을 수 있다. 이러한 경우, ICE 프로토콜은 차선책으로 TURN 프로토콜을 사용하게 된다.
TURN은 통신 데이터를 중계 서버(TURN 서버)를 통해 전달하는 방식으로 작동한다. 모든 데이터가 서버를 거쳐 전달되므로, STUN으로는 통신이 불가능했던 대칭 NAT 환경에서도 통신이 가능하다는 장점이 있다. 즉, TURN은 STUN보다 더 다양한 종류의 NAT 환경에서 통신을 가능하게 한다. 그러나 모든 데이터가 서버를 경유하기 때문에 STUN 방식에 비해 훨씬 많은 서버 대역폭을 소모한다는 단점이 있다.
따라서 ICE는 통신의 효율성을 고려하여 설계되었다. 가능한 한 STUN을 통한 직접 통신 경로를 찾는 것을 우선으로 하며, 이것이 실패할 경우에만 TURN 서버를 통한 중계 방식으로 통신 경로를 설정하도록 작동한다.
6. 한국의 인터넷 환경과 NAT
한국은 세계적으로 초고속 인터넷 보급률이 매우 높은 국가 중 하나로, 빠른 인터넷 속도와 안정적인 네트워크 환경을 자랑한다.[1] 그러나 인터넷 가입자 수의 폭발적인 증가에 비해 IPv4 주소의 할당은 제한적이어서, 대부분의 가정과 사무실 환경에서는 IP 공유기 등을 이용한 NAT 환경을 통해 인터넷에 접속하는 것이 일반적이다.
NAT는 하나의 공인 IP 주소를 여러 기기가 공유하여 사용할 수 있게 해주는 효율적인 기술이지만, 외부 네트워크에서 NAT 내부의 특정 기기로 직접 접근하는 것을 어렵게 만든다. 이로 인해 P2P 파일 공유, 온라인 게임에서의 서버 생성 및 접속, VoIP 통화, WebRTC 기반의 실시간 화상 회의 등 일부 응용 서비스에서 통신 연결 문제가 발생할 수 있다. 특히 사용자가 직접 서버 역할을 해야 하는 경우, NAT 환경은 서비스 이용에 큰 제약이 된다.
이러한 문제를 해결하기 위해 STUN과 TURN과 같은 기술이 활용된다. STUN은 NAT 환경의 종류를 파악하고 공인 IP 주소와 포트 정보를 얻는 데 도움을 주지만, 모든 종류의 NAT 환경에서 P2P 직접 연결을 보장하지는 못한다. 직접 연결이 불가능한 경우, TURN 서버가 데이터 전송을 중계하는 역할을 수행하여 통신 연결을 보장한다. 한국의 주요 통신 사업자 및 인터넷 서비스 제공 기업들은 안정적인 서비스 제공을 위해 자체적으로 TURN 서버를 구축하고 운영하는 등 노력을 기울이고 있다.
궁극적으로는 IPv6의 도입과 확산을 통해 각 기기가 고유한 공인 IP 주소를 갖게 되면 NAT로 인한 많은 문제가 해결될 수 있을 것으로 기대된다. 한국 정부와 관련 업계는 IPv6 전환을 꾸준히 추진하고 있으나, 기존 인프라와의 호환성 및 전환 비용 등의 문제로 인해 점진적으로 진행되고 있다.
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com