1. HTTP 基础
- HTTP:应用层协议,无状态。服务器不记住上一次是谁访问。
- 请求报文结构:请求行 + 请求头 + 空行 + body
- 响应报文结构:状态行 + 响应头 + 空行 + body
2. 常用状态码
- 200 OK:请求成功
- 301:永久重定向,浏览器缓存跳转规则
- 302:临时重定向,不缓存,每次请求都询问服务器
- 304:资源没有修改,客户端直接用本地缓存
- 401:未认证(未登录,缺少凭证)
- 403:认证成功,但无权限访问,禁止访问
- 404:资源不存在
- 500:服务端代码异常
- 502:网关错误,Nginx 连不上后端服务
- 503:服务过载 / 正在维护,拒绝处理请求
- 504:网关超时,后端处理太久没返回
3. HTTP 请求方法(REST)
- GET:查询资源,参数放 URL,只读,可缓存
- POST:新建资源,数据放 body
- PUT:全量更新资源,整体覆盖
- DELETE:删除资源
4. Cookie & Session(解决无状态)
- Cookie:浏览器端存储 ,每次请求自动带上。由服务器
Set-Cookie响应头下发。一般存 sessionid。 - Session:服务器端存储,保存用户登录信息。
- 逻辑:登录成功,服务器生成 sessionid,通过 Set-Cookie 给到浏览器;后续请求浏览器携带 Cookie 里的 sessionid,服务器查表识别用户。
5. HTTP vs HTTPS
- HTTP:80 端口,明文传输,存在窃听、篡改、伪装风险
- HTTPS = HTTP + TLS;443 端口;加密传输;具备加密、完整性校验、身份认证三大能力
- 两套加密搭配:
- 非对称加密(公私钥):协商预主密钥、证书验签,速度慢
- 对称加密:握手完成后,传输网页业务数据,速度快
6. CA 数字证书
- CA:可信第三方机构;网站申请证书,提交公钥 + 域名信息。
- 证书内容:域名、网站公钥、有效期、CA 签名。证书不含网站私钥!
- CA 签名:CA 用CA 私钥对证书信息的摘要加密。
- 浏览器校验:使用内置 CA 根证书里的CA 公钥验签,对比哈希摘要,同时检查域名、有效期。
7. TLS1.2 握手完整流程(你整理的版本)
- Client Hello:客户端发送随机数 A + 支持的加密套件列表
- Server Hello:服务端返回随机数 B + 选定加密套件,下发 CA 证书
- 客户端校验证书:CA 公钥解密 CA 签名拿到原始摘要;本地重新计算证书信息摘要,比对;校验域名、有效期
- 客户端生成预主密钥 PMS,用证书内服务器公钥加密发给服务器
- 服务器用自己服务器私钥解密,拿到 PMS
- 双方用【A + B + PMS】各自计算,得到相同对称会话密钥
- 握手校验报文,握手完成;后续业务流量使用会话密钥对称加密传输
加密套件:一套算法组合,握手阶段客户端和服务器协商双方共用的加密算法。
8、常见 Header
请求头
- Host:目标主机域名
- User-Agent:客户端浏览器 / 设备信息
- Referer:来源页面
- Accept:客户端能接收的响应类型
- Accept-Encoding:支持的压缩 (gzip)
- If-Modified-Since / If-None-Match:协商缓存
- Authorization:认证信息(token)
- Cookie:携带 cookie
响应头
-
Server:服务器软件
-
Content-Type:响应体 MIME 类型
application/json/text/html -
Content-Length:响应体字节长度
-
Transfer-Encoding: chunked:分块传输
-
Cache-Control / Expires:强缓存
-
Set-Cookie:设置 cookie
#只返回响应行+响应头
curl -I www.baidu.com#跳过证书验证
curl -k www.baidu.com#不显示进度条
curl -s www.baidu.com#输出到文件flie.txt
curl -o file.txt www.baidu.com#指定请求方法
curl -X GET www.baidu.com#添加请求头
curl -H "Content-Type: application/json"#请求体数据
curl -d "{"title":"http学习","content":"curl实操"}"#追随重定向
-L