Hysteria是一款由go编写的非常优秀的“轻量”代理程序,可以针对恶劣环境进行优化的网络工具,比如卫星网络,公共WIFI等,基于修改版的QUIC协议。
我们所熟知的HTTP协议在目前,主流使用的网络协议是HTTP/1.1和HTTP/2。HTTP是一种用于传输超文本的协议,它通过TCP连接在客户端和服务器之间进行通信。
这两种协议在目前并不算新,最新的网络协议是HTTP/3协议,它采用了QUIC协议,相较于HTTP/2,它拥有:
- 更快的传输速度
- 更好的性能:包括支持多路复用,头部压缩等技术
- 更加安全:提供更好的安全性能
2022年6月6日,IETF正式标准化HTTP/3为RFC9114
原项目提供的bench由于图床裂了,找不见,这里放一张网图bench:
随着众多网站和 CDN 的支持,基于 QUIC 的 HTTP/3 正越来越流行。长远来看 UDP 将会替代 TCP 成为承载 Web 流量的主流协议。
QUIC提要
QUIC(读作“quick”)是一个通用的传输层网络协议,最初由Google的Jim Roskind设计。该协议于2012年实现并部署,虽然长期处于互联网草案阶段,但从Chrome浏览器至Google服务器的连接中超过一半的连接都使用了QUIC。其他的大部分浏览器也已经都支持此协议,但可能默认情况下并没有启用。
以往的TCP协议中,TCP会将连接上的任何错误视为阻塞,从而停止进一步传输,哪怕是一个无关痛痒的小错误,TCP设计时被刻意的设计成不知晓其中传输细节的系统,如若对传输的数据有额外要求,比如TLS加密,那么必须要在TCP上层实现,这种上层的协议之间频繁握手,需要大量的交换数据,无疑增大了开销。
而QUIC旨在提供几乎等同于TCP连接的可靠性,使用UDP作为基础,每一个QUIC流是单独控制的,这就表明,在实际运用中,哪怕一个流中出现错误,任然可以为其他流提供服务。并且QUIC实现了自己的流量控制机制,弥补了UDP中没有流量控制的缺点。
部署使用
抛去不是特别复杂的操作环节,搭建好后的Hysteria该如何部署呢?
Linux
- Docker
- Arch Linux AUR
Windows,macOS
- v2rayN(Windows GUI)
- Clash.Meta
- NekoRay(macOS)
这里的NekoRay中可以选择sing-box核心,sing-box是全新的下一代通用代理平台,支持Hysteria
而v2rayN中需要导入额外的核心
IOS,Android
- Shadowrocket(IOS)
- Clash Meta for Android(Android)
也有其他的方式,但不出意外都需要导入额外的核心,有点麻烦
虽然 Hysteria 支持 UDP 转发,其并不会降低丢包率。 换句话说,目前用 Hysteria 代理 HTTP/3 这样的 QUIC 流量时不会有额外加速效果,传输速度只能由 Web 服务器与浏览器内置的 QUIC 栈的拥塞控制自己决定(通常是 Cubic, Reno 或者 BBR)
最后,使用中遇到的问题可以去官方文档处查看,目前已经到了Hysteria2,欢迎体验。