赞
踩
目录
一、什么是HTTP?
HTTP(HyperText Transfer Protocol),是超文本传输协议,是目前互联网上要用最广泛的一种网络协议,所有的 WWW文件都必须遵守该标准。HTTP又使用了可靠的数据传输协议TCP协议,不会产生数据丢失和损坏。(HTTP协议属于应用层协议)
HTTP的工作流程
HTTP报文
分为请求和响应报文
connection:keep-alive可以让TCP连接保持打开,浏览器可通过相同的连接发送请求
队头阻塞是指:当顺序发送的请求序列中的一个请求因为某种原因被阻塞时,在后面排队的所有请求也一并被阻塞,会导致客户端迟迟收不到数据。
解决队头阻塞:
HTTP协议的第二个版本,是第一个在通讯中指定版本号的HTTP协议版本。
特点:
缺点:
每下载文件时都需要建立TCP连接、传输数据和断开连接这样的步骤,无疑会增加大量无谓的开销,因此HTTP1.1增加了持久连接的方法。
在HTTP1.1中,默认支持长连接,即在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟
特点:
改进和优化:
缺点:
无状态特性:(带来巨大头部)协议对于连接状态没有记忆能力。纯净的HTTP是没有cookie等机制的,每一个连接都是一个新的连接。上一次请求验证了用户名密码,而下一次请求服务器并不知道它与上一条请求有何关联。
不安全性:传输内容没有加密,中途可能被篡改和劫持
HTTP1.1对带宽的利用率并不理想(带宽是指每秒最大能发送或接收的字节数),HTTP1.1很难将带宽装满:
HTTP2则在此基础上做出了改进
在HTTP2之前Google对HTTP1.1进行了改良:SPDY协议(二进制分帧层)
特性:
多路复用:SPDY允许一个连接上无限制并发流。因为请求在一个通道上,TCP效率更高 (慢启动),更少的网络连接,发出更密集的包。
头部压缩: 使用专门的HPACK算法,每次请求和响应只发送 差异头部,一般可以达到50%~90%的高压缩率。
请求优先级:虽然无线的并发流解决了队头阻塞的问题,但是如果带宽受限,客户端可能会因防止堵塞通道二阻止请求。在网络通道被非关键资源堵塞时,高优先级的请求会被优先处理。
服务端推送:可以让服务端主动把资源文件推送给客户端。当然客户端也有权力选择是否接收。
提高安全性:支持使用HTTPS进行加密传输。
HTTP2是基于SPDY,专注于性能,最大的一个目标是在用户和网站键只用一个连接 。
特性:
虽然TCP有问题(慢启动),但暂时未有能力换掉,所以想办法规避TCP慢启动和TCP连接之间的竞争问题。HTTP2采用一个域名只使用一个TCP长连接来传输数据,这样整个页面资源的下载过程只需一次慢启动,也避免了多个TCP连接竞争带宽。同时实现资源的并行请求,解决队头阻塞问题。
HTTP2添加了一个二进制分帧层:
HTTP2的请求和连接过程:
HTTP2仍存在问题:TCP+TLS建立连接的时间是主要瓶颈:没有从根本上解决队头阻塞问题,一旦遇到丢包,TCP协议还是会重新发送数据。我们知道在HTTP/2中,多个请求是跑在一个TCP管道中的,如果其中任意一路数据流中出现了丢包的情况,那么就会阻塞该TCP连接中的所有请求。这不同于HTTP/1.1,使用HTTP/1.1时,浏览器为每个域名开启了6个TCP连接,如果其中的1个TCP连接发生了队头阻塞,那么其他的5个连接依然可以继续传输数据。
HTTP3甩掉TCP、TSL的包袱,构建高效网络QUIC协议。
HTTP3选择了UDP协议,基于UDP实现了类似TCP的多路数据流、传输可靠性等功能,将这套功能称为QUIC协议。
特性:
HTTP1.0:
HTTP1.1:
HTTP2.0
HTTP3.0
QUIC 基于 UDP 实现,是 HTTP/3 中的底层支撑协议,该协议基于 UDP,又取了 TCP 中的精华,实现了即快又可靠的协议。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。