插图来源:Storyset
Q:flow 是什么东西? A:flow 是 VLESS 协议的一个参数,控制数据在传输层的"流动方式"。你可以把它理解成给这条"路"选择的"车道管理方案"。不同的 flow 值对应不同的传输优化策略。
Q:vision 是什么意思? A:vision 是目前最主流的 flow 取值。它的设计目标是:在保证隐蔽性的前提下,让数据传输更接近正常 TLS 流量的行为模式。名字里的 vision 有"洞察/前视"的意味,技术上它通过更智能的数据调度来减少可识别的传输特征。
Q:它解决什么问题? A:解决"裸奔"问题。早期的 VLESS 传输特征比较直白,有经验的识别系统能从流量模式上看出端倪。vision 这类 flow 模式通过打乱和重组数据包的发送节奏,让流量在统计特征上更接近普通的 HTTPS 浏览。
Q:订阅里看到 flow=xtls-rprx-vision,我需要做什么? A:什么都不用做。这是服务端配好的,客户端会自动按这个模式工作。你要做的只有一件事:确保客户端内核够新,能识别这个参数。太老的客户端会直接报错或忽略,导致连不上。
Q:flow 和 Reality 是什么关系? A:它们是互补的两层:Reality 负责握手阶段的"长相"伪装(见这篇),flow 负责传输阶段的"行为"伪装。一个管脸,一个管走路姿势,配合起来隐蔽性才完整。
Q:还有别的 flow 值吗? A:有过几个历史版本,但 vision 是目前事实上的标准。新订阅基本都是它,老教程里提到的其他值大多已经淘汰,不用纠结。
想了解 VLESS 协议本身,看VLESS 协议详解;Reality 的原理见这篇;不同传输方式的对比参考gRPC 传输科普。
Q:vision 这个名字有什么讲究? A:名字本身是开发者的命名习惯,不用过度解读。重要的是它代表的设计思路转变:不再只追求"把流量藏起来",而是让传输行为本身就长得像正常流量。代号会换,思路不会——理解"行为伪装"这个目标,比记住名字重要。
Q:为什么 vision 通常要和 TLS 一起用? A:概念层面可以这么理解:vision 的伪装逻辑,是建立在"外面是一层正常 TLS"这个假设之上的。没有 TLS 这层皮,里面的行为优化就无从谈起。所以你看到的节点参数里,vision 几乎总是和 TLS 绑定出现,看到 vision 就默认它外面套着 TLS,这个认知一般没错。
Q:“客户端内核够新"具体指什么? A:指的是客户端底层的核心程序(比如 Xray-core 这类负责实际传输的内核),而不是 App 界面的版本号。界面看着很新、内核半年没更新,照样可能不认识 flow 参数。连不上又怀疑是这个问题时,先去把客户端整体更新到新版,这是成本最低的排查动作。
Q:机场以后换了别的 flow 值,我要跟着改吗? A:不用你改。flow 是服务端和订阅统一配好的,订阅更新后会自动同步到你的客户端。自己手动去改节点参数里的 flow,十有八九会连不上——除非你确切知道自己在干什么。普通用户的正确姿势:看到 flow 参数,知道它是干什么的,然后别碰它。