HTTP2入门

一、背景

前面文章介绍了ProtoBuf序列化协议,这是gRPC牛逼原因之一,原因之二是采用了HTTP2,HTTP2是从SPDY发展而来,以前淘宝MTOP平台植入了SPDY协议来进行性能优化,这样淘宝客户端调后端接口就能快XX倍,现在应该是换成HTTP2.0了吧,很多年了,都快忘记MTOP是个啥了,所以经常写笔记做整理还是很有必要的。

二、HTTP2对HTTP1优化

1、多路复用

  • HTTP2在单个TCP连接实现并行请求,一个连接上可以承载任意数量的双向数据流,流是在连接中一个虚拟通道,流中的消息以二进制帧传输。
  • HTTP1.X 并发多个请求,必须使用多个TCP连接,并且对单个域名有请求数限制。

2、数据编码

  • HTTP2将请求和响应分割为更小的帧,采用二进制编码。
  • HTTP1.X 请求和响应报文由起始行、首部和正文组成,各部分之间以换行符分隔。

3、HTTP2还支持头部压缩、服务器推送特性。

三、实验测试

本实验目的是测试HTTP2多路复用特性。

1、搭建环境

Nginx配置 Http2必要条件
Nginx版本大于1.9.5,  我的版本是1.20.1
OpenSSL 版本大于 1.0.2e,我的版本是 OpenSSL 1.0.2k
检查Nginx是否安装了两个模块--with-http_v2_module、  --with-openssl

nginx.conf配置

注:配置HTTP2与配置HTTPS一样也需要使用证书,在HTTPS的配置上加上 【http2】就支持了,要去掉HTTPS将 【https】去掉就可以。

2、网络请求报文对比

首先我写一个index.html,内部嵌入了20张图片

<img src="a.jpg"/>
<img src="b.jpg"/>
......
<img src="t.jpg"/>

配置为HTTP2,浏览器网络请求截图

配置为HTTP2,TCPDUMP在服务端抓取数据,可以看到只有一次连接(SYN包的个数)

tcpdump -ieth0 tcp port 443 and host 115.195.149.98 -w http2.pcap

配置为HTTPS浏览器网络请求截图

TCPDUMP 在服务端抓包数据,可以看到做了21次连接,一次index.html,20次图片请求

结论:从抓包数据分析可以发现HTTP2只使用一个TCP连接,从理论上来少了那么多次的TCP三次握手肯定会快一点,实际测试的结果也是快了一些,但这种单次测试样本数太少,不能做为评测标准了,了解一下原理就行,关于HTTPS协议可以看 用抓包工具分析HTTPS报文

文章写完了,发现HTTP3去年就出来了, 我HTTP2还没怎么研究呢。

猜你喜欢

转载自blog.csdn.net/2301_76787421/article/details/132841277
今日推荐