欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

网络基础HTTP协议进化篇

程序员文章站 2022-07-01 17:08:59
...

点击上方蓝字关注我们

欢迎关注我的公众号,志学Python

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

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

最初始版本 HTTP/0.9

网络基础HTTP协议进化篇

HTTP/1.0    

网络基础HTTP协议进化篇

connection 字段解决问题

网络基础HTTP协议进化篇

Content-Type 字段

text/plain
text/html
text/css
image/jpeg
image/png
image/svg+xml
audio/mp4
video/mp4
application/javascript
application/pdf
application/zip
application/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 OK
Content-Type: text/plain
Transfer-Encoding: chunked


25
This is the data in the first chunk


1C
and this is the second one


3
con


8
sequence


0

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

另外,客户端请求的头信息新增了Host字段,用来指定服务器的域名。在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址

 Host: www.example.com

有了Host字段,就可以将请求发往同一台服务器上的不同网站,为虚拟主机的兴起打下了基础。(实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。也即是说,web server上的多个虚拟站点可以共享同一个ip和端口。)且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)

虽然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协议进化篇

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