HTTP(Hyper Text Transfer Protocol)超文本传输协议,下文简称 HTTP,它的作用是用于完成服务器端和客户端的数据传输的。它能够传输恣意的数据类型,如文本、HTML、图片、文件、声音等类型。 简略来说,HTTP 的作用就像一个“快递”相同,用来承载客户端(浏览器)和服务器端的数据传输,如下图所示:

面试突击64:了解 HTTP 协议吗?

1.HTTP 特色

HTTP 的主要特色有以下 5 个:

  1. 简略快速:客户端向服务器端发送恳求时,只需传递恳求方法、路径和恳求参数,由于协议简略,所以使得 HTTP 服务器的程序规划小,因而通讯速度很快。

  2. 无衔接:所谓的无衔接指的是,每次衔接只处理一个恳求。服务器处理完客户的恳求后,会立即断开衔接。

  3. 无状况:HTTP 不会记录每次恳求的身份信息,因此前一次恳求和后一次恳求相互“不认识”。

  4. 可传递恣意数据类型:HTTP 答应传输恣意数据类型,只需求在恳求头中标识数据类型 Content-Type 即可。

  5. 一对一通讯:每次 HTTP 恳求,都是一个客户端对应一个服务器端。

    2.HTTP 组成

    HTTP 是由以下 2 部分组成的:

  6. 恳求目标 Request(客户端恳求)。

  7. 呼应目标 Response(服务器呼应)。

每次 HTTP 恳求都是由一次恳求和一次呼应构成的,如下图所示:

面试突击64:了解 HTTP 协议吗?

2.1 恳求目标

恳求目标包括 4 部分内容:

  1. 恳求行
  2. 恳求报头
  3. 空行
  4. 恳求正文

如下图所示:

面试突击64:了解 HTTP 协议吗?

2.1.1 恳求行

恳求行包括了以下 3 部分内容:

  1. 恳求类型 Method,如 GET。
  2. 恳求的 URL 地址,如 www.baidu.com。
  3. HTTP 版别号,如 HTTP/1.1。

其间,一切的恳求类型如下:

面试突击64:了解 HTTP 协议吗?

2.1.2 恳求报头

恳求报头是在发送恳求时,描绘更多的恳求信息的,它以 “name: value” 的方式存在的,每个恳求报头占一行。 常见的恳求报头有以下几个:

  • Host:表明服务器端的地址和端口号。
  • Content-Type:用于描绘恳求正文中的数据类型,常见的类型有:json 格局的 application/json、表单格局的 application/x-www-form-urlencoded、文件格局的 multipart/form-data 等。
  • Content-Length:用于描绘恳求正文中的数据长度,需求注意的是,这儿的数据长度统计单位为字节而非字符。
  • User-Agent:用户署理信息,比方拜访用户的体系信息,浏览器类型和版别信息等。

2.1.3 空行

一个没有任何内容的空行,用于分隔恳求报头和恳求正文的特别组成部分。

2.1.4 恳求正文

业务体系中要传递参数。

2.2 呼应目标

呼应目标也是由 4 部分内容组成的:

  1. 状况行
  2. 呼应报头
  3. 空行
  4. 呼应正文

如下图所示:

面试突击64:了解 HTTP 协议吗?

2.2.1 状况行

状况行用于描绘服务器的回来状况,它由 3 部分组成:

  1. HTTP 版别号,如 HTTP/1.1。
  2. 状况码,如 200。
  3. 状况描绘信息,如 OK。

常见的状况码有以下几个:

  • 200:回来成功。
  • 301:永久重定向。
  • 302:暂时重定向。
  • 404:未找到页面。
  • 500:服务器程序犯错。

2.2.2 呼应报头

呼应报头和恳求报头相似,也是以 “name: value” 的方式存在的,每个报头占一行。 常见的报头有 Content-Type,它是用于描绘呼应正文的数据类型的,常见的数据类型有:json 格局的 application/json 和 HTML 格局的 text/html。

2.2.3 空行

一个没有任何内容的空行,用于分隔状况行和呼应正文的特别组成部分。

2.2.4 呼应正文

回来给客户端的一切数据。

总结

HTTP 超文本传输协议,用于完成服务器端和客户端的数据传输。它的特色是简略快速、无衔接、无状况、可传递恣意数据类型和一对一通讯。HTTP 协议由两部分组成:恳求目标 Request 和呼应目标 Response。

对错审之于己,毁誉听之于人,得失安之于数。

大众号:Java面试真题解析

面试合集:gitee.com/mydb/interv…