HTTP请求响应机制


在这里插入图片描述

前言

HTTP(HyperText Transfer Protocol,超文本传输协议),它是一种用于从网络服务器传输超文本到本地客户端(浏览器)的传输协议。

例子参考书籍:《Java Web从入门到项目实践(超值版)》

HTTP请求机制详解

客户端发送请求

在这里插入图片描述

1. 两者建立TCP连接,客户端通过向服务器发送请求消息来启动 HTTP 请求。
2. 请求消息由请求行、标头和可选的消息正文组成。
3. 请求行包含指示所需操作、目标 URL 和 HTTP 版本的 HTTP 方法(如 GET、POST、PUT、DELETE)。
4. 标头提供有关请求的其他信息,例如客户端的用户代理、接受的内容类型、Cookie 等。
5. 消息正文(如果存在)携带表单参数或有效负载等数据。

服务端处理请求

在这里插入图片描述

1. 服务器从客户端接收 HTTP 请求消息。
2. 服务器根据请求行、标头和消息正文中提供的信息处理请求。

服务器端生成响应请求

在这里插入图片描述
1. 处理请求后,服务器会生成 HTTP 响应消息。
2. 响应消息由状态行、标头和可选的消息正文组成。
3. 状态行包含 HTTP 版本、状态代码和状态消息。状态代码指示请求的结果,例如 200 正常、404 未找到、500 内部服务器错误等。
4. 标头包含有关响应的其他信息,例如内容类型、内容长度、缓存指令等。
5. 消息正文携带实际的响应数据,例如 HTML 内容、JSON 数据或文件附件。

服务器发送响应

在这里插入图片描述

1. 服务器将生成的响应消息发送回客户端。
2. 客户端接收响应并根据状态代码、标头和消息正文对其进行处理。

客户端处理响应

在这里插入图片描述

1. 客户端读取响应状态行以确定请求是成功还是失败。
2. 客户端检查响应标头以获取其他信息。
3. 如果响应包含消息正文,则客户端会相应地读取和解释数据。

请求-响应周期结束

在这里插入图片描述

1. 处理完响应后,请求-响应周期即告完成。
2. 客户端和服务器可以根据需要启动后续 HTTP 请求和响应。
3. 关闭连接,客户端和服务器端都可以通过关闭套接字来结束TCP/IP连接。

HTTP的无状态协议特性

在这里插入图片描述

HTTP是无状态协议,这意味着每个HTTP请求与响应之间是独立的,服务器不会存储有关客户端的任何信息。

在每个请求之间,服务器不会维持客户端的状态。这也被称为"短连接"或"非持久连接"。每个请求都需要在连接建立后进行完整的认证和身份验证,而服务器在每个请求后都要处理完整的请求-响应过程。这使得服务器更加轻量级且容易扩展,因为它无需跟踪客户端状态或维护大量连接。

如果HTTP是有状态的,服务器将需要多次确认客户端的状态数据,这样会导致通信速度变慢并消耗更多的资源,因此HTTP的无状态是它成为互联网标准协议的一个重要原因。

HTTP的超时机制

HTTP是依赖于瞬间的请求处理,但我们都知道网络传输都是有一定延迟性的,这是现有技术无法改变的客观事实。但是HTTP内置了一种超时机制,这种超时机制允许消息在传递时间方面上具有一定的灵活性。

超时机制:HTTP的超时机制指的是在进行HTTP通信时,如果在一定时间内没有得到期望的请求消息返回消息,则会触发超时操作。超时机制的目的是限制等待响应的时间,并处理可能的异常情况。

注意:超时机制是一种处理请求等待时间过长的机制,但并不能保证请求一定会在超时时间内完成。

结合以上两点举个例子

就比如,我们使用浏览器访问某个网站,这个网站使用HTTP通信,网站需要我们填写一些表单信息,我们按照要求去做了,并接下来点击了提交按钮,但由于某种原因,过了几秒,表单没有发出去,也就是请求或失败,浏览器会显示错误信息界面,同时表单清空(不考虑网站做了特殊机制来防止表单清空)。

这就是HTTP的无状态特性和超时机制的体现,当HTTP的请求和响应信息在规定的时间内没有发送或者传递成功,不保存任何已传递的信息。即使你没有提交表单成功,HTTP不保存任何表单信息。因此客户端每次都需要更新信息(重新填写表单)都必须重新向服务器发起请求,客户端收到服务端的发出的响应,才能刷新客户端的界面。

HTTP的后续发展

由于HTTP传输的数据是未加密的,甚至能说就是明文传输,这在安全性上是一个巨大缺陷。之后网景公司又设计了SSL协议用来对HTTP传输数据进行加密。这也就是后面广泛使用的HTTPS。
在这里插入图片描述

最后总结

简单来说,HTTP请求响应机制就是一种请求消息和响应信息的一来一回,通过这种机制,客户端和服务器能够相互通信,并能够传递数据和其他信息。

勘误:在之前我将客户端和浏览器搞混了,因为web应用程序是有C/S机构和B/S结构的,我是直接把客户端当成客户使用的电脑端了。
在这里插入图片描述

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罗不丢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值