二、HTTP协议基础

本文详细阐述了HTTP协议的工作原理,包括客户端与服务器交互的基本流程,常用方法如GET、POST、PUT等及其应用场景,无状态协议的特点和Cookie在状态管理中的作用,以及持久连接和管线化技术如何提升性能。
摘要由CSDN通过智能技术生成

HTTP协议基础

1、HTTP协议用于客户端与服务端之间的通信

1.1客户端与服务端

请求资源(文本、图像等)的一端叫做客户端,提供资源响应的一端叫服务端。而HTTP协议就是用于客户端与服务器端之间的通信。
注意:在使用HTTP协议进行通信时,必定有一端是客户端另一端是服务端,但是他们两个的角色可能会互换。

1.2通过请求和响应的交换达成通信

HTTP 协议规定,请求从客户端发出,最后服务端响应请求并返回。(没有请求,就不会有响应)

如果客户端想要发起请求就需要提供请求信息(也就是请求报文),而请求报文是由请求方法(get、post等)、请求URI(统一资源标识符)、协议版本、请求首部字段(可选)、内容实体(参数)构成。
在这里插入图片描述

接收到请求的服务器,将处理结果以响应的形式返回(也就是响应报文)。
响应报文是由状态码、状态码原因短语、响应首部字段(可选)、实体主体构成(资源、数据等)。
在这里插入图片描述

2、HTTP协议中的方法

向请求 URI 指定的资源发送请求报文时,采用称为方法的命令。
方法的作用在于,可以指定请求的资源按期望产生某种行为。
HTTP/1.0 和 HTTP/1.1 支持的方法如下表:
在这里插入图片描述
注意:LINK 和 UNLINK 已被 HTTP/1.1 废弃,不 再支持。

GET
GET方法主要用来获取被 URI 识别的指定资源经服务器处理后返回的响应内容。

POST
POST 方法用来传输实体的主体。(平时开发时虽然GET也可以传输,但是大多使用POST方法请求,他们的目的不一样。)

PUT
PUT 方法用来传输文件。
在请 求报文的主体中包含文件内容,然后保存到请求 URI 指定的位置。(由于HTTP的PUT方法自身不带验证机制,所以可能会有安全问题,如需使用请配和其他验证机制)。

HEAD
获得报文首部。
和GET方法一样,只是不返回报文主体部分。主要用于确认URI 的有效性及资源更新的日期时间等。

DELETE
主要用于删除文件。
按照请求URI 删除指定的资源是与PUT相反的方法(同样不带验证机制)。

OPTIONS
用来查询针对请求 URI 指定的资源支持的方法。

TRACE
主要用来追踪路径。
有时请求想要连接到源目标服务器可能会通过代理中转、处理,TRACE 方法就是用来确认连接过程中发生的一系列操作(容易引发 XST(跨站追踪)攻击,所以不常用)。

CONNECT
CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协 议进行 TCP 通信。
主要使用 SSL(安全套接 层)和 TLS(传输层安全)协议把通信内容 加 密后经网络隧道传输。

3、HTTP协议状态

3.1无状态协议

HTTP 是一种不保存状态,即无状态协议。
HTTP 协议自 身不对请求和响应之间的通信状态进行保存。也就是说在 HTTP 这个 级别,协议对于发送过的请求或响应都不做持久化处理。

HTTP的无状态协议是为了快速处理大量事务,确保协议的可伸缩性,但是无状态也会带来其他的问题,需要使用其他技术来辅助保存状态(如cookie)。

3.2使用 Cookie 的状态管理

HTTP协议是无状态的,也就是说它无法根据上一次请求的状态来处理本次请求。假如我登录一个网站后在进行页面跳转的时候,登录状态不保存那么我每次都要进行重新登录操作非常麻烦,而在项目中还会有许多此类的场景,为了解决这种问题于是引入 了 Cookie 技术。

Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的 首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器 发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出 去。

服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一 个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前 的状态信息。
在这里插入图片描述
在这里插入图片描述

4、持久连接

HTTP 协议的初始版本中,每进行一次 HTTP 通信就要断开一次 TCP 连接。

也就是说我没请求和获取响应一次,TCP就要经历三次握手建立连接和四次挥手断开链接,当数据量很小的时候几乎不会造成影响,但是当数据有大量图片或者文件资源的时候,就会造成非常大的通信开销。
在这里插入图片描述

4.1持久化

为了解决上述TCP 连接的问题,HTTP想出了持久化链接方法,也就是说只要任意一端 没有明确提出断开连接,则保持 TCP 连接状态。一次连接可以进行多次请求和响应的交互。

持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额 外开销,减轻了服务器端的负载。可以使HTTP请求和响应更快速的结束,提高请求性能。
注意:在 HTTP/1.1 中,所有的连接默认都是持久连接,但在 HTTP/1.0 内并 未标准化(只有一部分持久化)。
在这里插入图片描述

4.2管线化

持久连接为请求管线化做了基础,之前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术 出现后,不用等待响应亦可直接发送下一个请求。

管线化技术使得请求和响应并发进行,在面对很多次数请求的时候,交互时间更加的快。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值