网络基础HTTP协议进化篇

Posted 志学Python

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络基础HTTP协议进化篇相关的知识,希望对你有一定的参考价值。

最重要的一点就是如果您觉得对您有帮助,希望可以点个在看,或者点一点文章中最下面的广告,给小编我加个鸡腿,毕竟小编写文章也是很辛苦的,非常感谢

就像人类已经从猿猴开始慢慢的进化为现在的人类,一开始是只会走路,慢慢就会奔跑,慢慢还会说话,慢慢还会思考,等等到现在的华夏上下5000年的文化,就这样人类一直在进化,分成了不同种类的人,有人是老板,有人是打工仔,如果深入了解,很是神奇啊


最初始版本 HTTP/0.9



HTTP/1.0    


网络基础HTTP协议进化篇

connection 字段解决问题


网络基础HTTP协议进化篇

Content-Type 字段

text/plaintext/htmltext/cssimage/jpegimage/pngimage/svg+xmlaudio/mp4video/mp4application/javascriptapplication/pdfapplication/zipapplication/atom+xml

这些数据类型总称为MIME type,每个值包括一级类型和二级类型,之间用斜杠分隔


网络基础HTTP协议进化篇


Content-Encoding 字段


由于发送的数据可以是任何格式,因此可以把数据压缩后再发送。Content-Encoding字段说明数据的压缩方法


网络基础HTTP协议进化篇

HTTP1.1版本

网络基础HTTP协议进化篇

connction字段


网络基础HTTP协议进化篇


Content-Length 字段


网络基础HTTP协议进化篇

分块传输编码


使用Content-Length字段的前提条件是,服务器发送回应之前,必须知道回应的数据长度。

对于一些很耗时的动态操作来说,这意味着,服务器要等到所有操作完成,才能发送数据,显然这样的效率不高。更好的处理方法是,产生一块数据,就发送一块,采用"流模式"(stream)取代"缓存模式"(buffer)。

因此,1.1版规定可以不使用Content-Length字段,而使用"分块传输编码"(chunked transfer encoding)。只要请求或回应的头信息有Transfer-Encoding字段,就表明回应将由数量未定的数据块组成


网络基础HTTP协议进化篇

HTTP/1.1 200 OKContent-Type: text/plainTransfer-Encoding: chunked
25This is the data in the first chunk
1Cand this is the second one
3con
8sequence
0


新增了请求方式PUT、PATCH、OPTIONS、DELETE等



 Host: www.example.com




虽然1.1版允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的。服务端是按队列顺序处理请求的,服务器只有处理完一个回应,才会进行下一个回应。假如前面的请求处理时间很长,后面就会有许多请求排队等着,这样就造成了“队头阻塞”的问题;同时HTTP是无状态的连接,因此每次请求都需要添加重复的字段,降低了带宽的利用率


多路复用带来一个新的问题是,在连接共享的基础之上有可能会导致关键请求被阻塞。SPDY允许给每个request设置优先级,这样重要的请求就会优先得到响应。比如浏览器加载首页,首页的html内容应该优先展示,之后才是各种静态资源文件,脚本文件等加载,这样可以保证用户能第一时间看到网页内容。


为了避免这个问题,只有两种方法:一是减少请求数,二是同时多开持久连接。这导致了很多的网页优化技巧,比如合并脚本和样式表、将图片嵌入CSS代码、域名分片(domain sharding)等等。如果HTTP协议设计得更好一些,这些额外的工作是可以避免的


100(Continue) Status(节约带宽)


HTTP/1.1加入了一个新的状态码100(Continue)

网络基础HTTP协议进化篇

 HTTP/1.1在1.0的基础上加入了一些cache的新特性

网络基础HTTP协议进化篇


HTTP 1.1支持只发送header信息(不带任何body信息)

网络基础HTTP协议进化篇

HTTP1.1还有身份认证机制

网络基础HTTP协议进化篇


HTTP支持传送内容的一部分

网络基础HTTP协议进化篇

 HTTP/1.1支持文件断点续传,RANGE:bytes

网络基础HTTP协议进化篇


HTTP1.1中新增了24个错误状态响应码

网络基础HTTP协议进化篇

HTTP/2.0

网络基础HTTP协议进化篇

二进制协议

网络基础HTTP协议进化篇

多工

网络基础HTTP协议进化篇

数据流


网络基础HTTP协议进化篇

头信息压缩

网络基础HTTP协议进化篇

服务器推送

网络基础HTTP协议进化篇

推送的过程

网络基础HTTP协议进化篇

二、HTTP响应模型

服务器收到HTTP请求之后,会有多种方法响应这个请求,下面是HTTP响应的四种模型:

单进程I/O模型

网络基础HTTP协议进化篇

多进程I/O模型

网络基础HTTP协议进化篇

复用I/O模型

请继续关注我


最重要的一点就是如果您觉得对您有帮助,希望可以点个在看,或者点一点文章中最下面的广告,给小编我加个鸡腿,毕竟小编写文章也是很辛苦的,非常感谢

以上是关于网络基础HTTP协议进化篇的主要内容,如果未能解决你的问题,请参考以下文章

HTTP协议基础知识

iOS开发网络篇—HTTP协议

前端基础篇之HTTP协议

接口测试之基础篇--http协议

iOS开发网络篇—HTTP协议

iOS开发网络篇—HTTP协议