/블로그/프로토콜 비교
프로토콜

Shadowsocks, VMess, Trojan, Snell 프로토콜 비교: 어떤 것을 선택해야 할까

발행일 2026-05-20 · 읽는 시간 약 10분 · Clash / mihomo 코어 사용자 대상

프록시 서비스의 노드 목록을 열어 보면 같은 서버에서 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어떤 것을 선택해야 할까

대부분의 경우 프로토콜을 고민할 필요조차 없습니다. 구독 링크에 이미 노드가 구성되어 있다면 그대로 사용하면 되고, 클라이언트가 프로토콜 세부사항을 자동으로 처리해 줍니다. 다만 직접 선택할 수 있는 상황이라면 아래를 참고하세요:

  • 일상적인 웹 서핑과 동영상 시청이 중심이고 속도를 우선한다면: ShadowsocksSnell이 오버헤드가 가장 적어 유리합니다.
  • 트래픽 검사가 엄격한 네트워크 환경에 있고 프로토콜이 식별될까 걱정된다면: Trojan이 일반 HTTPS 접속과 가장 유사합니다.
  • 속도와 차단 우회 사이에서 균형을 원한다면: VMess를 WebSocket + TLS로 운용하는 것이 흔한 절충안입니다.
팁: Clash의 config.yaml에서는 프로토콜마다 노드 작성 필드가 다릅니다(VMess는 uuidalterId, Trojan은 passwordsni가 필요). 하지만 이런 값은 보통 구독 링크에서 자동으로 생성되므로 일반 사용자가 직접 작성할 필요는 없습니다. 필드의 의미를 알아두면 주로 설정을 이해하거나 연결 문제를 진단할 때 도움이 됩니다.

04여러 프로토콜을 함께 써도 되는가

전혀 문제없고, 오히려 흔한 방식입니다. 하나의 구독에 여러 프로토콜의 노드가 함께 포함되는 경우가 많으며, Clash는 이를 하나의 프록시 그룹으로 묶어 관리합니다. url-test 타입으로 설정하면 코어가 자동으로 지연이 가장 낮은 노드를 골라주기 때문에, 프로토콜 차이로 인한 체감 차이는 자동 속도 테스트 메커니즘이 상쇄해 주며 수동으로 구분할 필요가 없습니다.

05Clash 코어별 프로토콜 지원 차이

주의할 점은, 모든 Clash 클라이언트가 네 가지 프로토콜을 동등하게 지원하는 것은 아니라는 점입니다. 초기 오리지널 Clash 코어는 Shadowsocks, VMess 등 일부 프로토콜만 지원했고, Trojan, Snell 등은 이후 Clash Premium, Clash Meta(현재의 mihomo) 같은 포크에서 점차 추가되었습니다. 어떤 노드를 클라이언트에 가져온 뒤 사용할 수 없거나 "지원하지 않는 프로토콜 유형"이라는 메시지가 표시된다면, 먼저 현재 사용 중인 코어 버전이 비교적 최신의 mihomo 코어인지 확인해 보세요. 대부분의 문제는 클라이언트를 업데이트하면 해결됩니다.

06프로토콜 선택 시 흔한 오해

  • 프로토콜이 새로울수록 좋다고 생각하는 것: VMess, Trojan은 Shadowsocks보다 나중에 나왔지만, "더 새로움"이 "당신에게 더 적합함"을 의미하지는 않습니다. 사용 중인 네트워크 환경이 검사가 그리 엄격하지 않다면, 오버헤드가 적은 Shadowsocks가 오히려 더 나은 체감을 줄 수 있습니다. 필요하지도 않은 차단 우회 능력을 위해 속도를 희생할 필요는 없습니다.
  • 서버 자체의 품질을 간과하는 것: 프로토콜은 트래픽의 위장과 암호화 방식만을 결정합니다. 실제로 속도와 안정성을 좌우하는 것은 대개 서버의 대역폭, 회선 품질, 노드 수입니다. 같은 프로토콜이라도 서비스 제공업체에 따라 체감이 완전히 다를 수 있습니다.
  • 무작정 "가장 강력한 차단 우회"만 추구하는 것: Trojan은 차단 우회 능력이 강하지만 유효한 TLS 인증서와 도메인에 의존하기 때문에 설정 진입장벽도 높아집니다. 그냥 인터넷을 원활하게 쓰고 싶은 대다수 사용자에게는 프로토콜 종류에 집착하기보다 안정적인 구독 서비스를 고르는 것이 훨씬 중요합니다.