HTTP与HTTPS(干货)

一、HTTP是什么?

首先,HTTP是一种协议,它的全名叫超文本传送协议。这么听感觉很抽象,那它用来干什么的呢?OSI七层协议里面的应用层知道吧,它就是面向事务的应用层协议,它是万维网上能够可靠地交换文件的重要基础,注意,协议HTTP不仅传送完成超文本跳转所需的信息,也传送任何可以在网上得到的信息,如文本,超文本,声音和图像等。

二、HTTP的工作方式

我们在介绍工作方式之前,先看一下HTTP的特点,能帮助我们更好的了解工作方式。

(1)HTTP的核心特点:

1.无连接:HTTP本身是无连接的,也就是在通信双方交换HTTP报文之前不需要建立连接。

2.无状态:同一个客户在多次访问同一个服务器上的页面时,服务器的页面与第一次相同

3.明文传输:传输过程中,数据不加密

4.灵活可扩展:支持任意类型的数据传输

知道了上述的特点之后,我们再来大致了解一下HTTP的响应类型

(2)HTTP的请求响应类型

HTTP使用客户端—服务器的(C/S)架构:

客户端(Client)(如浏览器)发送 HTTP 请求(Request)。

服务器(Server)(如 Nginx、Apache)返回 HTTP 响应(Response)。

web 浏览器请求:

请求过程如下 ⬇️

  1. 用户输入地址后回车或点击链接
  2. 浏览器拼装 HTTP 报文并发送请求给服务器
  3. 服务器处理请求后,发送响应报文给浏览器
  4. 浏览器解析响应报文并使用渲染引擎显示到界面

APP 客户端请求:

请求过程如下 ⬇️

  1. 用户点击或界面自动触发联网需求
  2. Android 代码调用拼装 HTTP 报文并发送请求到服务器
  3. 服务器处理请求后发送响应报文给手机
  4. Android 代码处理响应报文并作出相应处理(如储存数据、加工数据、显示数据到界面)

(3)工作方式

1.建立TCP连接

因为之前说过,HTTP是无连接的,但是它依赖传输层的面向连接的TCP协议来保证可靠传输。

流程:

客户端(如浏览器)发起 TCP 三次握手(SYN → SYN-ACK → ACK)与服务器建立连接。

连接建立后,HTTP 请求和响应通过该 TCP 连接传输。

2.客户端发送HTTP请求

HTTP 请求报文由请求行(Request Line)、请求头(Request Header)、请求体(Request Body)这三部分组成

请求行定义请求的基本操作目标和协议版本。(告诉服务器做什么,对谁做

请求头:传递请求的元数据(附加信息),控制客户端和服务器的交互行为(如何做

请求体:携带客户端发送的实际数据(仅某些方法需要,如 POSTPUT)(提供具体数据

请求行内容: 

请求头内容:

 

3.服务器处理请求并返回 HTTP 响应(Response) 

同样的,服务器解析请求后,返回 状态行(Status Line)、响应头(Headers)、响应体(Body)

4.关闭连接

三、请求方法都有哪些 

1.GET

  • 最常见的请求方式
  • 指定请求路径,向服务器请求资源
  • 只获取资源,不对服务器数据进行修改
  • 不发送 body
GET  /users/1  HTTP/1.1
Host: api.github.com

2.Post

  • POST方法用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用,
  • 包含 body,发送给服务器的内容写在 body 里面
POST  /users  HTTP/1.1
Host: api.github.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13

<entity-body>

3.PUT

  • 用于修改资源
  • 包含 body,发送给服务器的内容写在 body 里面
PUT  /users/1  HTTP/1.1
Host: api.github.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13

<entity-body>

4.DELETE

  • 用于删除资源
  • 不发送 body
DELETE  /users/1  HTTP/1.1
Host: api.github.com

5.HEAD

  • HEAD 与 GET 的使用方式完全相同。
  • 区别在于,HEAD 请求的返回响应中没有 Body
  • 用途:比如下载需求,返回的 Headers 中有下载内容的大小,可以用于显示进度。

 

四、为什么需要HTTPS 

1.HTTP的安全问题

之前提到过HTTP是明文传输的,明文传输就会出现安全隐患。那接下来看看HTTP的安全隐患。

(1)明文传输 → 数据易被窃听(无保密性)

  • 问题:HTTP 数据(如密码、银行卡号)以 明文形式传输,黑客可通过 抓包工具(如 Wireshark) 直接读取。

  • 风险

    • 登录凭据、聊天记录、隐私信息泄露。

    • 公共 Wi-Fi 下尤其危险(如咖啡馆、机场)。

  • HTTPS 解决方案

    • 使用 TLS 加密(如 AES),数据变为密文,即使被截获也无法解密。

(2)无完整性校验 → 数据易被篡改

  • 问题:HTTP 数据在传输中可能被 中间人(MITM) 篡改(如插入广告、恶意代码)。

  • 风险

    • 下载的软件被植入病毒。

    • 网页内容被篡改(如伪造银行转账页面)。

  • HTTPS 解决方案

    • 通过 哈希算法(如 SHA-256) 和 消息认证码(MAC) 确保数据未被修改。

(3)无身份认证 → 易遭伪装攻击

  • 问题:HTTP 无法验证服务器身份,黑客可伪造网站(如仿冒支付宝)。

  • 风险

    • 钓鱼网站:用户误输入密码,导致账号被盗。

    • 中间人攻击:通信被劫持(如公共网络)。

  • HTTPS 解决方案

    • 使用 数字证书(CA 签发) 验证网站真实性。

    • 浏览器会显示 锁图标 或警告无效证书。

2.HTTPS如何解决问题 

HTTPS(HyperText Transfer Protocol Secure)是为了解决HTTP协议在安全性上的不足而设计的,它通过引入加密认证机制来确保网络通信的安全。以下是HTTPS如何满足保密性、完整性和身份认证三大需求的解释:

(1). 保密性

问题:HTTP是明文传输的,数据(如密码、信用卡号)可能被窃听。
解决方案:HTTPS使用加密技术(如TLS/SSL协议)对传输的数据进行加密。

 对称加密:通信双方使用同一个密钥加密和解密数据(如AES算法),效率高。

非对称加密:在握手阶段通过公钥加密交换对称密钥(如RSA算法),确保密钥传输的安全。
效果:即使数据被截获,攻击者也无法解密内容。

(2). 完整性

问题:HTTP数据可能被篡改(如插入恶意代码或修改交易金额)。
解决方案:HTTPS使用消息认证码(MAC)数字签名

TLS协议通过哈希算法(如SHA-256)生成数据的摘要,并用密钥加密生成MAC。接收方验证MAC是否匹配。
效果:任何篡改都会导致MAC校验失败,接收方会丢弃数据。

(3). 身份认证

问题:HTTP无法验证对方身份,可能导致中间人攻击(如假冒银行网站)。
解决方案:HTTPS依赖数字证书证书颁发机构(CA)

数字证书:服务器向CA申请证书,证书包含公钥、域名、CA签名等信息。

CA验证:浏览器内置可信CA列表,会验证证书的真实性和有效性(如域名匹配、未过期)。
效果:用户可确认网站的真实身份,防止与伪造服务器通信。

3.HTTPS保证安全机制的核心技术

 (1) 对称加密

特点

  • 加密和解密使用 同一个密钥(如 AES-256)。

  • 速度快,适合加密大量数据。

  • 分类

    • 流式加密(如 RC4,已淘汰):逐比特加密。

    • 分组加密(如 AESDES):按固定块(如 128bit)加密。

(2)非对称加密

特点

  • 使用 公钥(public key) 和 私钥(private key) 配对:

    • 公钥加密 → 只能用 私钥解密(用于密钥交换)。

    • 私钥签名 → 只能用 公钥验证(用于身份认证)。

  • 计算复杂,性能低,仅用于关键数据(如交换对称密钥)。

密钥交换流程(TLS 握手)

  1. 客户端用 服务器的公钥 加密一个随机数(pre-master secret)。

  2. 服务器用 私钥 解密,得到 pre-master secret

  3. 双方基于 pre-master secret 生成 对称加密密钥session key)。

  4. 后续通信使用 对称加密(如 AES)提高效率。

(3) 哈希算法

特点

  • 将任意数据映射为固定长度(如 SHA-256 输出 256bit)。

  • 不可逆(无法从哈希值还原原始数据)。

  • 用于校验数据完整性(如文件下载)。

用途

  • 生成 数字签名(防篡改)。

  • 校验文件完整性(如 checksum)。

(4)数字签名

作用

验证数据来源(认证) + 确保数据未被篡改(完整性)。

流程

  1. 发送方

    • 对数据计算 哈希值(如 SHA-256)。

    • 用 私钥加密哈希值 → 生成 签名

    • 发送 原始数据 + 签名

  2. 接收方

    • 用 公钥解密签名 → 得到哈希值 H1

    • 对原始数据计算哈希值 H2

    • 比较 H1 == H2,若一致则数据未被篡改。

(5)证书机制

作用:确保公钥的真实性(防中间人攻击)。

证书内容

  • 域名、公钥、签发者(CA)、有效期、数字签名等。

验证流程

  1. 浏览器检查证书是否由 可信 CA 签发(如 DigiCert、Let’s Encrypt)。

  2. 验证证书 是否过期 或 域名是否匹配

  3. 用 CA 的公钥 解密签名,比对证书哈希值是否一致。

证书链(Chain of Trust)

  • 根证书(Root CA)→ 中间证书(Intermediate CA)→ 服务器证书。

  • 根证书预装在操作系统/浏览器中。

五、HTTP与HTTPS主要区别 

HTTP传输的数据是明文,容易被窃听者截取和篡改。

HTTPS通过加密传输数据,使得内容对窃听者不可见,从而保护了数据的隐私性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值