HTTP

HTTP简介

HTTP是超文本传输协议(Hyper Text Transfer Protocol)的简称,是用于从万维网服务器传输超文本到本地浏览器的传送协议。

HTTP协议工作于客户端–服务器架构(C/S)上,客户端通过URL向服务端发送所有请求。

关于HTTP的三点注意事项

  • HTTP是无连接的
    • 每次连接只处理一个请求。服务器处理完请求并收到答应后即断开连接。
  • HTTP是媒体独立的
    • 任何类型的数据都可以通过HTTP协议进行传输。数据类型取决于MIME Type,说明该资源的媒体类型,通常由Web服务器通过Content-Type告知浏览器。
  • HTTP是无状态的
    • 对于事务处理没有记忆能力,如果后续处理需要之前的数据,则该数据必须重新上传。

HTTP消息结构

客户端请求方式总共有八种:

  • OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以通过向服务器发送“*”的请求来测试服务器性能。
  • HEAD:向服务器索要与GET请求相一致的响应,但只返回头部信息,不返回整个响应消息。
  • GET:向特定的资源发起请求。
  • POST:向指定资源提交数据进行处理,数据包含在请求体中。
  • PUT:向指定资源路径上传内容。
  • DELETE:请求删除指定资源位置的内容。
  • TRACE:回显服务器收到的请求,主要用于测试或诊断。
  • CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

虽然请求方式有八种之多,但常用的也就GET和POST,其他请求都可以通过这两种请求来间接实现。

客户端请求消息

包括四个部分:

  • 请求行
  • 请求头部
  • 空行
  • 请求数据

请求消息示意图

服务端响应消息

包括四个部分:

  • 状态行
  • 响应头部
  • 空行
  • 响应数据

响应消息示意图

HTTP状态码

HTTP请求状态码共有五种:

  1. 1XX 请求收到,继续处理
  2. 2XX 请求被成功提交
  3. 3XX 重定向
  4. 4XX 请求出错,妨碍服务器的处理
  5. 5XX 服务器处理请求时遇到错误

常见的HTTP状态码

1XX

  • 100 服务器收到请求s的一部分,请求者应当继续发送。

2XX

  • 200 服务器成功处理了请求

3XX

  • 301 浏览器被永久重定向到另外一个在Location消息头中指定的URL
  • 302 表示浏览器暂时重定向到另外一个在Location消息头中指定的URL
  • 304 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容

4XX

  • 400 语义错误,请求无法被服务器理解。或者请求参数有误
  • 403 客户请求的资源被禁止访问
  • 404 客户请求的资源不存在
  • 405 请求方法不被允许

5XX

  • 500 服务器遇到错误,无法完成请求
  • 501 服务器不具备完成请求的功能

HTTP协议无状态、短连接以及长连接

HTTP协议是无状态的

指协议对于事物处理没有记忆能力,服务器不知道客户端的状态。打开一个服务器上的网页和上次打开这个网页之间没有任何联系。

短连接

客户端每次和服务器进行一次HTTP操作就建立一次链接,任务结束就断开连接。例如浏览器解析HTML页面时每遇到一个web资源就建立一个HTTP会话。

长连接

HTTP/1.1起默认使用长连接,使用长连接的HTTP协议会在响应头中加入connection:keep-alive;
在使用长连接的情况下,当一个网页打开后,服务器与浏览器之间用于传输HTTP数据的TCP连接不会断开,而是会等待一段时间,如果浏览器再次请求服务器,则会继续使用当前这条连接。

HTTP协议的长连接和短连接其本质就是TCP协议的长连接和短连接。

HTTP2.0与HTTP1.X的区别

最大的特点就是访问速度更快

  • 二进制格式
  • 多路复用:允许在一次http链接中发起多次request
  • 头部压缩
  • 服务端推送


网络  

网络 HTTP

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!