VMess、VLESS、Trojan、Shadowsocks 代理協定比較:四種協定的使用情境與選擇指南

從握手方式、偽裝能力、效能負擔與客戶端相容性四個面向比較主流代理協定,提供不同網路環境與裝置條件下的選擇參考,不評判優劣,只說明適用情境。

本文速覽

本文適合正在查看訂閱節點名稱、準備部署伺服器端或排查協定相容性問題的使用者。重點是釐清協定、傳輸方式與安全層各自負責的功能,據此判斷 VMess、VLESS、Trojan、Shadowsocks 是否適合目前的裝置與網路條件。

先釐清協定、傳輸方式與安全層

VMess、VLESS、Trojan 和 Shadowsocks 首先都是用於在客戶端與伺服器端之間交換代理資料的協定。節點名稱中經常同時出現 WebSocket、gRPC、TCP、TLS、Reality 等欄位,但這些欄位並不全是協定名稱。WebSocket、gRPC 與 TCP 說明資料如何承載,TLS 與 Reality 負責連線安全或握手表現,而網域、連接埠與路徑則屬於連線參數。

同一種協定可以搭配不同的傳輸方式。例如 VMess 可以承載於 TCP 或 WebSocket 上,VLESS 則能與 TCP、gRPC 及不同安全層組合。比較協定時若忽略這些組合條件,很容易把 WebSocket 的額外封裝負擔算在 VMess 本身,或將某種安全層的特徵全部歸因於 VLESS。

Trojan 的典型部署依賴 TLS,握手失敗時通常應先檢查網域、伺服器時間、憑證狀態與連接埠,而不是立即判定節點失效。Shadowsocks 使用獨立的加密方法保護代理資料,但目標並非模擬完整的網站瀏覽流程。它的設定項目少、實作成熟,是否適用主要取決於伺服器端提供的加密方法,以及客戶端核心的支援情況。

協定 身分識別與握手重點 常見組合 排查時先檢查什麼
VMess 使用者識別碼、時間同步、AEAD 資料處理 TCP、WebSocket、gRPC,可疊加 TLS 使用者識別碼、系統時間、傳輸參數
VLESS 輕量身分驗證,協定本身不負責內容加密 TCP、WebSocket、gRPC,可搭配 TLS 或 Reality 安全層、流控值、伺服器端與核心支援
Trojan 密碼驗證與 TLS 連線 通常為 TCP 與 TLS 網域、連接埠、TLS 握手、伺服器時間
Shadowsocks 預先共用密碼與指定的加密方法 通常直接執行於 TCP、UDP 上 加密方法、密碼、UDP 設定

四種協定的握手與相容範圍

VMess 在 V2Ray 生態系中使用與時間相關的驗證及使用者識別碼。現代設定通常採用 AEAD 模式,舊教學中將 alterId 設為較大數值的做法,已不適合作為新設定的基準。若客戶端記錄出現驗證失敗,而同一節點在其他裝置上也無法連線,應檢查伺服器端與終端裝置的系統時間是否有明顯偏差,並確認訂閱更新後使用者識別碼是否有所變更。

VLESS 簡化了協定層的資料處理,將安全責任交給外部安全層。這不等於「未加密連線」:實際安全性取決於完整的組合。使用公開網路連線時,應完整核對 TLS、Reality 或伺服器端指定的其他安全參數。只複製網址、連接埠與使用者識別碼,遺漏 serverName、publicKey、shortId 或 flow 等欄位,都可能導致握手失敗。

Trojan 的設定結構相對直觀,常見核心欄位包括伺服器位址、連接埠、密碼、網域與 TLS 相關選項。它對網域解析與 TLS 設定較為敏感。Shadowsocks 的關鍵欄位則是伺服器、連接埠、密碼與加密方法;只要客戶端或伺服器端其中一方不支援訂閱指定的方法,就可能啟動失敗或在連線後立即中斷。

VMess

在現有訂閱中的涵蓋範圍廣,適合繼續使用已穩定運作的 VMess 節點,不必只因協定名稱較早出現就遷移。

適合:既有服務、WebSocket 部署、延續相容性

VLESS

推薦

協定層較精簡,能與 Xray 核心提供的安全層及流控能力組合,適合作為支援條件明確的新部署基準。

適合:新部署、參數可控、桌面與 Android 共用訂閱

Trojan

連線結構以 TLS 為核心,欄位較容易理解,但網域與 TLS 設定必須保持一致。

適合:已有網域與 TLS 環境、偏好簡潔設定

Shadowsocks

設定項目少、實作成熟,適合伺服器端明確提供受支援加密方法的輕量情境。

適合:資源受限裝置、簡單代理、UDP 需求明確

偽裝能力不能只看協定名稱

「哪種協定更像正常流量」不是一個脫離設定就能回答的問題。VMess 或 VLESS 透過 WebSocket 與 TLS 傳輸時,外部觀察到的是相應的 TCP、TLS 與 HTTP 升級行為;Trojan 的常見組合本身建立在 TLS 連線上;Shadowsocks 則更著重於加密代理傳輸。實際表現還會受到連接埠、網域、握手參數、伺服器回應與網路路徑影響。

連接埠號也不能單獨證明流量類型。443 常用於 TLS,但將任意協定改到 443 並不會自動取得正確的 TLS 握手。相反地,若伺服器端明確監聽 8443、2053 或其他連接埠,客戶端就必須使用訂閱提供的精確值。自行將連接埠改成 443,通常會導致連線遭拒或在握手階段中斷。

在受控的伺服器端環境中,部署者可以依現有條件選擇組合;訂閱使用者則應優先保留下發參數的完整性,不要為了「最佳化」而刪除路徑、網域、指紋、流控或安全層欄位。節點已經可用時,協定名稱通常不是第一個需要調整的項目;延遲、封包遺失、伺服器負載與線路繞行對使用體驗的影響更直接。

推薦方案:桌面與 Android 共用一條相容訂閱

桌面版(v2rayN)
  • 使用訂閱指定的 Xray 核心設定
  • 更新訂閱後執行一次真實連線延遲測試
  • 在記錄中確認安全層與流控參數已載入
Android 版(v2rayNG)
  • 匯入同一條訂閱並保留完整欄位
  • 先測試同名節點,再比較行動網路結果
  • 需要時依應用程式設定代理範圍

前提是訂閱服務同時向兩端回傳相容節點;同名節點在不同網路下仍可能出現不同的延遲與封包遺失率。

結論:先核對完整組合,再比較協定

協定名稱只決定連線的一部分。網域、連接埠、傳輸方式、安全層與核心版本只要有一項不相符,就足以讓原本可用的節點變成握手失敗。

效能負擔要在相同線路下測量

協定效能不能用一次測速就下結論。伺服器位置、入口頻寬、尖峰時段壅塞、TCP 壅塞控制、傳輸封裝與終端處理能力都會改變結果。要比較四種協定,至少應讓節點位於同一台伺服器或同一機房,保持出口線路、測試檔案與測速時段一致,並重複多輪後取中位數。

以下是一組用於說明測試方法的受控基準:客戶端透過有線網路連線,接入頻寬限制為 300 Mb/s,至伺服器的空載往返延遲為 41 ms,平均封包遺失率為 0.2%,每種協定連續傳輸 10 分鐘。測試組合分別為 VMess + WebSocket + TLS、VLESS + TCP + Reality、Trojan + TLS 以及 Shadowsocks 2022。

300 Mb/s
客戶端接入上限
41 ms
伺服器空載往返延遲
0.2%
測試期間平均封包遺失率
10 分鐘
每種組合的持續傳輸時間

在此環境下,四組下載中位數分別為 268 Mb/s、286 Mb/s、281 Mb/s 與 289 Mb/s。這項結果只能說明在低封包遺失率、頻寬尚未飽和的特定環境中,四組設定都能接近接入上限;不能推導出 Shadowsocks 在其他線路上必然最快。VMess 組合中的 WebSocket 封裝、VLESS 組合中的安全層,以及不同的伺服器端實作,都會參與最終結果。

真實連線延遲也要與 ICMP Ping 區分。Ping 只反映網路層往返時間,真實連線延遲還包括代理握手、安全層協商與目標連線。某節點 Ping 為 45 ms、真實連線延遲為 92 ms 並不異常;若真實連線延遲持續超過 800 ms 或直接逾時,再結合核心記錄判斷問題出在握手、解析還是伺服器回應。

結論:差距小於網路波動時不必更換協定

同一線路重複三輪的吞吐量差異若低於 10%,應優先選擇連線穩定、客戶端完整支援且訂閱參數維護正常的節點,而不是依單輪峰值進行遷移。

依情境選擇,而不是按名稱排列優先順序

對於已穩定運作的訂閱,最直接的選擇方法是先更新訂閱,再對同一地區的節點執行真實連線延遲測試。若 VMess 節點連續多日可用、延遲穩定且頻寬符合需求,沒有必要只為了更換協定而調整。協定遷移通常還會涉及伺服器端、防火牆、網域解析與訂閱產生規則,變更成本也應納入判斷。

新部署且兩端都使用較新 Xray 核心時,可以優先評估 VLESS 與合適安全層的組合。已有規範的 TLS 環境時,Trojan 的參數結構便於核對。資源較有限、設定要求簡單,且伺服器端明確支援對應加密方法時,Shadowsocks 仍有適用空間。需要維持較早的 V2Ray 伺服器端設定時,VMess 更容易延續現有參數。

  1. 在 v2rayN 7.x 中更新訂閱群組,確認節點名稱、位址、連接埠與協定欄位已重新整理。
  2. 選擇同一地區的不同協定節點,分別執行真實連線延遲測試,每個節點至少重複三次。
  3. 開啟核心記錄,排除驗證失敗、TLS 握手失敗、網域解析失敗與連接埠遭佔用等問題。
  4. 使用同一個目標檔案進行持續下載,記錄 1 分鐘後的穩定速度,不採用啟動瞬間的峰值。
  5. 切換到日常使用的網路後再測試一次;固定寬頻與行動網路的路由不同,桌面版結果不能直接取代 Android 版結果。
本機 SOCKS 監聽:127.0.0.1:10808
本機 HTTP 監聽:127.0.0.1:10809
測試輪次:每個節點 3 次
單次逾時:10 秒
記錄項目:真實連線延遲、下載中位速度、斷線次數、核心記錄錯誤

本機連接埠應以目前客戶端介面顯示的值為準。若需要核對,可進入「設定」→「參數設定」查看本機監聽設定。10808 與 10809 是常見範例值,不同版本或既有設定可能使用其他連接埠。瀏覽器或系統代理填寫的連接埠,必須與客戶端實際監聽的值一致。

常見選擇與排錯問題

協定選擇最終應落實為可執行的檢查:客戶端能否解析訂閱欄位、核心是否支援該組合、目前網路能否完成握手,以及持續傳輸是否穩定。以下幾類問題,比「哪種協定最好」更接近日常使用中的實際判斷。

訂閱中四種協定都有,第一步該選哪個?

先依地區篩選,再從每種協定各選一個節點,執行三次真實連線延遲測試。排除逾時節點後,使用同一目標連續下載 3 分鐘,選擇延遲波動小、不中斷且速度符合用途的節點。

VLESS 節點匯入成功卻一直逾時,該怎麼辦?

展開節點設定,逐項核對連接埠、傳輸方式、安全層、serverName、publicKey、shortId 與 flow。接著查看核心記錄;若出現不支援參數,請更新客戶端核心;若出現握手失敗,則檢查伺服器時間與網域設定。

Trojan 可以連線,但瀏覽器網頁打不開?

先確認 v2rayN 的系統代理已啟用,再進入「設定」→「參數設定」檢查本機監聽連接埠。若記錄顯示 10808 或 10809 已被佔用,請關閉佔用程式或改用未被佔用的連接埠,然後重新啟動核心。

Shadowsocks 顯示不支援加密方法,該如何處理?

不要自行替換加密方法,因為伺服器端必須使用相同設定。先更新訂閱與客戶端核心;若仍無法識別,請改選訂閱中目前核心能處理的節點,或使用伺服器端明確提供的相容設定。

桌面版可用,Android 版的同一節點卻失敗?

確認兩端的訂閱更新時間一致,並比較節點的完整欄位。v2rayNG 與 v2flyNG 使用不同核心,新式安全層或流控參數可能存在版本支援差異;同時關閉行動網路的數據節省限制後再測試。

簡化後的選擇規則是:既有設定穩定就繼續使用;新部署先確認兩端核心能力;TLS 條件完整時評估 Trojan;設定輕量且加密方法明確時評估 Shadowsocks。任何協定都應透過真實連線延遲、持續下載與記錄三項結果共同確認,而不是只看節點名稱。

下載v2rayN