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

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

HTTP(Hyper Text Transfer Protocol)超文本传输协议,下文简称 HTTP,它的作用是用于实现服务器端和客户端的数据传输的。它可以传输任意的数据类型,如文本、HTML、图片、文件、声音等类型。
简单来说,HTTP 的作用就像一个“快递”一样,用来承载客户端(浏览器)和服务器端的数据传输,如下图所示:
image.png

1.HTTP 特点

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

  1. 简单快速:客户端向服务器端发送请求时,只需传递请求方法、路径和请求参数,因为协议简单,所以使得 HTTP 服务器的程序规模小,因而通信速度很快。
  2. 无连接:所谓的无连接指的是,每次连接只处理一个请求。服务器处理完客户的请求后,会立即断开连接。
  3. 无状态:HTTP 不会记录每次请求的身份信息,因此前一次请求和后一次请求相互“不认识”。
  4. 可传递任意数据类型:HTTP 允许传输任意数据类型,只需要在请求头中标识数据类型 Content-Type 即可。
  5. 一对一通讯:每次 HTTP 请求,都是一个客户端对应一个服务器端。

    2.HTTP 组成

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

  6. 请求对象 Request(客户端请求)。
  7. 响应对象 Response(服务器响应)。

每次 HTTP 请求都是由一次请求和一次响应构成的,如下图所示:
image.png

2.1 请求对象

请求对象包含 4 部分内容:

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

如下图所示:
image.png

2.1.1 请求行

请求行包含了以下 3 部分内容:

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

其中,所有的请求类型如下:
image.png

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. 响应正文

如下图所示:
image.png

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面试真题解析

面试合集:https://gitee.com/mydb/interview

相关文章
|
1月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
107 7
|
8天前
|
域名解析 缓存 网络协议
Web基础与HTTP协议
通过掌握这些基础知识和技术,开发者可以更加高效地构建和优化Web应用,提供更好的用户体验和系统性能。
50 15
|
3天前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
6天前
|
缓存 网络协议 算法
从零开始掌握HTTP协议
本文介绍HTTP协议的演变,从HTTP1.0到HTTP2.0。HTTP1.0为无状态连接,每次请求独立;HTTP1.1引入持久连接、管道化请求和更多状态码;HTTP2.0采用二进制分帧、多路复用、头部压缩及服务器主动推送,大幅提升性能与用户体验。了解这些区别有助于开发者优化应用和服务。
|
6天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
42 1
|
1月前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】
|
1月前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
|
1月前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
64 11
|
1月前
|
缓存 安全 网络协议
HTTPS协议的历史发展
HTTPS协议的历史发展
44 8
|
1月前
|
安全 应用服务中间件 Linux
判断一个网站是否使用HTTPS协议
判断一个网站是否使用HTTPS协议
61 4