프록시 서비스의 노드 목록을 열어 보면 같은 서버에서 Shadowsocks, VMess, Trojan 등 여러 프로토콜을 선택할 수 있는 경우를 자주 보게 됩니다. 결국 하는 일은 "트래픽을 원격 서버로 전달한다"는 점에서 같지만, 내부 구현 방식이나 위장 능력, 사용 경험은 상당히 다릅니다. 이 글에서는 암호화 방식, 차단 우회 능력, 연결 속도, 설정 복잡도 네 가지 기준으로 체계적으로 비교하여 어떤 것을 선택해야 할지 판단할 수 있도록 도와드립니다.
01네 가지 프로토콜이란
- Shadowsocks(SS): 가장 오래되고 단순한 프로토콜입니다. 본질적으로 트래픽을 대칭키로 암호화해서 전달하는 방식으로, 오버헤드가 작고 빠릅니다. 초기 버전에서는 트래픽 패턴이 비교적 식별되기 쉬웠지만, 현재 주류 구현(AEAD 암호화 등)에서는 이 부분이 크게 개선되었습니다.
- VMess: V2Ray 프로젝트에서 제안한 프로토콜로, Shadowsocks를 기반으로 사용자 인증(UUID)과 더 유연한 전송 계층 위장(WebSocket, HTTP/2로 위장 등)을 추가했습니다. 차단 우회 능력은 더 강하지만 설정 항목도 다소 늘어납니다.
- Trojan: 완전히 다른 접근 방식으로, 트래픽을 표준 HTTPS/TLS 통신으로 위장해 네트워크 특성상 일반적인 웹 브라우징과 거의 구분되지 않습니다. 그래서 네 가지 중 차단 우회 능력이 가장 강한 것으로 평가되지만, 실제 TLS 인증서가 반드시 필요하다는 제약이 있습니다.
- Snell: Surge 개발자가 만든 프로토콜로, 클로즈드 소스지만 경량입니다. 설계 목표는 Shadowsocks와 비슷하지만 프로토콜 계층에서 최적화가 이루어졌고, 생태계는 주로 Surge/Clash 사용자층에 집중되어 있어 다른 세 가지에 비해 국제적인 보급도는 낮은 편입니다.
02네 가지 기준으로 비교
| 프로토콜 | 암호화 방식 | 차단 우회 능력 | 연결 속도 | 설정 복잡도 |
|---|---|---|---|---|
| Shadowsocks | 대칭키 암호화(AEAD) | 중간 | 가장 빠름, 오버헤드 최소 | 낮음, 항목이 가장 적음 |
| VMess | 대칭키 암호화 + UUID 인증 | 강함, 다양한 전송 위장 지원 | 중간, 헤더 검증으로 약간의 오버헤드 | 중간, 항목이 더 많음 |
| Trojan | 표준 TLS 암호화 | 가장 강함, 일반 HTTPS에 가까운 트래픽 특성 | 중간, TLS 핸드셰이크의 영향을 받음 | 중간, 유효한 인증서 필요 |
| Snell | 대칭키 암호화 | 중간 이상 | 빠름, Shadowsocks에 가까움 | 낮음, 다만 클로즈드 소스로 생태계가 작음 |
03어떤 것을 선택해야 할까
대부분의 경우 프로토콜을 고민할 필요조차 없습니다. 구독 링크에 이미 노드가 구성되어 있다면 그대로 사용하면 되고, 클라이언트가 프로토콜 세부사항을 자동으로 처리해 줍니다. 다만 직접 선택할 수 있는 상황이라면 아래를 참고하세요:
- 일상적인 웹 서핑과 동영상 시청이 중심이고 속도를 우선한다면: Shadowsocks나 Snell이 오버헤드가 가장 적어 유리합니다.
- 트래픽 검사가 엄격한 네트워크 환경에 있고 프로토콜이 식별될까 걱정된다면: Trojan이 일반 HTTPS 접속과 가장 유사합니다.
- 속도와 차단 우회 사이에서 균형을 원한다면: VMess를 WebSocket + TLS로 운용하는 것이 흔한 절충안입니다.
04여러 프로토콜을 함께 써도 되는가
전혀 문제없고, 오히려 흔한 방식입니다. 하나의 구독에 여러 프로토콜의 노드가 함께 포함되는 경우가 많으며, Clash는 이를 하나의 프록시 그룹으로 묶어 관리합니다. url-test 타입으로 설정하면 코어가 자동으로 지연이 가장 낮은 노드를 골라주기 때문에, 프로토콜 차이로 인한 체감 차이는 자동 속도 테스트 메커니즘이 상쇄해 주며 수동으로 구분할 필요가 없습니다.
05Clash 코어별 프로토콜 지원 차이
주의할 점은, 모든 Clash 클라이언트가 네 가지 프로토콜을 동등하게 지원하는 것은 아니라는 점입니다. 초기 오리지널 Clash 코어는 Shadowsocks, VMess 등 일부 프로토콜만 지원했고, Trojan, Snell 등은 이후 Clash Premium, Clash Meta(현재의 mihomo) 같은 포크에서 점차 추가되었습니다. 어떤 노드를 클라이언트에 가져온 뒤 사용할 수 없거나 "지원하지 않는 프로토콜 유형"이라는 메시지가 표시된다면, 먼저 현재 사용 중인 코어 버전이 비교적 최신의 mihomo 코어인지 확인해 보세요. 대부분의 문제는 클라이언트를 업데이트하면 해결됩니다.
06프로토콜 선택 시 흔한 오해
- 프로토콜이 새로울수록 좋다고 생각하는 것: VMess, Trojan은 Shadowsocks보다 나중에 나왔지만, "더 새로움"이 "당신에게 더 적합함"을 의미하지는 않습니다. 사용 중인 네트워크 환경이 검사가 그리 엄격하지 않다면, 오버헤드가 적은 Shadowsocks가 오히려 더 나은 체감을 줄 수 있습니다. 필요하지도 않은 차단 우회 능력을 위해 속도를 희생할 필요는 없습니다.
- 서버 자체의 품질을 간과하는 것: 프로토콜은 트래픽의 위장과 암호화 방식만을 결정합니다. 실제로 속도와 안정성을 좌우하는 것은 대개 서버의 대역폭, 회선 품질, 노드 수입니다. 같은 프로토콜이라도 서비스 제공업체에 따라 체감이 완전히 다를 수 있습니다.
- 무작정 "가장 강력한 차단 우회"만 추구하는 것: Trojan은 차단 우회 능력이 강하지만 유효한 TLS 인증서와 도메인에 의존하기 때문에 설정 진입장벽도 높아집니다. 그냥 인터넷을 원활하게 쓰고 싶은 대다수 사용자에게는 프로토콜 종류에 집착하기보다 안정적인 구독 서비스를 고르는 것이 훨씬 중요합니다.