HTTP发展简史
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通讯格式,默认使用80端口。css
HTTP/0.9版本
- 1991年发布0.9版本,该版本只有一个GET命令。
- 仅支持html格式。
- 服务器不支持长链接,当客户端和服务端通讯完后就会关闭链接,一次链接一个请求。
HTTP/1.0版本
- 1996年5月发布1.0版本,有很大改进。
- 支持了更多文件格式,好比图片、视频、二进制文件,使得网页内容更加丰富。
- 支持了更多的方法:GET、POST、HEAD。
- 增长了包头信息(HTTP header)、状态码、缓存、权限等功能。
- 和0.9版本同样,服务器不支持长链接,当客户端和服务端通讯完后就会关闭链接,一次链接一个请求。
HTTP/1.1版本
- 1997年1月发布1.1版本,目前主流依然是1.1
- 支持了持久链接,一个链接能够发送多个请求,而且支持一个链接同时发送多个请求(服务器端须要按顺序返回结果)
- 支持了更多的方法:PUT、PATCH、DELETE、OPTIONS
- 客户端请求头信息增长Host字段,指定服务器的域名,这样服务器上支持了虚拟主机,即一台机器多个站点
HTTP/2 版本
- 2015年发布,目前还未正式大规模使用,但大多浏览器已经支持HTTP/2
- 在以前版本HTTP header必须是文本(ASCII编码)格式,body部分能够是文本也能够是二进制,但在HTTP/2,不管是header仍是body都是二进制数据
- HTTP/2支持了在一个链接里,客户端和服务端同时发送多个请求
- 由于支持了在一个链接里同时发送多个请求和多个回应,为了区分它们就须要对数据作标记,每一个请求或回应的全部数据包为一个数据流(stream),每一个数据流都有一个惟一的ID,客户端发送的请求ID为奇数,服务端返回的为偶数
- HTTP/2支持header压缩,而且支持header信息索引(客户端和服务端有一张相同的索引表,不一样的header对应不一样的索引号,发送请求时不会再发header,而是发索引号)
- HTTP/2支持服务端主动推送功能,若是一个网页中含有大量的静态资源(js、css、图片等),以前版本是当该网页传输完成后解析全部html代码,而后再去传输网页中包含的资源,HTTP/2版本能够在网页没有传输完以前就主动把该网页中包含的静态资源推送到客户端,这样省去了客户端再次发请求的过程。