http协议版本

HTTP协议介绍

  • HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。

  • HTTP支持持久连接,在HTTP / 0.9和1.0中,连接在单个请求/响应对之后关闭。在HTTP / 1.1中,引入了保持活动机制,其中连接可以重用于多个请求。

  • 可分为五个版本,分别是0.9、1.0、1.1、2、3。

版本差异

1.1 HTTP/0.9

  • 只有一个命令GET。

  • 服务器只能回应HTML格式的字符串。

  • 服务器发送完毕,就关闭TCP连接。

1.2 HTTP/1.0

  • 除了GET,还引入了POST和HEAD方法

  • 不仅可以传输文字,还能传输图像、视频、二进制文件。

  • 每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。

TCP连接的新建成本很高,因为需要客户端和服务器三次握手,并且开始时发送速率较慢(slow start)。所以,HTTP 1.0版本的性能比较差。随着网页加载的外部资源越来越多,这个问题就愈发突出了。

1.3 HTTP/1.1

  • 引入了持久连接(persistent connection)keep-alive,即TCP连接默认不关闭,可以被多个请求复用。

  • 支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。

  • 提供身份认证、状态管理和 Cache 缓存等机制相关的请求头和响应头

  • 新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 。

1.4 HTTP/2

  • 基于 HTTPS 的,所以 HTTP/2 的安全性高。

  • 会压缩头(Header):如果你同时发出多个请求,他们的头是一样的或是相似的,那么,协议会帮你消除重复的部分。

  • 头信息和数据体都是二进制,并且统称为帧(frame):头信

1.5 HTTP/3

HTTP/2 主要的问题在于,多个 HTTP 请求在复用一个 TCP 连接,下层的 TCP 协议是不知道有多少个 HTTP 请求的。所以一旦发生了丢包现象,就会触发 TCP 的重传机制,这样在一个 TCP 连接中的所有的 HTTP 请求都必须等待这个丢了的包被重传回来。所以 HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP。

状态码

状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

  • 1xx:指示信息–表示请求已接收,继续处理

  • 2xx:成功–表示请求已被成功接收、理解、接受

  • 3xx:重定向–要完成请求必须进行更进一步的操作

  • 4xx:客户端错误–请求有语法错误或请求无法实现

  • 5xx:服务器端错误–服务器未能实现合法的请求

常见状态代码、状态描述、说明:

  • 200 OK //客户端请求成功

  • 400 Bad Request //客户端请求有语法错误,不能被服务器所理解

  • 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

  • 403 Forbidden //服务器收到请求,但是拒绝提供服务

  • 404 Not Found //请求资源不存在,eg:输入了错误的URL

  • 500 Internal Server Error //服务器发生不可预期的错误(服务器内部错误)

  • 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

 

posted @ 2022-06-12 16:59  hjy1995  阅读(874)  评论(0编辑  收藏  举报