HTTP及其版本(HTTP1.0、HTTP1.1、HTTP2.0、HTTP3.0)详解

HTTP协议

基础知识

HTTP协议是超文本传输协议的缩写,是用于从万维网传输超文本到浏览器的传输协议。

HTTP基于TCP/IP通信协议来传递数据(HTML文件,图片文件、查询结果等)。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口

  • 1、特点

(1)无连接:无连接是指限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。这种方式可以节省传输时间。

(2)无状态:HTTP协议自身不对请求和响应之间的通信状态进行保存,任何两次请求之间都没有依赖关系。(每次请求都是独立的,与前面的请求和后面的请求都没有直接联系。协议本身不保留之前一切的请求或响应报文的信息。)

  • 2、Http报文
    在这里插入图片描述

在这里插入图片描述

  • 3、Http请求方法

关于Http请求方法,以及在前面的文章详细说明了,点击跳转

4、Http状态码

1XX——信息提示,服务器收到请求,需要请求者继续执行操作;


2XX——成功,操作被成功接收并处理;


3XX——重定位,需要进一步的操作以完成请求;


4XX——客户端错误,请求包含语法错误或无法完成请求;


5XX——服务器错误,服务器在处理请求的过程中发生了错误。

常见状态码:
100:继续,客户端应继请求;
200:请求成功;
301:资源(网页等)被永久转移到其他 URL;
302:暂时重定向;
403: Forbidden —禁止访问;
404:请求的资源(网页等)不存在;
500:内部服务器错误。

Http版本

Http1.0

HTTP1.0默认使用 Connection:cloose,浏览器每次请求都需要与服务器建立一个 TCP 连接,服务器处理完成后立即断开 TCP 连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。

Http1.1

HTTP1.1默认使用 Connection:keep-alive长连接),避免了连接建立和释放的开销;通过 Content-Length 字段来判断当前请求的数据是否已经全部接受。不允许同时存在两个并行的响应。

  • 为什么需要持久连接?

Http协议的初始版本中,每进行一次Http通信就要断开一次TCP连接。每次请求都会造成TCP连接的建立和断开,增加通信量的开销。

持久连接的特点:

  • 持久连接也称为Http keep-alive,只要任意一端没有明确提出断开连接,则保存TCP连接状态。

  • 减少了TCP连接的重复建立和断开所造成的额外开销,减去了服务器端的压力。

  • 持久连接使得多数请求以管线化方式(pipelining)成为可能。可以同时并行发送多个请求,而不需要一个接一个的等待响应了。(请求打包一次传输过去,响应打包一次传递回来),管线化的前提是在持久连接下

  • Http1.1缺陷

(1)高延迟,带来页面加载速度的降低。(网络延迟问题只要由于队头阻塞,导致宽带无法被充分利用)

(2)无状态特性,带来巨大的Http头部。

(3)明文传输,不安全。

(4)不支持服务器推送消息。

Http2.0

SPDY协议:2009年谷歌公开了SPDY协议,主要解决Http1.1效率不高的问题。
在这里插入图片描述
SPDY被当做HTTP2.0的基础,其主要特性(兼容老版本HTTP协议,同时可以使用SSL功能)都在HTTP2.0中得到继承。

HTTP2.0:基于SPDY,专注于性能,目标是在用户和网站直接只用一个连接

  • HTTP2.0新特性

(1)二进制传输

http2.0将请求和响应数据分割为更小的帧,并且它们采用二进制编码(http1.0基于文本格式)。多个帧之间可以乱序发送,根据帧首部的流表示可以重新组装。

(2)Header压缩

Http2.0开发了专门的“HPACK”算法,大大压缩了Header信息。

(3)多路复用

http2.0中引入了多路复用技术,很好的解决了浏览器限制同一个域名下的请求数量的问题。

多路复用技术可以只通过一个TCP链接就可以传输所有的请求数据。

(4)服务端推送

HTTP2.0在一定程度上改不了传统的“请求-应答”工作模式,服务器不再完全被动地响应请求,也可以新建“流”主动向客户端发送消息。(例如,浏览器在刚请求html的时候就提前把可能会用到的JS,CSS文件发送给客户端,减少等待延迟,这被称为“服务端推送Server Push”)

服务器也不能随便将第三方资源推送给服务器,必须经过双方确认。

  • HTTP2.0缺点

(1)TCP以及TCP+TLS建立连接的延迟(握手延迟)

(2)TCP的队头阻塞没有彻底解决(http2.0中,多个请求是跑在一个TCP管道中的,一旦丢包,TCP就要等待重传(丢失的包等待重新传输确认),从而阻塞该TCP连接中的所有请求)

因为HTTP2.0存在这些缺点,所以出现了HTTP3.0。

Http3.0

Google在推行SPDY的时候意识到了上述http2.0一系列问题,于是又产生了基于UDP协议的“QUIC”协议,让HTTP跑在QUIC上而不是TCP上。从而产生了HTTP3.0版本,它解决了“队头阻塞”的问题

  • 特点:

(1)实现了类似TCP的流量控制,传输可靠性的功能。

(2)实现了快速握手功能(QUIC基于UDP,UDP是面向无连接的,不需要握手和挥手,比TCP快)

(3)集成了TLS加密功能

(4)多路复用,彻底解决TCP中队头阻塞的问题(单个“流”是有序的,可能会因为丢包而阻塞,但是其他流不会受到影响)

总结

  • HTTP1.1的缺点:安全性不足和性能不高;

  • HTTP2.0完全兼容HTTTP1.0,是“更安全的HTTP,更快的HTTPS”,头部压缩,多路复用等技术充分利用了带宽,降低了延迟。

  • HTTP3.0的底层支撑协议QUIC基于UDP实现,又含TCP的特点,实现了又快又可靠的协议。

  • 23
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
AWS S3(Amazon Simple Storage Service)是亚马逊提供的一种高度可扩展的对象存储服务。S3允许用户以云存储方式存储和检索任意数量的数据。以下是关于AWS S3的一些重要特性: 1. 可扩展性:AWS S3提供了高度可扩展的存储解决方案,能够适应任意规模的需求。无论是存储几个G的个人文件还是处理TB级别的数据,S3都能够满足需求。 2. 安全性:AWS S3提供多层次的安全控制来保护数据的完整性和安全性。用户可以通过控制访问权限来限制对存储桶和对象的访问。此外,S3还提供了加密功能,可以对数据进行加密,确保数据在传输和存储过程中的安全。 3. 可靠性:AWS S3采用了多副本存储和自动修复机制,确保数据的可用性和持久性。S3将数据存储在多个设备和多个区域,并且自动处理设备故障,以确保数据不会丢失。 4. 数据访问:通过AWS S3,用户可以轻松地在任何地方访问其存储的数据。S3提供了REST和SOAP接口,可以通过编程方式进行高效、低延迟的数据访问。此外,S3还提供了网页界面,方便用户直接通过浏览器进行数据管理和操作。 5. 成本效益:AWS S3采用按需计费模式,根据用户实际存储的数据量和数据传输的流量进行计费。用户只需支付实际使用的存储空间和传输流量,无需提前购买硬件设备或维护硬件设备,从而节约了成本。 总之,AWS S3是一种可靠、安全、高度可扩展的云存储解决方案。通过提供灵活的数据管理和访问方式,以及强大的安全控制和可靠性,S3帮助用户轻松地存储和管理各种类型的数据,并实现数据的安全性和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值