【JavaWeb篇】HTTP协议详解(面试必会)

举报
陈橘又青 发表于 2022/08/29 22:32:06 2022/08/29
【摘要】 1.什么是HTTP协议?HTTP 协议一般指 HTTP(超文本传输协议)。所有的 WWW 文件都必须遵守这个标准。HTTP 负责 web 服务器与 web 浏览器之间的通信,用于从 web 客户端(浏览器)向 web 服务器发送请求,并从 web 服务器向 web 客户端返回内容(网页)。HTTP 是基于 TCP/IP 通信协议来传递数据的(HTML 文件、图片文件、查询结果等)。 2.H...

1.什么是HTTP协议?

HTTP 协议一般指 HTTP(超文本传输协议)。所有的 WWW 文件都必须遵守这个标准。

HTTP 负责 web 服务器web 浏览器之间的通信,用于从 web 客户端(浏览器)向 web 服务器发送请求,并从 web 服务器向 web 客户端返回内容(网页)。

HTTP 是基于 TCP/IP 通信协议来传递数据的(HTML 文件、图片文件、查询结果等)。

2.HTTP请求 URL

HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包,HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。

URL包含了用于查找某个资源的足够的信息。

HTTP 的 URL 是由 http:// 起始与默认使用端口 80,而 HTTPS 的 URL 则是由 https:// 起始与默认使用端口443。

3.HTTP的工作原理

HTTP 协议工作于客户端-服务端架构上,浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求,Web 服务器根据接收到的请求后,向客户端发送响应信息。

但是需要注意一下几点:

  • HTTP 是无连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,节省传输时间。
  • HTTP 是媒体独立的:只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。
  • HTTP 是无状态的:HTTP 协议是无状态协议,无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就较快。

总的来说,HTTP通信包含了四个步骤:1.客户与服务器建立连接 2.客户向服务器提出请求 3.服务器接收请求,并根据请求返回相应的文件作为应答 4.客户与服务器关闭连接。

4.HTTP请求

客户端通过发送HTTP请求向服务器请求对资源的访问。,http请求由请求行,消息报头,请求正文三部分构成。

访问http:/baidu.com,打开浏览器的f12开发者模式:
在这里插入图片描述

4.1 HTTP请求数据格式

图:HTTP数据请求格式
在这里插入图片描述

HTTP请求行

请求行是请求数据的第一行,请求行以方法字段开始,后面分别是URL字段和HTTP协议版本字段,并以CRLF结尾。

HTTP请求头

消息报头由一系列的键值对组成,允许客户端向服务器端发送一些附加信息或者客户端自身的信息,主要包括:

  • Host: 表示请求的主机名
  • User-Agent: 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 …
  • Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT …) like Gecko;
  • Accept:表示浏览器能接收的资源类型,如text/*,image/或者/*表示所有;
  • Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
  • Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。

HTTP请求体

只有在发送POST请求时才会有请求正文,GET方法并没有请求正文。


例如:
在这里插入图片描述

4.2 HTTP请求方法

根据 HTTP 标准,HTTP 请求可以使用多种请求方法,HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。

HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

9种请求方法:

方法 描述
GET 请求指定的页面信息,并返回实体主体。
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。
PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。

5.HTTP响应

在接收和解释请求消息后,服务器会返回一个HTTP响应消息。

HTTP响应也由三部分组成,包括状态行,消息报头,响应正文。
在这里插入图片描述

5.1 HTTP响应状态行

状态行也由三部分组成,包括HTTP协议的版本,状态码,以及对状态码的文本描述。例如:
在这里插入图片描述

5.2 HTTP响应状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求。

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。分别是:

  • 1xx:响应中 - 表示请求已接收,继续处理
  • 2xx:成功 - 表示请求已被成功接收、理解、接受
  • 3xx:重定向 - 要完成请求必须进行更进一步的操作
  • 4xx:客户端错误 - 请求有语法错误或请求无法实现
  • 5xx:服务器端错误 - 服务器未能实现合法的请求

常见的状态码:

  • 200 OK :请求成功。一般用于 GET 与 POST 请求
  • 404 Not Found: 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
  • 501 Not Implemented :服务器不支持请求的功能,无法完成请求

6.HTTPS

那么,HTTP传输协议有什么缺点呢?

  • 通信使用明文(不加密),内容可能会被窃听
  • 不验证通信方的身份,因此有可能遭遇伪装
  • 无法证明报文的完整性,所以有可能已遭篡改

HTTP 协议中没有加密机制,但可以通 过和 SSL(Secure Socket Layer, 安全套接层 )或 TLS(Transport Layer Security, 安全层传输协议)的组合使用,加密 HTTP 的通信内容。属于通信加密,即在整个通信线路中加密。

HTTP + 加密 + 认证 + 完整性保护 = HTTPS(HTTP Secure )

HTTPS 采用共享密钥加密(对称)和公开密钥加密(非对称)两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。

所以应充分利用两者各自的优势, 将多种方法组合起来用于通信。 在交换密钥阶段使用公开密钥加密方式,之后的建立通信交换报文阶段 则使用共享密钥加密方式。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。