当前位置: 首页 > ds >正文

HTTP协议简易入门

请求格式、响应格式与通信全流程

HTTP协议规定了客户端与服务器通信的标准格式和流程,下面用最清晰的方式解析核心内容:


🔧 HTTP请求格式(客户端 → 服务器)
POST /api/login HTTP/1.1          → 请求行(方法+路径+协议版本)
Host: www.example.com              ↗
User-Agent: Mozilla/5.0            │
Content-Type: application/json     ├─ 请求头(键值对元数据)
Authorization: Bearer token123      │
Content-Length: 46                 ↘{"username":"john","password":"123"} → 请求体(传输数据)

结构解析:

  1. 请求行:包含请求方法(GET/POST/PUT/DELETE)、资源路径和HTTP版本
  2. 请求头:每行一个键值对,描述客户端信息/数据格式等(必含Host字段)
  3. 请求体:仅POST/PUT方法包含,格式由Content-Type指定(如JSON/表单数据)

📬 HTTP响应格式(服务器 → 客户端)
HTTP/1.1 200 OK                     → 状态行(协议版本+状态码+描述)
Server: nginx/1.18                  ↗
Content-Type: application/json       │
Set-Cookie: session=abc123;         ├─ 响应头(元数据控制指令)
Cache-Control: max-age=3600          │
Content-Length: 34                  ↘{"status":"success","user_id":1001}  → 响应体(实际数据)

结构解析:

  1. 状态行:包含状态码(如200成功/404未找到/500服务器错误)
  2. 响应头:控制缓存/数据类型/认证信息等(Content-Type必须声明数据类型)
  3. 响应体:HTML/JSON/文件二进制等实际传输内容

🚦 通信全流程(以浏览器访问网站为例)
  1. TCP连接建立:客户端与服务器通过三次握手建立TCP连接

    客户端 服务器 SYN SYN-ACK ACK 客户端 服务器
  2. HTTP请求发送:浏览器构建完整HTTP请求(自动添加必要请求头)

  3. 服务器处理:服务器解析请求→执行业务逻辑→生成响应

  4. HTTP响应返回:服务器返回状态码+响应头+响应体

  5. 资源加载:浏览器解析响应体:

    • 遇到<img>/<script>标签 → 发起新的HTTP请求获取资源
    • 接收到Set-Cookie → 后续请求自动携带Cookie
  6. 连接关闭:默认关闭连接(HTTP/1.1可复用连接)


🛡 关键协议特性
  1. 无状态性:每次请求独立(需用Cookie/Session/JWT维持状态)
  2. 明文传输:HTTPS通过SSL/TLS加密解决
  3. 版本演进
    • HTTP/1.1:持久连接(减少TCP握手)
    • HTTP/2:二进制分帧 + 多路复用(解决队头阻塞)
    • HTTP/3:基于QUIC协议(UDP实现更快连接)

深度探索推荐:C++学习一站式分享

http://www.xdnf.cn/news/14628.html

相关文章:

  • Spring AOP
  • csv文档批量转换xlsx,xls文档(带界面)
  • Go语言同步原语与数据竞争:数据竞争的检测工具
  • 2011-2020年各省互联网接入端口数数据
  • 打卡day54
  • AC-MT
  • C语言常用库函数
  • LangChain面试内容整理-知识点14:工具包(Toolkits)与用法
  • 生成对抗网络(GANs)入门介绍指南:让AI学会“创造“的魔法(二)【深入版】
  • Textacy:Python 中的文本数据清理和规范化简介
  • 自我实现的量子隐喻:在可能性场域中动态拓展涌现节点
  • LLMs:《WebDancer: Towards Autonomous Information Seeking Agency》翻译与解读
  • 02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序
  • Sa-Token全面深入学习指南
  • 【慧游鲁博】【15】后台管理系统功能完善:仪表盘、多模态交互日志、简单问答词条管理
  • 建造者模式Builder Pattern
  • 深度解析5W2H:高效思维与问题解决工具详解
  • 离散隐藏变量下期望最大化(EM)算法的简化
  • LeetCode 第77题:组合
  • SimpleQtLogger 使用总结
  • 深入理解滑动窗口算法:原理、应用与 C++ 实现
  • C# 事件详解
  • React组件通信——发布订阅(pub/sub)
  • 紧急救援!Ubuntu崩溃修复大赛
  • 在Qt中使用OpenGL显示大量点(点云)
  • 136. 只出现一次的数字
  • 算法题(力扣每日一题)—改变一个整数能得到的最大差值
  • Arthas 全面学习指南
  • 动手实践:LangChain流图可视化全解析
  • [从0到1]环境准备--anaconda与pycharm的安装