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

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.dtcms.com/a/251535.html

相关文章:

  • Vue3相关知识3
  • JS当中怎么定义一个类
  • Linux信号机制:进程异步通信的秘密
  • Kafka 可靠性保障:消息确认与事务机制(一)
  • XR-RokidAR-UXR3.0-Draggable 脚本解析
  • HTML的最基础入门知识,从零开始逐步讲解,适合为后续爬虫技术打基础:
  • 苏州SAP代理商:哲讯科技助力企业数字化转型
  • [python] 堆
  • 贝塞尔曲线的公式推导贝塞尔曲线的公式推导,和 SVG 中 Path 的贝塞尔曲线指令的理解记忆
  • 体验AI智能投资!AI Hedge Fund了解一下
  • Langflow 构建多代理和 RAG 应用的可视化框架
  • STM32103CBT6显示ST7789通过SPI方式显示柬埔寨文
  • 【Dify系列】【Dify 核心功能】【应用类型】【二】【文本生成】
  • 解决虚拟环境中文绘图显示问题
  • RFC4291-IPv6地址架构
  • 计算机求职提前批/求职什么时候投递合适
  • 从0开始学习R语言--Day24--稀疏建模
  • TopNet:基于Transformer的高效点云几何压缩网络模型详解
  • 基于C#部署YoloV5目标检测模型
  • 【系统分析师】2010年真题:综合知识-答案及详解
  • 6月15日星期日早报简报微语报早读
  • Babylon引擎(三)
  • 基于Ultralytics的RT-DETR改进思考
  • BEV 感知算法评价指标简介
  • Appium框架下载时卡主的解决办法(ERR_TLS_CERT_ALTNAME_INVALID)
  • 基于根茎式思维深化后的提示词设计案例
  • 【精选】计算机毕业设计基于SpringBoot高校社团管理系统 社团信息维护 活动发布报名 成员审核与公告发布平台源码+论文+PPT+讲解
  • 智能土木通 - 土木工程专业知识问答系统01:项目简介
  • 4.es、kibana容器的下载安装
  • C#最佳实践:为何应减少方法参数