简介
QUIC(Quick UDP Internet Connection)是谷歌制定的一种基于UDP的低时延的互联网传输层协议。
QUIC融合了包括TCP,TLS,HTTP/2等协议的特性,但基于UDP传输。
QUIC 协议可以在 1 到 2 个数据包(取决于连接的服务器是新的还是已知的)内,完成连接的创建(包括 TLS)
优势比较
使用
quic-go 是完全用 go 写的 QUIC 协议栈,开发很活跃,已在 Caddy 中使用
https://cloudflare-quic.com/ 这是一个quic协议网站?
搭建
我试着自己用Go搭一个:
-
go get -u github.com/lucas-clemente/quic-go
-
运行 go run example/main.go -www /var/www/
-
netstat -a 查看本地是否有udp6121端口
端口是开了,但是https或http都无法访问,没看懂。用下面的代码建服务器测试:
package main
import (
"github.com/lucas-clemente/quic-go/http3"
"net/http"
"fmt"
)
func main() {
http.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) {
_, _ = w.Write([]byte("hello quic"))
})
http.Handle("/", http.FileServer(http.Dir(".")))
err := http3.ListenAndServe("0.0.0.0:443",
"./x.scwy.net_ssl.crt",
"./x.scwy.net_key", nil)
fmt.Println(err)
}
我将微博做了一个测试,速度如何似乎不是很好测试。https://x.scwy.net:2443
我看到了响应头中Alt-Svc:h3-27。我再科普了一下:
Alt-Svc 全称为“Alternative-Service”,直译为“备选服务”。该头部列举了当前站点备选的访问方式列表
相关网文
在 Nginx 和 Golang web 上抢先体验 QUIC
新闻
2020.03.30 微软开源MsQuic,QUIC协议的跨平台实现微软
2020.04.03 微软宣布开源MsQuic:支持其产品内部 QUIC 数据连接
2019.11.04 Firefox 72 Nightly现已添加对HTTP/3的支持
其它
http3主要就是指的quic协议的升级,看起来各个golang的web框架也应该尽快动起来。