进阶 #network#http#https#web

HTTP / HTTPS

HTTP(超文本传输协议)是 Web 的"语言"——浏览器和服务器通过它交换 HTML、图片、API 数据。HTTPS 在 HTTP 上加了一层加密(SSL/TLS),让数据不被窃听

🍜 每一次打开网页——都是一次”点餐”

你在浏览器输入 www.baidu.com,按下回车——几毫秒后页面出现了。

这个过程中,你的浏览器(客户端)和百度服务器之间进行了一次HTTP 会话——就像你去餐厅吃饭:

你(浏览器)→ 看菜单(输入 URL)
你 → 告诉服务员你要什么(发送 HTTP 请求)
服务员 → 去厨房拿菜(服务器处理请求)
服务员 → 把菜端到你桌上(返回 HTTP 响应)

📐 HTTP(HyperText Transfer Protocol,超文本传输协议) 是 Web 的”语言”——定义了客户端和服务器之间怎么请求和响应。


📤 HTTP 请求——“我要什么”

浏览器每次请求,发给服务器的内容:

GET /index.html HTTP/1.1           ← 请求行(方法 + 路径 + 版本)
Host: www.example.com               ← 请求头(键值对)
User-Agent: Mozilla/5.0
Accept: text/html
Accept-Language: zh-CN
Cookie: session_id=abc123
                                    ← 空行
(请求体——GET 没有,POST 才有)    ← 请求体(可选)

请求方法

方法含义是否幂等是否有请求体
GET获取资源
POST提交数据
PUT整体替换
PATCH部分修改
DELETE删除资源可选
HEAD只获取响应头

💡 幂等 = 多次执行和一次执行效果相同。GET 请求 10 次和 1 次一样(不会改变服务器状态)。POST 提交 10 次订单——你会下 10 个订单(不幂等)。


📥 HTTP 响应——服务器的回复

HTTP/1.1 200 OK                     ← 状态行(版本 + 状态码 + 原因短语)
Content-Type: text/html              ← 响应头
Content-Length: 1234
Set-Cookie: session_id=abc123
Cache-Control: max-age=3600
                                    ← 空行
<html>                               ← 响应体(实际数据)
  <body>
    <h1>欢迎!</h1>
  </body>
</html>

状态码分类

范围类别含义常见例子
1xx信息请求已收到,继续处理101 Switching Protocols(WebSocket 升级)
2xx成功请求成功处理200 OK201 Created、204 No Content
3xx重定向需要进一步操作301 Moved Permanently302 Found、304 Not Modified
4xx客户端错误请求有问题400 Bad Request401 Unauthorized403 Forbidden404 Not Found
5xx服务器错误服务器出问题500 Internal Server Error、502 Bad Gateway、503 Service Unavailable

🔒 HTTPS——加密的 HTTP

HTTP 是明文传输的——你连了公共 WiFi 登录网站,密码在空气中裸奔。

HTTPS = HTTP + TLS(加密层)

HTTP: 你能看到的内容 → 明文传输 → 服务器
HTTPS:你能看到的内容 → 加密 → 服务器(中间人看到乱码)

HTTPS 握手过程(简化的 TLS 1.3):

1. 客户端 → 服务器:我要建立安全连接,支持这些加密算法
2. 服务器 → 客户端:选了这个算法,这是我的证书(含公钥)
3. 客户端验证证书→ 协商出对称密钥
4. 后续通信对称加密(AES-GCM)

📋 HTTP 版本演进

版本年份关键改进特点
HTTP/1.11997持久连接、管道仍是最广泛使用
HTTP/22015多路复用、头部压缩一个 TCP 连接并行传输
HTTP/32022基于 QUIC(UDP)减少连接延迟,解决 TCP 队头阻塞
# HTTP/2 的一个关键改进:多路复用
# HTTP/1.1:请求 A → 等响应 A → 请求 B → 等响应 B → ...
# HTTP/2:请求 A → 请求 B → 请求 C → ...
#          ← 响应 B ← 响应 A ← 响应 C(一个连接并行)

📝 小结

概念一句话
HTTPWeb 的通信协议——请求 + 响应模式
GET vs POSTGET 取资源(幂等),POST 提交数据(不幂等)
状态码2xx(成功)、3xx(重定向)、4xx(客户端错)、5xx(服务器错)
HTTPSHTTP + TLS 加密——防窃听、防篡改
HTTP/2多路复用——一个连接同时传多个请求
HTTP/3基于 QUIC(UDP)——解决 TCP 队头阻塞

为什么先学这个? HTTP 是 Web 的基础。下一个看看DNS 域名系统——怎么把 baidu.com 变成 IP 地址。