HTTP/1.0、HTTP/1.1和HTTP/2.0
HTTP/1.0、HTTP/1.1和HTTP/2.0
前言
面试经常会问HTTP/1.0和HTTP/2.0的区别,所以就准备配一下HTTP/2.0,HTTP协议是配置在Web服务器中的,拿tomcat试试手。
Tomcat 9配置HTTP/2.0
运行tomcat,访问http:localhost:8080
,通过开发者工具可以看到protocol
一栏是http/1.1
表示使用的是HTTP/1.1协议。没有protocol
这一栏的话,可以右键属性栏,然后可以选择
生成证书
目前浏览器想要使用HTTP/2.0,必须要开启SSL,所以先要获取证书
windows系统可以参考tomcat + http2.0配置https://www.kancloud.cn/pimingzhao/web_serve/1414096
我是使用了Windows Terminal
,搭建了Linux环境,这样就可以直接使用Linux命令了。
# 如果是Ubuntu系统
openssl genrsa -out server.key 2048
openssl rsa -in server.key -out server.key
openssl req -new -x509 -key server.key -out ca.crt -days 3650
将生成的ca.crt
和server.key
复制到tomcat的config目录下
打开tomcat的配置文件server.xml
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
certificateFile="conf/localhost-rsa-cert.pem"
certificateChainFile="conf/localhost-rsa-chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
-->
将这一段改为
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<!--主要是这里更改证书的路径 -->
<Certificate certificateKeyFile="conf/server.key"
certificateFile="conf/ca.crt"
type="RSA" />
</SSLHostConfig>
</Connector>
重启tomcat 访问https://localhost:8443/
这样就可以看到Protocol
变成了h2,h2
表示使用了TLS的HTTP/2.0协议。
HTTP/2.0和HTTP/1.1
https://http2.akamai.com/demo
从这个网站可以看到HTTP/2.0和HTTP/1.1在速度上的差异
HTTP1.1
- 持久连接
- 请求管道化
- 增加缓存处理(新的字段如
cache-control
) - 增加
Host
字段、支持断点传输等
HTTP2.0
- 二进制分帧,HTTP1.x的解析是基于文本,2.0将报文消息划分为更小的数据帧,以二进制传输代替原本的明文传输
- 多路复用(或连接共享)
- 头部压缩
- 服务器推送
参考
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果