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

深刻理解HTTP

文章目录

  • HTTP是什么?
  • HTTP 常见的状态码
  • HTTP常见的头部字段
  • GET和HOST辨析
  • HTTP版本迭代

HTTP是什么?

HTTP叫超文本传输协议,本质是格式超级严格的“发货单/收获单”文本

底层的TCP/IP协议是货车和高速公路,只负责把字节流安全、有序地从 A 送到 B,当货车到底服务器时,怎么知道车里装的什么?是要入库?还是要退回?

HTTP协议就是货物上贴的标准化物流单

HTTP报文只分为两类:

1️⃣客户端发来的HTTP请求(Request)

  • 请求行:要求服务器干嘛,格式:[方法][][url][][版本][]代表空格
  • 请求头:请求的属性,格式::冒号加空格分割的键值对,每组键值对之间用\r\n分割,直到遇到空行,代表头结束
  • **空行: **\r\n,表示属性写完了,下面就是真货
  • **正文: ** 实际给服务器的数据,如果正文body存在,请求头里会有Content-Length标识正文长度

2️⃣服务器发来的HTTP响应(Response)

  • **状态行: ** 客户端要求的事情办得咋样,格式[版本号][][状态码][状态码解释]
  • 响应头: ** 响应的属性,格式::冒号加空格分割的键值对,每组键值对之间用\r\n分割,直到遇到空行**,代表头结束
  • **空行: ** 分割线
  • **正文: ** 实际给客户端的数据,如果正文body存在,请求头里会有Content-Length标识正文长度,如果服务器返回一个html页面,那么html页面是在正文body里

HTTP 常见的状态码

  • 2xx:成功,报文已经收到并被正确处理
    • 200 OK
    • 204 No Content 请求成功,我没啥发给你的
  • 3xx:重定向,资源位置发生变动,需要客户端重新发送请求
    • 301 Mover Permanently 永久重定向,比如我的网站原先是Vect.com,现在换成了VVect.com
    • 302 Found 临时重定向,比如用户没登陆就访问一些界面,返回302让登录
  • 4xx:客户端错误,请求报文有问题,服务器无法处理
    • 400 Bad Request,报文语法错误,匹配不上
    • 403 Forbidden,权限不足
    • 404 Not Found,访问资源不存在
  • 5xx:服务器错误,服务器处理请求时内部发生错误
    • 500 Internal Server Error,服务器内部崩溃
    • 501 Not Implemented,客户端的请求功能还不支持
    • 502 Bad Gateway,网关错误,业务进程挂了或者网络不通畅
    • 503 Service Unavailable,服务器繁忙,暂时无法响应

HTTP常见的头部字段

  • Host字段:客户端发送请求时,用来指定服务器的域名
    • Host: www.xxx.com
  • Content-Length字段:表明正文的长度字节
    • Content-Length: 18
  • Content-Type字段:表明正文的格式类型
    • Content-Type: text/html
  • Connection字段:标识长短连接
    • keep-alive:长连接,告诉底层TCP别断开
    • close:短连接,告诉底层,传完这个报文就close(fd)
  • Cookie(客户端 -> 服务端):浏览器每次发请求时,把本地存的身份 ID 带上
  • Set-Cookie(服务端 -> 客户端):服务器在登录接口处理完后,告诉浏览器:“把这个 ID 记住,下次带过来!”

GET和HOST辨析

GET是动作,在最前面,决定了要对货物做什么

HOST是名词,藏在属性栏,决定了货物要送到哪

  • GET请求方法
    • GET在请求行里,标识客户端要获取什么资源
    • GET请求一般没有正文
  • HOST请求头字段
    • HOST在请求头中,标识客户端最后要访问的目标主机域名
    • 为啥得有HOST?
      • 假设一台服务器(IP为11.22.33.44)同时挂了10个不同的网站,不同的网站解析出来的IP都一样,而客户端数据包到达服务器后,通过HOST字段就可以知道客户端要去哪!

HTTP版本迭代

  • HTTP/1.0短连接时代

    客户端发起请求 -> 建立 TCP 连接(三次握手) -> 服务器返回数据 -> 断开 TCP 连接(四次挥手)

    连接开销极大,假设网页里有100张小图片,就饿得连接100次,断开100次

  • HTTP/1.1长连接时代

    客户端和服务器建立一次 TCP 连接后,这条公路保持畅通,后续的多个 HTTP 请求都在这一条公路上排队跑

    队头请求数据过大,容易造成对头阻塞,后续请求只能阻塞等待

  • HTTP/2.0多路复用时代

    把HTTP报文切成极其细小的二进制帧,并打上 Stream ID 编号。这样一来,同一个 TCP 连接里,可以同时并发无数个请求,到了服务器再根据编号拼装起来

  • HTTP/3.0

    • 底层采用UDP改造的QUIC协议

    • 减少三次握手和TLS握手时间

http://www.jsqmd.com/news/489661/

相关文章:

  • MinorGC的完整流程与复制算法深度解析
  • 企业用智能体要投入多少成本?2026避坑指南与主流产品横评
  • 2026年沈阳路灯厂TOP10榜单揭晓,哪家实力最强?
  • API 安全: 保护 AI 应用的交互接口
  • 分治算法应用:逆序计数(Counting Inversions)
  • 跨平台方案:Java如何支持多终端文件夹的目录结构分片上传与信创国产化适配?
  • Java 中 Date 与 LocalDate 的区别
  • cmu15445 25fall lec3个人笔记
  • 基于springboot的社交媒体平台的设计与实现
  • 揭秘:用分期乐2000元支付宝立减金回收的最佳方法 - 团团收购物卡回收
  • 海参最吸收的营养做法
  • 全域GEO源码系统开源,三大核心模块:语义显式化、结构化数据生成
  • 从零开始搭建 Logto 详细教程!
  • C语言:通用高级编程语言,现代编程语言母语及应用领域介绍
  • AI原生软件时代,中小软件公司的生存破局之路
  • ABB RobotStudio 工件坐标创建、程序加载与仿真运行:全面解析与实践指南
  • C语言介绍:起源、特性、应用领域及如何为学其他语言打基础
  • 拒绝做 AI 的 “饲养员”:前端程序员在 AI 时代的生存与进化指南
  • Node安装及卸载
  • LP3783A芯茂微5V2.1A低功耗原边反馈充电器芯片替代PL3378/C
  • S4-Info-Yi系统的数学接口缺失、补全及在薛定谔猫佯谬中的应用
  • 大模型命名规则全解析
  • 实测5款AI PPT工具|职场人/程序员必看,告别熬夜排版(2026最新版
  • C++ 06:构造函数——对象初始化的核心指南
  • CZ预判AI Agent支付迎爆发 MoltsPay上线测试网降低开发门槛
  • 3.16学习总结
  • 高频注入foc方案应用于无感PMSM永磁同步电机驱动器,实现稳定无抖动堵转功能,附源码原理图与...
  • 2026权威评测:毕业论文AIGC降重盘点,附免费试用
  • 企业级数据仓库分层
  • 裸辞转行干网络安全裸辞转行干网络安全