HTTP学习笔记
HTTP全称 超文本传输协议(HyperText Transfer Protocol),是一种用于在网络上进行数据传输的协议,可以通俗理解为 这是电脑与电脑之间的沟通方式,主要用于网页上。
HTTP的组成和基本概念
- 客户端和服务器:HTTP 通常工作在客户端(如网页浏览器)和服务器之间。客户端向服务器发送请求,服务器处理请求并返回响应。
- 请求和响应:HTTP 的工作方式基于请求-响应模型。客户端发送一个请求(包括请求行、请求头和请求体),服务器处理请求并返回一个响应(包括状态行、响应头和响应体)。
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 版本。
请求头:包括客户端环境的信息,如浏览器类型、语言等。
请求体:包含需要发送给服务器的数据。
1
2
3
4
5
6
7
8
9POST /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
8HTTP/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 更安全?
- 数据加密(防窃听)
- 身份验证(防伪装)
- 数据完整性校验(防篡改,使用摘要算法如 SHA-256)