Hysteria

本页使用了标题或全文手工转换
维基百科,自由的百科全书
Hysteria
原作者tobyxdd
光圈互联网实验室(Aperture Internet Laboratory)
首次发布0.0.1 (2020年4月23日,​4年前​(2020-04-23)[1]
当前版本2.4.3 (2024年4月29日,​8天前​(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主要使用Go语言开发,采用MIT许可证开放源代码。Hysteria使用HTTP/3作为代理隧道的传输协议, 并使用专门的拥塞控制算法确保传输速度。

运行原理

Hysteria由服务端和客户端两部分组成。与其它代理工具相似,Hysteria也使用中转服务器进行数据转发。

运行在中转服务器上的Hysteria服务端首先监听一个HTTP/3服务,等待客户端连接以及发送认证凭据。服务端仅会在凭据验证通过后启用代理功能。如果没有收到认证凭据或者收到了错误的凭据,服务端会将自己伪装成一个正常的HTTP/3服务器[2]

在成功建立与中转服务器的连接之后,Hysteria客户端会在本机创建一个本地SOCKS5代理(或HTTP、透明代理等)。客户端通过该本地代理收集其它应用程序(如网页浏览器)的网络流量,并转发给服务端。最终由服务端将其他应用程序的流量转发到目标IP地址。从而使本地的其他应用程序可以连接到目标。

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

特点

反审查能力

由于将代理流量封装在标准HTTP/3协议的隧道中传输,并且Hysteria服务端还可将自己伪装成一个同时提供明文HTTP、HTTPS以及HTTP/3服务的正常网站,因此Hysteria的流量较难以被中间人检测和封锁。

传输速度

Hysteria 内置了一种名为 Brutal 的拥塞控制算法,该算法与传统的拥塞控制算法不同,它不会根据延迟和丢包来估算可用带宽,而是采用用户手动设置的带宽来发送数据包。因此,即使在网络环境较差的情况下,Hysteria 仍然能够保持一定的传输速度。

缺陷

资源占用多

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

第三方干扰

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

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

2023年1月,有人曾报告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曾对其发表过严厉的批评。

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

註釋

  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. ^ My response to the recent controversy about TCP Brutal. 2023-11-10 [2024-04-28]. 

外部链接