1、弄清楚一个概念,HTTP请求与TCP请求不是一个概念,在同一个TCP请求可以发送多个HTTP请求,以前的协议版本不能这么做,但是现在HTTP1.1.1里面可以这么做,而且在HTTP2里面是会更大的去优化相关的一些东西,来提高HTTP传输效率以及服务器的性能。
2、TCP连接对应多个HTTP请求,而一个HTTP请求肯定在某一个TCP连接里面去定义发送的。
第一个版本 HTTP / 0.9
只有一个命令 GET
没有HEADER 等描述数据的信息
服务器发送完毕就关闭
第二个版本 HTTP / 1.0
增加了很多命令
增加了status code 和 header
多字符集支持、多部分发送、权限、缓存 等等
第三个版本 HTTP / 1.1
持久链接
pipleine
增加了 host 和其他一些命令 (在同一个物理服务器可以同时跑很多服务)
第四个版本 HTTP / 2.0
所以数据都是以二进制传输
同一个链接里面发送多个请求不在需要按照顺序来
头信息压缩以及推送等提高效率的功能
HTTP2
1、所有数据以二进制传输
同一个连接里面发送多个请求不再需要按照顺序来(可以同时返回数据)
头信息压缩以及推送等提高效率的功能:
头信息压缩:在HTTP1发送和返回请求,http头都是必须完整发送并返回,带宽量大。
2、推送:http请求只能是发送然后响应返回内容,客户端永远是主动方,服务端是被动方。http2有了推送,服务端可以主动发起数据传输。
如:web页面里面有css,img,js等文件,它们都是连接的形式,这里就有顺序的问题,解析文本之后才能发送对应的链接请求,http2有了推送功能,在请求的同时,可以主动把这个页面的css,img,js等文件推送到客户端,这样发送顺序是并行的,不是串行的,性能高出许多。
HTTPS
安全版本的HTTP。