HTTP

基础

HTTP 超文本传输协议 ,应用层协议。主要用于 Web 上传输超媒体文本的底层协议,经常在浏览器和服务器之间传递数据。通信就是以纯文本的形式进行。

HTTP 是无状态

无状态是 HTTP 协议对客户端请求状态没有进行存储,比如每次请求都需要重新登录

HTTP 是无连接

无连接主要是限制每次连接只处理一个请求。每次请求都是客户发起请求,服务端响应请求,然后就断开连接。这期间就是通过三次握手建立连接,四次挥手断开连接。每次请求即便是多次请求并请求同一个资源,服务端都无法判断是否是相同请求,都需要重新响应请求。

所以,为了解决客户端和服务端保持会话连接,通过 cookie 和 session 来记录 http 状态。

HTTP 的其他特点是简单快速,只需传送方法和路径就可以向服务端进行请求;还有支持传输任意类型的数据对象。

HTTPS

基础

https 是 http 的“升级”版本:

HTTPS = HTTP+ SSL/TLS

SSL 是安全层,TLS 是传输层安全,是SSL 的继承。使用SSL或TLS 可确保传输数据的安全性。

使用 HTTP 可能看到传输数据是: “这是明文信息”

使用 HTTPS 可能看到: “283hd9saj9cdsncihquhs99ndso”

HTTPS 传输的不再是文本,而是二进制流,使得传输更高效,且加密处理更加安全。

HTTPS 的工作流程

1、客户端请求 HTTPS 请求并连接到服务器的 443 端口,此过程和请求 HTTP 请求一样,进行三次握手;

2、服务端向客户端发送数字证书,其中包含公钥、证书颁发者、到期日期

现比较流行的加解密码对,即公钥和私钥。公钥用于加密,私钥用于解密。所以服务端会保留私钥,然后发送公钥给客户端。

3、客户端收到证书,会验证证书的有效性。验证通过后会生成一个随机的 pre-master key。再将密钥通过接收到的公钥加密然后发送给服务端

4、服务端接收后使用私钥进行解密得到 pre-master key

5、获得 pre-master key 后,服务器和客户端可以使用主密钥进行通信。

HTTP 与 HTTPS 区别

所以在回答 HTTP 与 HTTPS 的区别的问题,可以从下面几个方面进行回答:

  • 加密: HTTPS 是 HTTP 协议的更加安全的版本,通过使用SSL/TLS进行加密传输的数据;
  • 连接方式: HTTP(三次握手)和 HTTPS (三次握手+数字证书)连接方式不一样;
  • 端口: HTTP 默认的端口是 80和 HTTPS 默认端口是 443

HTTP2 是什么?

HTTP/2 超文本传输协议第2版,是 HTTP/1.x 的扩展。所以 HTTP/2没有改动HTTP的应用语义,仍然使用HTTP的请求方法、状态码和头字段等规则。

它主要修改了HTTP的报文传输格式,通过引入二进制分帧层实现性能的提升。

现有很多主流浏览器的 HTTPS/2 的实现都是基于SSL/TLS的,所以基于 SSL/TLS 的 HTTP/2 连接建立过程和 HTTPS 差不多。在建立连接过程中会携带标识期望使用 HTTP/2 协议,服务端同样方式回应。

常见考点

一、基础概念类

考点说明
HTTP 是什么?超文本传输协议,无状态、明文传输
HTTPS 是什么?在 HTTP 上加入 TLS/SSL 加密的安全协议
HTTP 和 HTTPS 的端口号HTTP 默认 80,HTTPS 默认 443

二、HTTP 与 HTTPS 的区别

维度区别点
安全性HTTP 明文传输,HTTPS 加密传输(TLS)
证书机制HTTPS 需要数字证书(CA签发)
性能HTTPS 初次连接需 TLS 握手,耗时更长,但可启用 HTTP/2
SEO搜索引擎优先抓取 HTTPS 页面
防劫持HTTPS 可防止运营商插入广告,防止中间人攻击

三、HTTPS 的加密原理

考点说明
对称加密传输数据(快,但密钥要安全传输)
非对称加密用于传输对称密钥(RSA,较慢)
TLS/SSL 握手流程客户端发起请求 → 服务端返回证书 → 协商加密套件 → 建立安全连接
数字证书验证服务端身份,防止钓鱼网站

四、HTTP 演进相关

考点说明
HTTP/1.0、1.11.1 支持长连接(keep-alive)、分块传输、缓存机制更完善
HTTP/2多路复用、首部压缩、服务器推送,提高性能
HTTP/3基于 QUIC 协议,减少握手延迟,适合弱网环境
HTTPS 与 HTTP/2 的关系HTTP/2 强制使用 HTTPS

五、常见安全问题

问题HTTPS 处理情况
中间人攻击HTTPS 可防止,数据加密且验证证书
DNS 劫持仍可能发生,HTTPS 无法防止 DNS 被篡改,但 DoH 可以解决
数据篡改HTTPS 提供完整性验证(MAC)防止篡改

六、证书相关

考点说明
CA 机构签发数字证书的权威机构
自签名证书浏览器会报不可信
证书包含内容公钥、域名、有效期、颁发者、指纹等
浏览器信任机制通过内置的 CA 根证书链进行验证

七、实际开发中相关问题

问题说明
HTTPS 页面中使用 HTTP 资源(混合内容)浏览器会警告或阻止加载
前后端接口跨域问题HTTPS 与 HTTP 跨协议时需注意 CORS 和 HSTS 配置
HSTS强制浏览器使用 HTTPS 访问
使用 HTTPS 后访问变慢TLS 握手耗时,可通过缓存连接、启用 HTTP/2、优化证书链来缓解

八、扩展:HTTPS 优化技巧(高阶)

技巧说明
使用 CDN 加速 HTTPS减少跨地区 TLS 握手延迟
TLS 会话缓存(Session Resumption)提高复用率,减少重新握手
OCSP Stapling减少证书状态验证的 RTT
启用 ALPN 协商支持 HTTP/2/3 的前提