共计 1582 个字符,预计需要花费 4 分钟才能阅读完成。
HTTP(Hyper Text Transfer Protocol)超文本传输协定,下文简称 HTTP,它的作用是用于实现服务器端和客户端的数据传输的。它能够传输任意的数据类型,如文本、HTML、图片、文件、声音等类型。
简略来说,HTTP 的作用就像一个“快递”一样,用来承载客户端(浏览器)和服务器端的数据传输,如下图所示:
1.HTTP 特点
HTTP 的次要特点有以下 5 个:
- 简略疾速 :客户端向服务器端发送申请时,只需传递申请办法、门路和申请参数,因为协定简略,所以使得 HTTP 服务器的程序规模小,因此通信速度很快。
- 无连贯 :所谓的无连贯指的是,每次连贯只解决一个申请。服务器解决完客户的申请后,会立刻断开连接。
- 无状态 :HTTP 不会记录每次申请的身份信息,因而前一次申请和后一次申请互相“不意识”。
- 可传递任意数据类型 :HTTP 容许传输任意数据类型,只须要在申请头中标识数据类型 Content-Type 即可。
一对一通信 :每次 HTTP 申请,都是一个客户端对应一个服务器端。
2.HTTP 组成
HTTP 是由以下 2 局部组成的:
- 申请对象 Request(客户端申请)。
- 响应对象 Response(服务器响应)。
每次 HTTP 申请都是由一次申请和一次响应形成的,如下图所示:
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.3 空行
一个没有任何内容的空行,用于分隔申请报头和申请注释的非凡组成部分。
2.1.4 申请注释
业务零碎中要传递参数。
2.2 响应对象
响应对象也是由 4 局部内容组成的:
- 状态行
- 响应报头
- 空行
- 响应注释
如下图所示:
2.2.1 状态行
状态行用于形容服务器的返回状态,它由 3 局部组成:
- HTTP 版本号,如 HTTP/1.1。
- 状态码,如 200。
- 状态形容信息,如 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 面试真题解析
面试合集:https://gitee.com/mydb/interview