(摘) 自我扫盲:Quic协议

声明:内容源自网络,版权归原作者所有。若有侵权请在网页聊天中联系我

简介

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搭一个:

  1. go get -u github.com/lucas-clemente/quic-go

  2. 运行 go run example/main.go -www /var/www/

  3. 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”,直译为“备选服务”。该头部列举了当前站点备选的访问方式列表

相关网文

聊聊QUIC

QUIC的五大特性及外网表现

在 Nginx 和 Golang web 上抢先体验 QUIC

利用HTTP/2与HTTP/3 给你的网站提速

新闻

2020.03.30 微软开源MsQuic,QUIC协议的跨平台实现微软

2020.04.03 微软宣布开源MsQuic:支持其产品内部 QUIC 数据连接

2019.11.04 Firefox 72 Nightly现已添加对HTTP/3的支持

其它

http3主要就是指的quic协议的升级,看起来各个golang的web框架也应该尽快动起来。