HTTP发展史

2017-10-16  本文已影响0人  badcyc

Http如何工作:
超文本传输协议(Http,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵循这个标准。

Different types of HTTP requests
GET:This request is Used to get the Response header and the response body
HEAD:This request is used to get back The response header only (not the response body as returned by the GET request..)
POST:This request is used to submit data (eg : for to be used in HTML forms etc..)…
PUT:Used for uploading resource
PATCH:Is used to modify the resource
DELETE:Used for deleting resource
TRACE:simply echoes back the request sent by the client…This can be used for testing the servers and Checking weather the server is alive or not..

发展历程版本


HTTP/0.9 (1991)->HTTP/1.0 (1996)->HTTP/1.1 (1999)->REST(2000)->HTTP/1.1 bis(2012)

HTTP0.9

作为HTTP第一个版本,只有请求(Request)一行
eg:GET www.cnblogs.com

HTTP 1.0

HTTP /1.0的变化包括:
引入了POST方法;
引入HTTP头、状态码;
HTTP传输内容不局限于文本,可以是图片、视频、文档等

HTTP 1.1

  1. 增加了host头字段。
  2. 增加了Range字段,使得客户端通过HTTP下载时只下载内容的一部分,这使得多线程下载也成为可能。

缺点
连接无法复用:连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。
HTTP/1.0传输数据时,每次都需要重新建立连接,增加延迟。
1.1虽然加入keep-alive可以复用一部分连接,但域名分片等情况下仍然需要建立多个connection,耗费资源,给服务器带来性能压力。
Head-Of-Line Blocking:导致带宽无法被充分利用,以及后续健康请求被阻塞。HOLB是指一系列包(package)因为第一个包被阻塞;HTTP/1.x中,由于服务器必须按接受请求的顺序发送响应的规则限制,那么假设浏览器在一个(tcp)连接上发送了两个请求,那么服务器必须等第一个请求响应完毕才能发送第二个响应——HOLB
虽然现代浏览器允许每个origin建立6个connection,但大量网页动辄几十个资源,HOLB依然是主要问题。
协议开销大:HTTP/1.x中header内容过大(每次请求header基本不怎么变化),增加了传输的成本。
安全因素:HTTP/1.x中传输的内容都是明文,客户端和服务端双方无法验证身份。

SPDY(2010)

多路复用允许在一个TCP连接里面,允许无限并发流(在双方资源可承受的情况下)。因为请求是在一个单一的通道交错传输,TCP的可以达到很高的效率,从而更少的网络连接需要,可以以很高的 数据密度做传输。

具备优先级的请求虽然无限的并行数据流的解决了序列化的问题,但是它们引入了另一个问题:如果由于信道带宽的限制,客户端可能会阻止怕堵塞通道的要求。为了克服这个问题,SPDY实现请求的优先次序:客户端可以请求尽可能多的项目,每个请求分配一个优先级。这样即使高优先级的请求仍处在pending状态,通道也不会传输非关键的,低优先级的请求,这样就有效地阻止了传输拥塞。

HTTP Header 压缩对于HTTP 请求,响应头,SPDY都做了压缩,这样包更小,对于RESTFUL类型的WEB2.0 ,or OpenAPI 业务,将会有可观的效率提升。

服务器端推送SPDY通过X-Associated-Content 协议头来向客户端推送数据,头通知客户端,我要向你推送资源,准备接收好了。最近火爆的Google+ ,如果你用chrome浏览器,默认就采用SPDY技术,并且开启了服务器推送技术。服务器的推技术,全面提升了用户体验,是G+ 产品很快占据了足够多的优势,最近Facebook 开发自己的浏览器,也有摆脱现在技术限制的考虑

服务器暗示不像上面提到的PUSH 技术,服务器会先告诉浏览器,你可以下载ABC资源了,这个ABC资源,可能就是下一个页面的JS ,CSS ,或者内容。服务器不会主动推送的,仍旧等待客户端请求,这对于低速网络,是个很大的优化,有点类似于我们的预加载技术。

HTTP/2(2015)
a7779db0-be23-11e6-86b9-3c365a8d8033.png

http2的格式定义十分高效且精简。length定义了整个frame的大小,type定义frame的类型(一共10种),flags用bit位定义一些重要的参数,stream id用作流控制,payload就是request的正文。

  • 流(stream)和多路复用(MultiPlexing)
    stream就是在HTTP/2连接上的双向帧序列。每个http request都会新建自己的stream,response在同一个stream上返回
  • 多路复用(MultiPlexing),即连接共享。之所以可以复用,是因为每个stream高度独立,堵塞的stream不会影响其它stream的处理。一个连接上可以有多个stream,每个stream的frame可以随机的混杂在一起,接收方可以根据stream id将frame再归属到各自不同的request里面。
duolufuyong.png
HTTP基本优化

影响一个HTTP网络请求的因素主要有两个:带宽和延迟。

HTTPS与HTTP的一些区别
上一篇 下一篇

猜你喜欢

热点阅读