HTTP0.9/HTTP1.0/HTTP1.1/HTTP2.0

HTTP0.9

最开始的HTTP协议是基于学术的研究,基于请求和响应的模式。所以我们的请求只包含请求行,并且返回的消息中只含有一个简单的HTML格式的内容。因为都是HTML的文件,决定了返回的内容是ASCII字符流进行传输。

特点:

1、请求只有一个请求行,没有请求头和请求体。
2、基于ASCII码进行传输
3、服务器没有返回头信息,只返回数据。

HTTP1.0

由于时代的发展1994年开始了拨号上网,HTTP请求不仅仅是用于学术的交流,还要满足用户的需求,所以不仅仅有HTML,还有CSS,图片,音频等等,文件格式也不仅仅是基于ASCII码了。由于要写明传输的类型,所以引入了请求头和响应头,同时加入了状态码。为了减少服务器的开销,引入了Cache机制。服务器还需要统计客户端的信息,加入了用户代理的字段。

特点:

1、为了支持多文件的下载,加多了请求头和响应头字段。
2、需要统计客户端的具体信息,如windows系统用户数,加入了用户代理字段。
3、提供了Cache机制,缓存下载过的数据
4、引入了状态码,告诉客户端请求的结果。

HTTP1.1

在HTTP0.9和HTTP1.1,客户端和服务器的连接都是短连接,即建立TCP连接之后,发送完一次HTTP请求之后就需要断开连接,如果还需要继续发送请求的话,需要再次建立TCP连接。设计这一网络请求的模式是因为当时的服务器只能同一时间接收有限个请求,如果一个HTTP请求建立连接之后一直都不释放,则会浪费服务器的资源。
但是如果每次发送一个请求就要建立一次TCP请求,那么发送请求将会耗费大量的时间。例如:一个网页中包含有许多图片,当我们返回页面的时候,这个页面其实有很多图片的链接,我们还需要根据图片的链接继续发送HTTP请求(如下两个图)。如果每个HTTP请求都需要建立连接,则会消耗大量的时间。所以,我们要建立多个连接,并且每个连接可以复用HTTP请求。
在这里插入图片描述
在这里插入图片描述

由于虚拟主机的发展,同个虚拟主机可能共用一个IP地址,那么当服务器接收到请求时就不知道具体是哪一个虚拟主机发过来的请求,所以要引入HOST字段。
由于动态生成技术的发展,我们不可能一次性发送一个网页,我们可以将动态生成的网页中的一部分先发送,这时就可以采用Chunk transfer技术,发送每个数据块。

特点

1、持久连接,同一个域名允许建立6个TCP连接。
2、由于虚拟主机的发展,引入HOST字段
3、动态网页技术的发展,引入chunk transfer机制。
4、引入Cookie、同源政策。

但是他也有不足:

1、我们刚开始建立TCP连接启动会很慢,如果同一域名建立6个TCP连接则会启动很慢。
2、同一域名的TCP连接会竞争一定的带宽
3、对同一个TCP连接,同一时刻只能发送一个请求,后续的请求需要等待前面的请求返回才能发送。容易造成队头阻塞。

HTTP2.0

为了解决HTTP1.1的痛点,采用了多路复用的技术,此时同一域名的6个TCP连接只会汇聚成一个TCP的长连接,这样就减少了TCP连接的慢启动的时间,不同的TCP连接也不会竞争一定的带宽。多路复用的原理是HTTP请求之后添加一个二进制分帧层,将同一请求分成不同的帧,为每个帧添加一个ID号,这样后续的请求就不需要等待前面的请求返回后再发送。可以进行并行发送。

特点:

1.一个域名只使用了一个长连接
2.多路复用解决队头阻塞的问题。
3.服务器的推送功能,比如说我返回一个HTTP的文件时,如果我里面引入了CSS文件或者JS文件,我可能还会继续发送请求,请求CSS文件和JS文件。服务器推送功能将CSS资源和JS资源与HTML文件一同返回。
4.可以设置请求的优先级,先对请求优先级高的请求做优先处理。
5.支持请求头和响应头的压缩。每一个请求头都对应一个索引号,当我请求头与上次的某个请求头相同时则不需要发送请求头。客户端和服务器都维护着这一个请求头对应的索引号的表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值