一,HTTP的定义
1,什么是超文本
包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。(可以理解为具有链接效益的普通文本
2,什么是URL
URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。URL由协议、主机和端口(默认为80)以及文件名三部分构成。(万维网独一无二的门牌号
3,什么是HTTP
HTTP(Hypertext Transfer Protocol,超文本传输协议)是互联网中最基础的应用层协议,用于实现客户端(如浏览器)与服务器之间的通信,是万维网(WWW)的核心协议。
4,HTTP版本
http无状态协议 不保任何数据,当前请求和上一次请求没有任何关联
如果需要保存状态数据,要么保存在浏览器本地,要么保存在服务器
http1.1(持久连接 http2.0(二进制帧 http3.0( QUIC 协议(基于 UDP)取代了 TCP 作为传输层协议
http/1.0 短链接
http/1.1 长链接,管道化,允许客户端在同一个连接上连续发送多个请求,而无需等待每个响应
http/2.0 二进制分帧,多路复用
http/3.0 udp传输,QUIC协议
概念 | 描述 | 主要版本 | 核心问题 |
---|---|---|---|
短连接 | 一个请求/响应就关闭TCP连接 | HTTP/1.0 (默认) | 连接建立开销巨大 |
长连接 | 多个请求/响应复用同一个TCP连接 | HTTP/1.1 (默认) | HTTP层队头阻塞 |
多路复用 | 在长连接上并行交错传输多个请求/响应 | HTTP/2 | TCP层队头阻塞 |
QUIC 连接 | 基于UDP的新型“长连接”,内置多路复用和加密 | HTTP/3 | 从根本上重新设计,解决所有问题 |
二,HTTP报文结构
1,请求报文
相当于数据包
accept 内容协商
accpect-language 支持的语言
connection 链接类型
cookie
dnt 浏览器发出的一种信号
host 必须头
user-agent 浏览器类型
2,响应报文
connection 链接类型
content-type 媒体类型
data 时间
server 版本号或名称
vary 版本或内容缓存
x-cache 响应缓存来自哪里
三,HTTP原理
1,基本构成
- 请求(Request):客户端向服务器发送的消息,包含请求方法、目标 URL、请求头、请求体等。
- 响应(Response):服务器对请求的回复,包含状态码、响应头、响应体(如 HTML、JSON 等数据)
2,请求
请求方法 http方法
POST 新增 (附加一个命名资源,如WEB页面
DELETE 删除 (删除WEB页面
PUT 修改 (请求存储一个WEB页面
GET 查询 (请求一个WEB页面
HEAD 获取头部信息
OPTIONS 查询当前url可以支持什么方法请求 /student get,post
2,响应
http状态码
1xx 表示请求过程中的状态
2xx 表示成功
200 请求成功,得到响应
201 请求成功,并且服务器创建新的资源((通常伴随 POST 或 PUT 请求)
204 请求成功,不需要任何实体返回
3xx 代表重定向
301(请求的资源已被永久分配到新的 URI(统一资源标识符),后续所有请求都应使用新 URI
302 临时重定向
304 资源未被修改。客户端可以使用缓存的版本。
4xx 代表客户端错误
403 (服务器拒绝请求(已验证身份,但无访问权限,如禁止访问的页面
404 (请求的资源不存在(最常见的错误,如 URL 拼写错误)
405 (请求方法不被允许(如用POST访问只支持GET的接口),响应头Allow会列出允许的方法
499 (客户端在服务器还没有返回最终响应之前,就主动关闭了连接。
5xx 代表服务端错误
501 (服务器不支持请求的方法(如客户端用PATCH,但服务器未实现)
502 (服务器作为网关 / 代理时,收到上游服务器的无效响应(如反向代理后端服务故障)
503 (服务器暂时无法处理请求(如维护中),响应头Retry-After可提示恢复时间
四,HTTPS
1,什么是HTTPS
HTTPS (HyperText Transfer Protocol Secure) 是一种用于安全通信的网络协议。最通俗的理解是:HTTPS = HTTP + 加密 + 认证 + 完整性保护。
它通过在标准的HTTP协议和TCP协议之间加入一个安全层(由 TLS 协议实现),来解决HTTP明文传输的所有安全问题。
2,与HTTP对比
特性 | HTTP | HTTPS |
---|---|---|
协议 | 应用层协议 | HTTP over TLS over TCP |
默认端口 | 80 | 443 |
安全性 | 明文传输,无认证,无完整性保护 | 加密、强认证、完整性保护 |
SEO | 无优势 | 搜索引擎(如Google)优先排名 |
性能 | 无加密开销,稍快 | 有TLS握手和加密开销,但通过优化(TLS 1.3、会话恢复)已几乎可忽略 |
必要性 | 逐渐被淘汰 | 现代网站的标配和最低安全要求 |
五,LTS
1,定义
在计算机软件领域,LTS 是 Long-Term Support 的缩写,中文意为 “长期支持”。
它是一个软件发布和维护的生命周期模型,主要用于操作系统、编程语言、框架和大型软件项目。
2,具体实现
第一次握手
客户端首先会发一个Client Hello消息,消息里面有客户端使用的 TLS 版本号、支持的密码套件列表,以及生成的随机数(Client Random),这个随机数会被服务端保留,它是生成对称加密密钥的元素之一。
第二次握手
当服务端收到客户端的Client Hello消息后,会确认 TLS 版本号是否支持,然后从密码套件列表中选择一个密码套件,以及生成随机数(Server Random)。
然后,服务端为了证明自己的身份,会发送Server Certificate给客户端,这个消息里含有数字证书。
第三次握手
服务端收到后,用私钥解密,得到客户端发来的随机数 (pre-master)。
至此,客户端和服务端双方都共享了三个随机数,分别是 Client Random、Server Random、pre-master。
生成完会话密钥后,客户端发一个Change Cipher Spec,告诉服务端开始使用堆成加密方式发送消息。
然后,客户端再发一个Encrypted Handshake Message(Finishd)消息,把之前所有发送的数据做个摘要,再用会话密钥(master secret)加密一下,让服务器做个验证,验证加密通信是否可用和之前握手信息是否有被中途篡改过。
第四次握手
服务器也是同样的操作,发Change Cipher Spec和Encrypted Handshake Message消息,如果双方都验证加密和解密没问题,那么握手正式完成。
步骤 | TLS 握手 | Token 认证 (以OAuth 2.0授权码模式为例) | 相似目的 |
---|---|---|---|
1. 初始问候 | 客户端发送 ClientHello ,列出自己的能力。 |
客户端将用户重定向到认证服务器(Authorization Server),带上自己的ID和请求的权限范围(scope )。 |
发起流程,声明自己的意图和能力。 |
2. 身份认证 | 服务器出示其SSL证书,证明自己的身份。 | 认证服务器要求用户登录(输入用户名密码),以此认证用户的身份。 | 核心身份验证。TLS验证服务器,OAuth验证用户。这是最大的不同点:验证对象不同。 |
3. 交换密钥/代码 | 客户端生成 PreMaster Secret ,用服务器的公钥加密后发送。 |
用户授权后,认证服务器发回一个授权码(Authorization Code) 给客户端。 | 交换一个一次性的、临时的秘密。这个秘密本身不是最终凭证,但用于获取最终凭证。且传输过程受到保护(TLS用非对称加密,OAuth要求用HTTPS并只能通过重定向URI传输)。 |
4. 换取最终凭证 | 双方用三个随机数生成最终的会话密钥(Session Key)。 | 客户端用授权码 + 自己的客户端密钥(Client Secret) 向认证服务器换取访问令牌(Access Token)。 | 用临时秘密换取最终的、用于后续通信的短期凭证。TLS得到的是对称密钥,OAuth得到的是Token。 |
5. 安全通信 | 后续所有通信都用会话密钥进行对称加密。 | 后续客户端访问资源服务器时,在请求头中带上 Access Token(如 Authorization: Bearer <token> )。 |
使用轻量级凭证进行高效、安全的后续操作。TLS用密钥加密所有通信内容,OAuth用Token来授权访问特定资源。 |
图解1-1