0%

http学习笔记

HTTP学习笔记

推荐教程:https://juejin.cn/post/6844903673680789517

HTTP全称 超文本传输协议(HyperText Transfer Protocol),是一种用于在网络上进行数据传输的协议,可以通俗理解为 这是电脑与电脑之间的沟通方式,主要用于网页上。

HTTP的组成和基本概念

  • 客户端和服务器:HTTP 通常工作在客户端(如网页浏览器)和服务器之间。客户端向服务器发送请求,服务器处理请求并返回响应。
  • 请求和响应:HTTP 的工作方式基于请求-响应模型。客户端发送一个请求(包括请求行、请求头和请求体),服务器处理请求并返回一个响应(包括状态行、响应头和响应体)。

示例:http://www.google.com

http定义了选择的协议方式 www.google.com 则对应需要访问的ip地址

ip地址可以理解为每个人的家庭住址

过程:当我们在浏览器上输入一段网址后,浏览器就会发送请求到服务器,服务器接受请求后回传数据,这个数据经过电脑处理后就会返回我们通常看到的网页。

❗️ 并不是只有网址才会触发请求

例如在购物平台购物时,当点击购物按钮时,就已经隐匿地向服务器发送了请求,此时架构是在应用中实现

HTTP 方法

HTTP 定义了一些常见的方法来执行不同的操作,包括:

  • GET:获取资料,通常用于从服务器获取数据。
  • POST:上传资料,用于创建或更新资源。
  • PUT:更新指定的资源。
  • DELETE:删除指定的资源。
  • PATCH:覆盖资料

区别GET和POST方法:

特性 GET POST
目的 从服务器获取数据或资源 向服务器提交数据以处理或存储
数据位置 数据附加在 URL 的查询字符串中 数据放在请求体(Body)中
数据量 数据量有限,受 URL 长度限制 数据量没有严格限制,可以传输大量数据
安全性 数据暴露在 URL 中,相对不安全 数据不暴露在 URL 中,相对较安全
缓存 请求可以被缓存 请求一般不被缓存
书签 URL 可以被书签保存 URL 不适合直接书签
适用场景 获取资源或数据,如读取页面或搜索内容 提交表单、上传文件、修改或创建资源
示例请求 GET /page?name=value POST /submit
Content-Type: application/x-www-form-urlencoded
name=John&age=30

HTTP报文

报文就是客户端和服务器之间沟通所需要遵循的格式

  • 请求结构

    • 请求行:包含请求方法(如 GET、POST)、请求目标(如 URL)和 HTTP 版本。

    • 请求头:包括客户端环境的信息,如浏览器类型、语言等。

    • 请求体:包含需要发送给服务器的数据。

    🌟示例http://api/shop.com/card

    1
    2
    3
    4
    5
    6
    7
    8
    9
    POST /card HTTP/1.1  *请求行
    ---
    Host:api.shop.com *传送的目标地址与请求行组合成网址
    User-Agent:Mozila/5.0(windows...)Chrome *请求的发送地址
    Accept:text/plain *可接受的回传档案类型
    Content-Type:text/plain *传送的档案类型
    Con-Length:43 *内容长度
    ---
    {"card":1234567890."total_price":8787} *内容=>可以推断为刷卡的请求
  • 响应结构:

    • 状态行:包含 HTTP 版本、状态码(如 200、404)和状态消息。
    • 响应头:包含服务器的信息和响应的元数据,如内容类型、长度等。
    • 响应体:实际返回给客户端的数据,如网页内容、图片等。

    🌟示例:

    1
    2
    3
    4
    5
    6
    7
    8
    HTTP/1.1 200 OK
    ---
    Server:nginx *服务器软体类型
    Content-Type:text/plain *回传信息的类型
    Content-Length:7 *回传信息的长度
    Date:Fri,27 Aug 2021 20:09:07 GMT *回传回去的时间
    ---
    success

👀因此我们可以将请求和相应简单理解为两个人在相互写信,当然写信是需要遵循信的格式的 !

HTTP 状态码

HTTP 状态码用于表示请求的结果,常见的状态码包括:

  • 200 OK:请求成功,服务器返回请求的数据。
  • 201 Creat: 创建成功
  • 301 Moved Permanently:请求的资源已被永久移动到新位置。
  • 400 Bad Request: 发送的格式错误力
  • 401 Unauthorized:请求的资源比较敏感,需要验证
  • 403 Forbidden: 验证身份不合格
  • 404 Not Found:请求的资源未找到。
  • 500 Internal Server Error:服务器内部错误,无法完成请求。

✅ HTTP 与 HTTPS 的区别总结

一、📖 本质区别

项目 HTTP HTTPS
全称 HyperText Transfer Protocol HyperText Transfer Protocol Secure
是否加密 ❌ 明文传输,存在安全风险 ✅ 加密传输,安全性高
默认端口 80 443
加密机制 使用 SSL/TLS 协议实现加密
证书 不需要 需要向 CA 申请数字证书验证身份

二、🔐 安全机制

1. 加密方式:混合加密

HTTPS 使用 混合加密,结合对称加密和非对称加密:

加密类型 说明 优点 缺点
对称加密 通信双方使用相同密钥 加密速度快 密钥交换不安全
非对称加密 使用一对公钥和私钥 密钥交换安全 加密解密速度慢

👉 解决方案:先用非对称加密交换“会话密钥”,再用对称加密传输数据,即混合加密。


三、🔗 建立连接的过程

📡 HTTP:

  • 建立 TCP 连接(三次握手)→ 直接发送 HTTP 请求

🔐 HTTPS:

  • TCP 三次握手
  • TLS/SSL 握手过程(建立安全连接):
    • 客户端发起请求,携带支持的加密算法
    • 服务器返回证书和公钥
    • 客户端验证证书合法性,用公钥加密生成的对称密钥并发送给服务器
    • 服务器用私钥解密获取会话密钥
  • 建立完成后,使用 对称加密 传输数据

四、📃 数字证书的作用

  • HTTPS 需要向 CA(Certificate Authority)申请数字证书
  • 数字证书包含:网站身份、公钥、签名、有效期等信息
  • 作用:
    • ✅ 确认服务器身份是否可信(防止中间人攻击)
    • ✅ 公钥分发,确保密钥交换安全

五、📌 为什么 HTTPS 更安全?

  1. 数据加密(防窃听)
  2. 身份验证(防伪装)
  3. 数据完整性校验(防篡改,使用摘要算法如 SHA-256)