HTTP知识点

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:删除资源
  • Cookie:浏览器端存储 ,每次请求自动带上。由服务器Set-Cookie响应头下发。一般存 sessionid。
  • Session:服务器端存储,保存用户登录信息。
  • 逻辑:登录成功,服务器生成 sessionid,通过 Set-Cookie 给到浏览器;后续请求浏览器携带 Cookie 里的 sessionid,服务器查表识别用户。

5. HTTP vs HTTPS

  • HTTP:80 端口,明文传输,存在窃听、篡改、伪装风险
  • HTTPS = HTTP + TLS;443 端口;加密传输;具备加密、完整性校验、身份认证三大能力
  • 两套加密搭配:
    1. 非对称加密(公私钥):协商预主密钥、证书验签,速度慢
    2. 对称加密:握手完成后,传输网页业务数据,速度快

6. CA 数字证书

  • CA:可信第三方机构;网站申请证书,提交公钥 + 域名信息。
  • 证书内容:域名、网站公钥、有效期、CA 签名。证书不含网站私钥!
  • CA 签名:CA 用CA 私钥对证书信息的摘要加密。
  • 浏览器校验:使用内置 CA 根证书里的CA 公钥验签,对比哈希摘要,同时检查域名、有效期。

7. TLS1.2 握手完整流程(你整理的版本)

  1. Client Hello:客户端发送随机数 A + 支持的加密套件列表
  2. Server Hello:服务端返回随机数 B + 选定加密套件,下发 CA 证书
  3. 客户端校验证书:CA 公钥解密 CA 签名拿到原始摘要;本地重新计算证书信息摘要,比对;校验域名、有效期
  4. 客户端生成预主密钥 PMS,用证书内服务器公钥加密发给服务器
  5. 服务器用自己服务器私钥解密,拿到 PMS
  6. 双方用【A + B + PMS】各自计算,得到相同对称会话密钥
  7. 握手校验报文,握手完成;后续业务流量使用会话密钥对称加密传输

加密套件:一套算法组合,握手阶段客户端和服务器协商双方共用的加密算法。

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

相关推荐
xiaoye-duck10 小时前
《C++ 项目:手写大模型接入 SDK》ChatGPT接口设计(中):全量响应实现和测试
网络·c++·语言模型·chatgpt
无言听风雨丶12 小时前
systemd 与信号 / 僵尸进程:Linux 进程管理的底层逻辑与排错
linux·服务器·网络
小贾要学习12 小时前
【C++后端开发项目】Reactor 模型 / C++ 仿写 muduo HTTP 服务器:让底层网络库真正跑起网页
linux·服务器·c++·http·网络编程·muduo·reactor模型
g5zhu589613 小时前
没有公网ip的情况下,本地能ping服务器服务器不能ping本地,让服务器能访问本地某端口的简单方法
服务器·网络协议·tcp/ip
SDWAN_Cheap13 小时前
BGP是什么,广播IP是什么?两个容易混淆的概念拆解
网络·tcp/ip·bgp·广播ip
程序员JerrySUN13 小时前
PCIe Gen5 SSD 为什么读得快、写得慢?从存储原理到 Linux 性能实测
linux·服务器·网络
guizhoumen13 小时前
net core下WebSocket请求总是断开的解决方案
网络·websocket·网络协议
HKT_China13 小时前
香港电讯河套区创新科技中心暨AI机楼揭幕,以网络基建助力北部都会区发展
网络·ai
云边云科技_云网融合13 小时前
案例分享 | 某运动零售品牌多云治理实战:一套框架解决权限失控、网络混乱与成本黑箱
网络·零售
Liuqy-0514 小时前
IO模型与并发服务器
服务器·网络·select·多线程·epoll·并发服务器·io多路复用