HTTP(Hypertext Transfer Protocol)是一种用于传输超文本和其他内容的应用层协议。

历史:

  • HTTP最早的版本是HTTP/0.9,它只支持简单的 GET 请求,而不支持其他操作。
  • HTTP/1.0 版本增加了许多新特性,如支持多个请求,请求和响应头信息,以及管道化传输。
  • HTTP/1.1 版本是当前最常用的版本,它引入了持久连接、流水线传输和请求优先级等功能。

原理:

  • HTTP是基于客户端-服务器模型的协议,客户端向服务器发送请求,服务器收到请求后会返回相应的响应。
  • HTTP请求包括请求行、请求头、请求体等部分,其中请求行包括请求方法、请求路径和协议版本;请求头包括各种元数据,如Content-Type、Content-Length等;请求体则是请求的具体内容。
  • HTTP响应包括状态行、响应头和响应体等部分,其中状态行包括协议版本、状态码和状态描述;响应头包括各种元数据,如Content-Type、Content-Length等;响应体则是响应的具体内容。

应用:

  • HTTP主要用于Web应用程序,客户端通过HTTP请求获取服务器上的资源,如HTML、CSS、JavaScript、图片等。
  • HTTP还可以用于实现RESTful API、邮件协议等。

发展:

  • HTTP/2.0 引入了二进制协议、多路复用技术、头部压缩等技术,使得协议性能得到了大幅提升。
  • HTTP/3.0 使用了QUIC协议,从而实现了更快的传输速度和更低的延迟。
  • HTTP/4.0 和 HTTP/5.0 分别引入了Beep协议和WebAssembly技术,从而使得协议更加高效和灵活。

HTTP状态码(HTTP status code)是用于表示HTTP请求处理结果的数字代码。状态码由三位数字组成,第一个数字表示状态码的类型,后面两个数字用于进一步分类。以下是HTTP状态码的一些常见类型和状态码:

1xx:信息性状态码

  • 100:继续
  • 101:切换协议

2xx:成功状态码

  • 200:成功
  • 201:创建成功
  • 202:接受成功
  • 204:删除成功
  • 206:部分成功

3xx:重定向状态码

  • 300:多种选择
  • 301:永久重定向
  • 302:暂时重定向
  • 304:未修改
  • 307:临时重定向

4xx:客户端错误状态码

  • 400:请求错误
  • 401:未授权
  • 403:禁止
  • 404:未找到
  • 405:方法禁用
  • 406:不接受
  • 408:请求超时
  • 410:资源已删除或不存在
  • 415:不支持的媒体类型

5xx:服务器错误状态码

  • 500:服务器内部错误
  • 501:服务器不具备请求的资源
  • 502:错误网关
  • 503:服务器不可用或超负载
  • 504:网关超时错误
  • 505:HTTP版本不受支持

常见状态码中,2xx表示成功,4xx表示客户端错误,5xx表示服务器错误。