http
http 超文本传输协议,基于TCP协议
TCP优点:TCP协议提供传输控制、按顺序组织数据、错误纠正
TCP缺点:每次创建连接都需要三次握手,耗时;TCP在创建连接之初有慢启动的特性
http1.0
特点:
1:浏览器和服务器只保持短暂的连接
2:每次请求都需要创建一个连接
缺点:
1:创建的连接无法复用,没次请求都需要创建连接,TCP三次握手不仅增加服务端的开销,还导致延迟
2:阻塞问题(head of line blocking),一般PC浏览器会一次向服务端申请6到8个连接,手机端一般4到6个,如果有资源过大或者响应过慢,会影响后续资源的加载。
支持的方法:
GET(获取资源)、POST(传输实体主体)、PUT(传输文件)、HEAD(获取报文头部)、
DELETE(删除文件)、LINK(建立和资源之间的联系)、UNLINK(断开连接关系)
http1.1
特点:
1:http1.1支持持久连接(默认模式使用带流水线的持久连接),一个TCP连接可以传送多个http请求和响应,减少了创建和关闭连接带来的消耗和延迟。http1.1的请求和响应的head头中增加了connection,默认长连接,可以设置为close关闭长连接,Keep-Alive保持连接。
2:http1.1请求头增加了Host,表明请求的web站点的主机头名,这样一台服务器就可以通过不同的主机头名来创建多个虚拟站点
3:http1.1提供了身份认证、状态管理和缓存机制
4:http1.1支持文件断点续传
增加的方法:OPTIONS(访问支持的方法)、TRACE(追踪)、CONNECT(要求用隧道连接代理)
删除的方法:LINK、UNLINK
http2.0
- 特点:
1:多路复用,http1.1协议中,浏览器针对同一域名,创建的连接有限制,超过数目的请求就会被阻塞。多路复用则允许通过单一的http2.0连接发起多重的请求-响应。http2.0把http协议通信的基本单位缩小为一个个的帧,这些帧对应逻辑流中的消息,并行的在同一个TCP连接上双向交换信息
2:二进制分帧,http2在应用层(http2.0)和传输层(TCP/UDP)之间增加了二进制分帧,在不改变http1.1的语义、语法、状态码、URI以及首部字段的情况下,解决http1.1的性能问题,改进传输性能,实现低延迟和高吞吐量。http2会把传输信息分成更小的帧,并采用二进制格式的编码
3:首部压缩,http1.1不支持首部压缩,为此SPDY和HTTP2.0应用而生,SPDY使用的是通用的DEFLATE算法,HTTP2.0采用的是专门的首部设计的HPACK算法
4:服务端推送,是一种在客服发送请求前发送数据的机制。在HTTP2.0协议中,可以在一次请求中,返回多个响应。客服端发起主页的请求,服务端除了返回主页的HTML,还会返回主页需要加载的图片、样式等。而且可以缓存这些资源
其它
- TCP慢启动
TCP连接会随着时间自我调谐,起初会限制连接的最大速度,如果数据传输成功,会随着时间推移提高传输的速度。这种调谐成为TCP慢启动 - SPDY
是google开发的基于TCP协议的会话层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是代替HTTP,而是对HTTP协议增强,新协议包括数据流的多路复用、请求优先级、HTTP报头压缩,引入SPDY后,实验室测试页面加载速度快了64%