# VLESS, VMess, Trojan, Shadowsocks: 어떤 프로토콜을 쓸까

HTML: https://v2rc.app/ko/learn/choosing-a-protocol/ · 마지막 검토: 2026-11-06

VLESS, VMess, Trojan, Shadowsocks가 네트워크상에서 어떻게 다른지, 제한적인 네트워크에서 무엇이 버티는지, 먼저 무엇을 요청할지 설명합니다. v2rc가 가져올 수 있는 형식도 다룹니다.

V2Ray 클라이언트는 프로토콜을 대신 골라 주지 않습니다. 프로토콜은 가져온 설정이 정하며, 그 설정은 제공업체나 직접 운영하는 서버에서 옵니다. 그래서 실제 질문은 무엇을 요청할지, 또는 무엇을 구축할지입니다. 이 글은 중요한 차이를 설명하고 짧은 추천으로 끝납니다.

> **한 줄 요약.** 선택할 수 있고 네트워크가 제한적이라면 TCP 443 포트에서 `xtls-rprx-vision` 플로우를 쓰는 VLESS와 REALITY로 시작하세요. Trojan이나 TLS와 WebSocket 위의 VLESS처럼 종류가 다른 설정을 대비용으로 하나 더 두세요. 열린 네트워크에서는 거의 무엇이든 동작합니다. 영구적인 선택은 없습니다. 검열 측도 적응하므로 이번 달에 되던 것이 다음 달에는 안 될 수 있습니다.

## 하나의 선택이 아니라 세 개의 계층

“VLESS냐 VMess냐”는 하나의 결정처럼 들리지만 실제로는 세 가지입니다.

- **프로토콜**: 클라이언트가 어떻게 인증하고 페이로드가 어떤 모습인지(VMess, VLESS, Trojan, Shadowsocks).
- **전송 방식**: 바이트가 어떻게 이동하는지(일반 TCP, WebSocket, gRPC 등).
- **보안**: 연결을 무엇으로 감싸는지(없음, TLS 또는 REALITY).

같은 프로토콜이라도 나머지 두 계층에 따라 거의 보이지 않을 수도, 쉽게 눈에 띌 수도 있습니다. 검열 측에 보이는 모습은 대부분 전송 방식과 보안이 결정합니다.

## 검열 측이 볼 수 있는 것

- **무작위처럼 보이는 바이트.** 일반 TCP 위의 Shadowsocks와 VMess에는 알아볼 수 있는 헤더가 없습니다. 이것 자체가 신호입니다. 2021년 말부터 만리방화벽(Great Firewall)은 첫 패킷이 완전히 암호화된 데이터처럼 보이는 연결을 차단해 왔습니다. 자세한 내용은 [중국 편](https://v2rc.app/ko/learn/china/)을 보세요.
- **TLS 핸드셰이크.** Trojan, 그리고 TLS 위의 VLESS나 VMess는 HTTPS처럼 보입니다. 그래도 검열 측은 서버 이름, IP 주소, 인증서, 연결이 동작하는 방식을 확인할 수 있습니다.
- **빌려 온 핸드셰이크.** REALITY는 사용자가 고른 실제 웹사이트의 TLS 핸드셰이크를 흉내 냅니다. 키가 없는 탐색 요청은 그 실제 사이트로 넘겨져 실제 페이지를 보게 됩니다. 도메인 이름이나 인증서를 직접 마련할 필요가 없습니다.

## 네 가지 프로토콜 한눈에 비교

| | VMess | VLESS | Trojan | Shadowsocks |
|---|---|---|---|---|
| 페이로드를 스스로 암호화함 | 예 | 아니요, TLS 또는 REALITY에 의존 | 아니요, TLS에 의존 | 예 |
| 기본적으로 보이는 모습 | 일반 TCP 위의 무작위 바이트 | 보안 설정에 따라 다름: 무작위 바이트, TLS 또는 REALITY | HTTPS | 무작위 바이트 |
| 직접 소유한 도메인과 인증서 필요 | TLS를 쓸 때만 | TLS를 쓸 때만, REALITY에서는 불필요 | 예 | 아니요 |
| 시계가 틀리면 실패함 | 예 | 아니요 | 아니요 | 아니요 |
| v2rc로 가져오기 | 가능 | 가능 | 가능 | 가능 |

- **VMess**는 V2Ray의 원래 프로토콜입니다. UUID와 타임스탬프로 인증하기 때문에, 휴대폰이나 서버의 시계가 몇 분만 어긋나도 오류 메시지 없이 실패합니다. alterId는 0(AEAD 모드)을 쓰세요. 0이 아닌 alterId는 구형 방식입니다.
- **VLESS**는 더 가벼운 후속 프로토콜입니다. 자체 암호화를 하지 않으므로 그 아래 계층만큼만 안전합니다. TLS나 REALITY와 함께 쓰고, 열린 인터넷에서 보안 `none`으로는 절대 쓰지 마세요.
- **Trojan**은 HTTPS를 그대로 따라 합니다. 평범한 TLS 연결 안에 비밀번호를 담는 방식입니다. 비밀번호를 모르는 클라이언트에게는 대신 평범한 웹 페이지를 보여 줍니다. 실제 도메인의 실제 인증서가 필요하며, 도메인은 차단될 수 있습니다.
- **Shadowsocks**는 오랫동안 쓰여 온 암호화 프록시이며 운영하기 가장 간단합니다. AEAD 암호를 쓰세요. `rc4-md5`나 `aes-256-cfb` 같은 구형 스트림 암호는 취약합니다. 플러그인이나 래퍼가 없으면 트래픽은 완전히 암호화된 종류입니다.

## REALITY와 Vision이 더하는 것

REALITY 설정에는 `security=reality`, 서버 이름(`sni`), 공개 키(`pbk`), 짧은 ID(`sid`)가 보입니다. 서버 이름은 TLS 1.3과 HTTP/2를 지원하는 실제 웹사이트여야 하며, [REALITY 문서](https://github.com/XTLS/REALITY)가 바로 그것을 요구합니다.

`flow=xtls-rprx-vision`은 Vision 플로우입니다. 다른 TLS 연결 안에 TLS 연결을 실으면 알아볼 수 있는 패턴이 남으며, 연구 문헌에서는 이를 TLS-in-TLS라고 부릅니다. [Xue et al. (USENIX Security 2024)](https://www.usenix.org/conference/usenixsecurity24/presentation/xue)는 이런 패턴이 난독화된 프록시를 드러낼 수 있음을 보였습니다. Vision은 그 자체가 HTTPS인 트래픽에서 이 패턴을 줄이도록 설계되었습니다.

둘 다 만능은 아닙니다. 서버의 IP 주소와 호스팅 네트워크는 여전히 중요하며, REALITY도 연결이 해외 데이터센터 주소로 향한다는 사실까지 숨겨 주지는 않습니다.

## 무엇을 요청할까

1. **제한적인 네트워크**(러시아, 이란, 중국 등)에서는 443 포트의 TCP 위에서 REALITY와 Vision을 쓰는 VLESS.
2. **종류가 다른 두 번째 설정:** Trojan, 또는 WebSocket이나 gRPC를 쓰는 TLS 위의 VLESS이며, 필요하면 CDN 뒤에 둡니다. CDN은 서버의 IP 주소를 숨겨 주지만, CDN 자체에 접속할 수 있어야 하고 사용자가 있는 곳에서 속도가 제한되지 않아야 합니다.
3. **열린 네트워크:** 네 가지 중 아무거나. 제공업체가 이미 지원하는 것을 쓰세요.
4. **제공업체가 구독을 준다면:** 직접 고를 수는 없지만, 링크를 읽어 무엇을 받았는지 알 수 있습니다. [설정 링크 읽는 법](https://v2rc.app/ko/learn/read-a-config-link/)을 보세요.
5. **서로 다른 호스트의 설정을 최소 두 개 보관하세요.** 하나가 실패하면 같은 서버의 다른 설정이 아니라 다른 IP 주소, 가능하면 다른 프로토콜이 필요합니다.

## v2rc가 가져올 수 있는 것과 없는 것

v2rc는 링크, V2Ray JSON 파일, 클립보드, 구독 URL에서 VMess, VLESS(REALITY 포함), Shadowsocks, Trojan을 가져옵니다. Hysteria 2, TUIC, WireGuard, AmneziaWG, NaiveProxy는 가져오지 않습니다. 앞의 네 가지는 UDP 위에서 동작하는데, 제한적인 네트워크 중 상당수가 UDP를 차단합니다. NaiveProxy는 HTTPS 위에서 동작하지만 전용 클라이언트가 필요합니다. 이런 프로토콜에는 다른 앱이 필요합니다.

v2rc에는 서버가 포함되어 있지 않으며, 설정은 직접 가져와야 합니다. Smart Connect는 가장 빠른 설정을 고른 뒤 전환하기 전에 터널이 실제로 트래픽을 통과시키는지 확인합니다.

## 출처

- [REALITY 문서](https://github.com/XTLS/REALITY)와 [Xray 설정 예시](https://github.com/XTLS/Xray-examples)
- [Trojan 프로토콜 설명](https://trojan-gfw.github.io/trojan/protocol)
- [Shadowsocks AEAD 사양](https://shadowsocks.org/doc/aead.html)
- Xue, Kallitsis, Houmansadr, Ensafi: [Fingerprinting Obfuscated Proxy Traffic with Encapsulated TLS Handshakes](https://www.usenix.org/conference/usenixsecurity24/presentation/xue), USENIX Security 2024
- Wu et al.: [How the Great Firewall of China Detects and Blocks Fully Encrypted Traffic](https://gfw.report/publications/usenixsecurity23/en/), USENIX Security 2023
