Shadowrocket 部落格 · 原理科普

從 Shadowsocks 到 VLESS:
代理協定為什麼一直在換。

節點清單裡經常能看到 Shadowsocks、VMess、VLESS、Trojan 這幾種協定名稱混在一起,很多人選節點時只看速度,從不關心協定本身是什麼。這篇文章依大致時間線梳理這幾種協定的設計思路差異,幫助理解節點資訊裡的「協定」這一項到底代表什麼。

協定在 Shadowrocket 裡到底管什麼

新增節點或查看訂閱內容時,每個節點資訊裡都會標一個協定類型,比如 ss(Shadowsocks)、vmessvlesstrojan。這個欄位決定的是用戶端和伺服器之間用什麼方式打包、加密、傳輸資料——不同協定在加密強度、流量特徵、連線效率上各有取捨,但對使用者來說,日常操作(選節點、連線、看速度)是完全一樣的,協定差異主要體現在穩定性和被識別的機率上。Shadowrocket 作為用戶端,同時相容以上幾種主流協定,具體使用哪一種,取決於你匯入的節點或訂閱提供的是哪種類型。

幾種協定的大致時間線

協定大致出現時間設計思路
Shadowsocks2010 年前後思路很簡單:只做加密轉發,協定盡量輕量,用戶端和伺服器實作都不複雜
VMess2017 年前後在 Shadowsocks 的基礎上加入了使用者身分校驗(UUID)、協定層自帶加密、時間戳防重放等更完整的機制
Trojan2019 年前後思路轉向「偽裝」:讓代理流量在外觀上盡量接近正常的 HTTPS 網頁造訪流量
VLESS2020 年前後把協定層的加密拿掉,只保留身分校驗,加密完全交給外層的 TLS 連線來做,協定本身變得更輕

可以看出一個大致的演進方向:從「協定自己把內容加密好」,逐漸轉向「協定盡量簡單,把安全性交給更標準、更難被特別對待的外層傳輸方式(比如 TLS)去處理」。

為什麼舊協定會顯得「過時」

這幾種協定之間不是簡單的「後出的更好」,而是各自在解決上一代協定暴露出的問題:

這也是為什麼「協定」和「是否安全」不能簡單畫等號——同一個協定,設定方式不同,實際表現也會不同;相對新的協定往往設計上更成熟,但也不是設定了就一定萬無一失。

作為 Shadowrocket 使用者,需要自己判斷協定嗎

絕大多數情況下不需要。協定類型是由你使用的訂閱服務商決定的,節點資訊裡已經寫明了協定種類,Shadowrocket 會依對應協定自動完成連線,不需要使用者手動選擇「用哪種協定連線」。這篇文章的意義更多是幫助理解「為什麼同一家服務商的訂閱裡,有時候會同時提供好幾種協定的節點」——通常是為了在不同網路環境下提供更多可選方案,而不是讓使用者從中隨意挑選一個「更快」的。

如果你在意某類協定的相容性問題(比如某個協定在目前網路環境下連線總是不穩定),比較實際的做法是在同一批節點裡改用另一種協定類型試一下,而不是糾結協定本身孰優孰劣——伺服器的部署品質往往比協定選擇本身影響更大。

這篇文章會不會幫你選協定?

不會,也不建議這樣理解。協定是節點資訊裡已經確定好的屬性,本站的立場和其他文章一致:不代理、不推薦任何特定訂閱服務商,這篇文章只是解釋協定名稱背後的技術差異,方便你看懂節點清單裡的資訊,不構成「哪種協定更好」的選購建議。

說明:本文協定演進資訊基於公開的技術資料整理,具體協定實作細節以對應開源專案的官方文件為準,本文不涉及任何特定訂閱服務商的評價。

還沒下載 Shadowrocket? 用戶端本身相容以上所有主流協定,App Store 一次買斷 $2.99
查看下載指南 →