HTTP协议基本知识点:工作原理、http请求、响应、连接以及缓存机制

目录

一、HTTP概述

二、HTTP的版本

三、HTTP请求

1.请求方法

2.请求头

四、HTTP响应

1.状态码

2.响应头

五、HTTP持久连接

六、缓存机制

1.CacheControl

2.ETag

3.LastModified

七、安全性

八、使用场景

总结


一、HTTP概述

 全称:超文本传输协议(HyperText Transfer Protocol)

 功能:用于在客户端(如浏览器)和服务器之间传输超文本数据(如HTML文档)。

 工作原理:基于请求响应模型客户端发送请求,服务器返回响应

二、HTTP的版本

HTTP/0.9:最初版本,仅支持GET请求,传输简单的HTML文档。

HTTP/1.0:引入了状态码、请求头和响应头,支持更多请求方法。

HTTP/1.1:当前广泛使用的版本,支持持久连接、分块传输等特性。

HTTP/2:引入了二进制分帧、多路复用等技术,提高了传输效率。

HTTP/3:基于QUIC协议,进一步减少延迟和提高安全性。

三、HTTP请求

1.请求方法

  •    GET:请求指定资源,数据通过URL传递。
  •    POST:向服务器提交数据,数据在请求体中。
  •    PUT:更新指定资源。
  •    DELETE:删除指定资源。
  •    HEAD:获取响应头,不返回响应体。
  •    OPTIONS:查询服务器支持的请求方法。

2.请求头

包含客户端信息、请求类型、接受的内容类型等,常见头部有:

  •      `Host`:请求的主机名。
  •      `UserAgent`:客户端软件信息。
  •      `Accept`:可接受的内容类型。
  •      `ContentType`:请求体的数据类型。

四、HTTP响应

1.状态码

指示请求的处理结果。

  •    1xx:信息性状态码(如100 Continue)。
  •    2xx:成功状态码(如200 OK)。
  •    3xx:重定向状态码(如301 Moved Permanently)。
  •    4xx:客户端错误状态码(如404 Not Found)。
  •    5xx:服务器错误状态码(如500 Internal Server Error)。

2.响应头

包含服务器信息、响应类型、缓存控制等。

常见头部:

  •      `ContentType`:响应体的数据类型。
  •      `ContentLength`:响应体的长度。
  •      `SetCookie`:设置客户端Cookie。

五、HTTP持久连接

HTTP/1.1默认使用持久连接,允许在同一连接上发送多个请求和响应,减少连接建立的开销。

Connection头:可以通过`Connection: keepalive`来保持连接。

六、缓存机制

1.CacheControl

用于控制缓存行为的响应头(如是否缓存、缓存的持续时间、以及缓存的隐私设置)。

  • no-cache: 强制要求缓存重新验证。
  • private: 表示响应仅可以被用户的浏览器缓存。
  • public: 表示响应可以被任何缓存区缓存。
  • max-age=<seconds>: 指定资源的最大有效时间,单位为秒。
  • no-store: 不缓存任何内容。

2.ETag

资源的唯一标识符,用于判断资源是否被修改。

  • 当客户端请求资源时,服务器返回资源及其ETag。
  • 客户端在下次请求时可以使用If-None-Match头部,携带上次的ETag。
  • 如果资源没有变化,服务器返回304 Not Modified响应,客户端可以继续使用缓存的版本。

3.LastModified

资源最后修改的时间,可以帮助客户端判断资源是否需要更新。

  • 服务器在响应中发送Last-Modified头部,表示资源的最后修改时间。
  • 客户端可以在后续请求中使用If-Modified-Since头部,携带上次的修改时间。
  • 如果资源自那时以来没有变化,服务器返回304 Not Modified响应。

七、安全性

HTTP本身是不提供加密的(明文传输),所以数据在传输过程中可能会出现被窃取或篡改的情况。

八、使用场景

 网页浏览:这种是最常见的。

 API通信:RESTful API通常会使用HTTP进行数据交换。

 文件下载:通过HTTP协议来下载文件。

总结

HTTP是一种用在客户端和服务器之间传输超文本数据的应用层协议,允许用户通过访问网页和其他资源。它本身是一个无状态的协议(每个请求都是独立的,就是说服务器是不会记住之前的请求状态,我们需要使用其他的机制来管理用户状态),而且数据在传输过程中是明文的,容易被窃听和篡改。

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

下一次春天見

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

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

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

打赏作者

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

抵扣说明:

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

余额充值