HTTP协议

1、什么是HTTP协议

Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间的数据传输规则,也就是请求数据和响应数据需要按照指定的格式进行传输。在浏览器中打开开发者工具,点击Network可以查看某一次请求的请求数据和响应数据具体的格式内容。学习HTTP主要就是学习请求数据和响应数据的具体格式内容。

特点:

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。每种方法规定了客户与服务器联系的类型不同。 协议简单,程序规模小,因而通信速度很快。
  • 灵活:允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  • 无连接:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。 采用这种方式可以节省传输时间。
  • 无状态:协议对于事务处理没有记忆能力;在服务器不需要先前信息时它的应答较快。
  • 支持多种数据格式:包括HTML、XML、JSON等。这使得它成为Web服务的首选协议之一。
  • 支持B/S与C/S架构:即Browser/Server浏览器/服务器(无需安装客户端,只需通过浏览器即可访问应用程序;易于维护升级)、Client/Server客户端-服务器架构(响应速度快,安全,个性化)。
  • 基于TCP协议:使数据传输安全、可靠、稳定。

2、浏览器与服务器怎样交互

浏览器发送请求给服务器,服务器响应数据给浏览器。

交互流程:

  1. 建立连接:三次握手
  2. 发送请求(request):浏览器按照HTTP协议发送请求和数据。
  3. 接收响应(response):Web服务器用Web服务器软件(如Tomcat)根据HTTP协议解析请求,然后把处理结果按照HTTP协议发送给浏览器。
  4. 断开连接:四次挥手

3、请求数据的格式

由四部分组成:

  1. 请求行:包含请求方法(用于指定对资源的操作方式,共7种,最常用的是GET和POST)、URL(要访问的资源路径)和HTTP协议版本(如HTTP/1.1)。
  2. 请求头:用于传递附加信息以及客户端和服务器之间的交互信息。由键值对组成,可以有多个。常用的有Host(指定请求的主机名)、User-Agent(浏览器版本)、Accept(浏览器能接收的资源类型)、Accept-Language(浏览器偏好的语言)、Accept-Encoding(浏览器可以支持的压缩类型)。
  3. 空行:这个空行是必需的,用于用于表示请求头结束。
  4. 请求体:可选部分,用于存储请求参数,传递数据到服务器。如在POST请求中,请求正文可以包含表单数据或JSON数据。

HTTP协议_第1张图片

请求方法中的GET与POST区别:

  • GET请求:请求数据在请求行上,没有请求体;请求参数大小有限制。
  • POST请求:请求数据在请求体中;请求参数大小没有限制。

例如:

HTTP协议_第2张图片

HTTP协议_第3张图片

4、响应数据的格式

由四部分组成:

  1. 状态行:由HTTP协议版本、状态码和状态码描述组成。
  2. 响应头:给客户端提供一些附加信息,以便客户端能够正确地处理和显示响应内容。如Content-Type(响应内容的类型)、Content-Length(响应内容的长度,字节数)、Content-Encoding(响应压缩算法)、Cache-Control(指示客户端应如何缓存)。
  3. 空行:这一行必不可少,表示响应头部结束,接下来为响应正文。
  4. 响应体:存放响应数据。

HTTP协议_第4张图片

例如:

HTTP协议_第5张图片

在这个例子中,
状态行:HTTP协议及版本是HTTP/1.1,响应状态码为200,状态码描述为OK。
响应头:Content-Type设置为application/json,表示返回的数据类型是JSON。响应正文的字符编码为UTF-8。Content-Length字段指定了响应正文的长度。
响应体:是一个JSON对象,包含了name、age、hobby三个字段及其值。

状态码

状态码是一个三位数字,用于表示请求的处理结果。以下展示常见响应码,其中最常见的为200(请求成功)、404(未找到资源)、500(服务器内部错误)。

1xx 响应中:请求已经接受,需要请求者继续请求,是临时状态码

2xx 成功:成功接收请求并处理完成

        200 OK 成功

3xx 重定向:需要进一步操作以完成请求

4xx 客户端错误:如请求包含语法错误、客户端的请求的资源不存在,客户端未被授权、禁止访问

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

        401 Unauthorized 请求未经授权

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

        404 Not Found 请求的资源不存在 如输入了错误的URL

5xx 服务器端错误:服务器在除了请求的过程中发生错误,如服务端抛出异常、路由出错

        500 Internal Server Error 服务端发生不可预期的错误

        503 Server Unavailable 服务器当前无法处理请求 一段时间后可能恢复正常

你可能感兴趣的:(http,网络协议,网络)