Quinn是IETF QUIC传输协议的纯野性,异步兼容的实现。该项目是由Dirkjan Ochtman和Benjamin Saunders在2018年作为一个附带项目创立的,此后已有30多个发行版。如果您在商业环境中使用Quinn,请考虑赞助该项目。
例子
$ cargo run --example server ./
$ cargo run --example client https://localhost:4433/Cargo.toml这将在服务当前工作目录的环回地址上启动HTTP 0.9服务器,并以客户端获取./Cargo.toml 。默认情况下,服务器生成一个自签名的证书并将其存储到磁盘上,客户端将自动找到并信任它。
链接
Quinn端点对应于单个UDP套接字,无论使用多少连接。处理单个端点上的高汇总数据速率可能需要比大多数环境中默认配置的更大的UDP缓冲区。如果您在稳定的网络链接上观察到不稳定的延迟和/或吞吐量,请考虑增加所使用的缓冲尺寸。例如,您可以在将其传递给Quinn之前调整UDP套接字的SO_SNDBUF和SO_RCVBUF选项。请注意,某些平台(例如Linux)需要提高特权或修改的系统配置,以增加其UDP缓冲区尺寸。
默认情况下,Quinn客户端验证其连接到的服务器的加密身份。这样可以防止主动的,路径攻击者拦截消息,但需要信任某些证书授权。出于许多目的,这可以通过使用Let's Encrypt中的服务器的证书来完成,并依靠客户端的默认配置。
在某些情况下,包括点对点,on trip-on-privt-on-pers-on trim tim discure申请,或任何未用域名识别服务器的情况,这是不实际的。可以通过启用rustls的dangerous_configuration功能并用手工构建Quinn ClientConfig来实现任意证书验证逻辑。
当操作自己的证书授权没有意义时,RCGEN可用于按需生成自签名的证书。为了支持自动生成自签名证书的服务器,应编写其生成的证书以持续存储并在将来的运行中重复使用它。
所有反馈欢迎。请随时提交错误,文档请求以及对问题跟踪器的任何其他反馈。
Quinn-Proto测试套件使用模拟IO进行可重复性,并避免在某些时间敏感的测试中长时间睡眠。如果设置了SSLKEYLOGFILE环境变量,则测试将使用Wireshark(例如Wireshark)等外部协议分析仪发射UDP数据包,并将每个连接客户端的NSS兼容的密钥日志写入该变量中指定的路径。
发行时,我们板条箱发行的最低支持的Rust版本将始终至少6个月大。