Hysteria

本页使用了标题或全文手工转换
维基百科,自由的百科全书
Hysteria
原作者tobyxdd
光圈互联网实验室(Aperture Internet Laboratory)
首次发布0.0.1 (2020年4月23日,​4年前​(2020-04-23)[1]
当前版本2.4.3 (2024年4月29日,​2天前​(2024-04-29
源代码库https://github.com/apernet/hysteria
编程语言Go
操作系统类Unix系统
Microsoft Windows
平台ARM、X86、X86-64、MIPS、MIPSLE、RISC-V64等
类型代理服务器
突破网络审查
自由软件
应用软件
许可协议MIT
网站https://hysteria.network/

Hysteria是由美国非营利组织光圈互联网实验室(Aperture Internet Laboratory)及其社区团队开发的反审查工具。Hysteria能将代理流量伪装成HTTP/3, 并使用专门的拥塞控制算法确保传输速度。Hysteria主要使用Go语言开发,采用MIT许可证开放源代码

运行原理

与其它代理工具相似,Hysteria使用特定的中转服务器完成数据传输。Hysteria由服务端和客户端两部分组成。运行在中转服务器上的Hysteria服务端首先监听一个HTTP/3服务,等待客户端连接以及发送认证凭据。服务端仅会在凭据验证通过后启用代理功能。如果没有收到认证凭据或者收到了错误的凭据,服务端会将自己伪装成一个正常的HTTP/3服务器[2]

在成功建立与中转服务器的连接之后,Hysteria客户端会在本机构建一个本地SOCKS5代理(或HTTP、透明代理等)。客户端通过该本地代理收集其它应用程序(如网页浏览器)的网络流量,并转发给服务端。

Hysteria服务端与客户端之间的所有通信皆通过HTTP/3内置的TLS进行加密,并利用HTTP/3内置的多路复用功能将多个连接的流量通过单个HTTP/3连接发送。

特点

抗审查能力

利用HTTP/3协议的特点,Hysteria的流量难以被中间人解密、篡改、主动探测和封锁。Hysteria服务器还可将自己伪装成一个同时提供明文HTTP、HTTPS以及HTTP/3服务的正常网站,具有一定的隐蔽性。

传输速度

Hysteria内置了一个名为brutal(直译为「野蛮」)的拥塞控制算法。与传统的拥塞控制算法不同,该算法不会从延迟和丢包估算可用带宽,而采用由用户手动设置的带宽来发包。因此在较差的网络环境中仍然能保持较高的传输速度。

缺陷

资源占用多

Hysteria在特殊情况下可能会持续占用较多的CPU资源[3],这可能违反某些VPS提供商用户协议中的「合理使用」政策,从而造成用于运行Hysteria服务端的VPS被服务商停用或者删除。

来自运营商和国家防火墙的干扰

Hysteria传输所使用的HTTP/3基于UDP协议。在中国大陆,基于UDP的协议被互联网服务提供商基于QoS原因限制速度。

在一部分国家(如伊朗), UDP流量受到严格的限制[4],导致Hysteria在这些国家中难以正常使用。

2023年1月,一部分HostLoc论坛用户曾报告Hysteria协议被GFW针对性封锁[5]

衍生项目

TCP Brutal

TCP Brutal是Hysteria的「brutal」拥塞控制算法的TCP移植版本[6]。它被实现成一个Linux内核模块,并在GPLv2协议下开放源代码。在载入该内核模块之后,应用程序(例如修改过的翻墙软件)可以设置指定TCP连接的带宽参数并启用加速。TCP Brutal亦提供DKMS支持,以实现在内核更新时自动重新编译。

争议与批评

多倍发包

尽管Hysteria并不是通过发送多倍的数据包来提高速度[7],但仍然有一些人了解到Hysteria 2 的拥塞控制算法会根据丢包率补偿发包,因此而产生对于可能产生的额外的网络流量开销对用户造成的潜在损失的担心。

占用带宽的道德问题

2023年11月,在TCP Brutal发布之时,早期TCP规范起草人之一,David P. Reed英语David P. Reed曾对其发表过严厉的批评[8]

Hysteria的作者 tobyxdd 曾写过一篇文章,对这些批评作出回应[9]

註釋

  1. ^ 指 TCP Brutal

参考资料

  1. ^ v0.0.1. GitHub. 2020-04-23 [2024-04-28]. 
  2. ^ Hysteria 2 Protocol Specification. Hysteria. 2024-03-05 [2024-04-28]. If authentication fails, the server MUST either act like a standard web server that does not understand the request 
  3. ^ 做客户端使用一段时间后,CPU占用会很高 · Issue #360 · apernet/hysteria. GitHub. [2024-05-01]. 
  4. ^ A report on Iran's GFW. GitHub. 2023-05-22 [2024-04-28]. 
  5. ^ 有使用hysteria被疯的兄弟吗?关于hysteria和naiveproxy. HostLoc论坛. 2023-01-14 [2024-04-28]. 
  6. ^ TCP Brtual 项目介绍. GitHub. 2023-11-18 [2024-04-28]. 
  7. ^ Hysteria 是多倍发包吗?. Hysteria. 2023-11-09 [2024-04-28]. Hysteria 不会在任何情况下主动对一份数据进行多次发送,只有在检测到丢包时才会对丢失的部分进行重传 
  8. ^ 可恶的 TCP 加速算法. 知乎. 2023-11-10 [2024-04-28]. 
  9. ^ My response to the recent controversy about TCP Brutal. 2023-11-10 [2024-04-28]. 

外部链接