HTTP(Hyper Text Transfer Protocol)超文本传输协议,下文简称 HTTP,它的作用是用于实现服务器端和客户端的数据传输的。它可以传输任意的数据类型,如文本、HTML、图片、文件、声音等类型。
简单来说,HTTP 的作用就像一个“快递”一样,用来承载客户端(浏览器)和服务器端的数据传输,如下图所示:
文章图片
1.HTTP 特点
HTTP 的主要特点有以下 5 个:
- 简单快速:客户端向服务器端发送请求时,只需传递请求方法、路径和请求参数,因为协议简单,所以使得 HTTP 服务器的程序规模小,因而通信速度很快。
- 无连接:所谓的无连接指的是,每次连接只处理一个请求。服务器处理完客户的请求后,会立即断开连接。
- 无状态:HTTP 不会记录每次请求的身份信息,因此前一次请求和后一次请求相互“不认识”。
- 可传递任意数据类型:HTTP 允许传输任意数据类型,只需要在请求头中标识数据类型 Content-Type 即可。
- 一对一通讯:每次 HTTP 请求,都是一个客户端对应一个服务器端。
2.HTTP 组成HTTP 是由以下 2 部分组成的:
- 请求对象 Request(客户端请求)。
- 响应对象 Response(服务器响应)。
文章图片
2.1 请求对象
请求对象包含 4 部分内容:
- 请求行
- 请求报头
- 空行
- 请求正文
文章图片
2.1.1 请求行 请求行包含了以下 3 部分内容:
- 请求类型 Method,如 GET。
- 请求的 URL 地址,如 https://www.baidu.com。
- HTTP 版本号,如 HTTP/1.1。
文章图片
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.4 请求正文 业务系统中要传递参数。
2.2 响应对象
响应对象也是由 4 部分内容组成的:
- 状态行
- 响应报头
- 空行
- 响应正文
文章图片
2.2.1 状态行 状态行用于描述服务器的返回状态,它由 3 部分组成:
- HTTP 版本号,如 HTTP/1.1。
- 状态码,如 200。
- 状态描述信息,如 OK。
- 200:返回成功。
- 301:永久重定向。
- 302:临时重定向。
- 404:未找到页面。
- 500:服务器程序出错。
常见的报头有 Content-Type,它是用于描述响应正文的数据类型的,常见的数据类型有:json 格式的 application/json 和 HTML 格式的 text/html。
2.2.3 空行 一个没有任何内容的空行,用于分隔状态行和响应正文的特殊组成部分。
2.2.4 响应正文 返回给客户端的所有数据。
总结 HTTP 超文本传输协议,用于实现服务器端和客户端的数据传输。它的特点是简单快速、无连接、无状态、可传递任意数据类型和一对一通讯。HTTP 协议由两部分组成:请求对象 Request 和响应对象 Response。
是非审之于己,毁誉听之于人,得失安之于数。
公众号:Java面试真题解析
【面试突击64(了解 HTTP 协议吗())】面试合集:https://gitee.com/mydb/interview
推荐阅读
- Java面试总结|MySQL数据库面试题总结(2022最新版)
- 面试突击59(一个表中可以有多个自增列吗())
- #yyds干货盘点#Java面试经典100问
- 别慌,在Java面试的时候,面试官会这样问关于框架的问题()
- 面试突击51(为什么单例一定要加 volatile())
- Java面试官(如何正确使用 Spring 注入集合类型())
- 面试突击49(说一下 JUC 中的 Exchange 交换器())
- java面试总躲不过的并发(volatile原理 + happens-before原则)
- 阿里一面,说说你对zookeeper中ZAB协议的理解()