HTTP第三章 HTTP 消息

HTTP 消息是服务器和客户端之间交换数据的方式。

HTTP消息类型

  • 请求(request):HTTP 请求是由客户端发出的消息,用来使服务器执行动作
  • 响应(response):来自服务器的应答

HTTP 消息由采用 ASCII 编码的多行文本构成。在 HTTP/1.1 及早期版本中,消息通过连接公开地发送。在 HTTP/2 中,消息被分到多个 HTTP 帧中。

HTTP 请求和响应具有相似的结构,由以下部分组成:

  • 起始行(start-line)
    • 用于描述要执行的请求,或者是对应的状态,成功或失败。
    • 这个起始行总是单行的。
  • 标头(headers) -- 可选
    • 指明请求或描述消息主体(body)。
  • 空行(empty-line)
    • 空行指示所有关于请求的元数据已经发送完毕。
  • body -- 可选
    • 包含请求相关数据的主体(比如 HTML 表单内容),或者响应相关的文档。
    • 主体的大小有起始行的 HTTP 头来指定。

起始行(start-line)和 HTTP 消息中的 HTTP 头(HTTP headers)统称为请求头,而其有效负载被称为消息主体(body)。

HTTP 请求 和 HTTP 消息的区别

  • 起始行(start-line)
    • HTTP请求 起始行包含 :请求方法、请求目标、HTTP 版本
    • HTTP 响应 起始行包含: 协议版本、状态码(status code)、状态文本(status text)
  • 请求体
    • HTTP请求一般根据请求方法来决定需不需要请求体,一般 GET、HEAD、DELETE 和 OPTIONS,通常它们不需要主体。但不是一定没有。GET和 POST本身没有什么区别,是由于 HTTP 规定和 浏览器或服务器的限制让这两个方法有了区别。
    • HTTP 响应一般根据请求状态来决定需不需要请求体,具有状态码(如 201 或 204)的响应,通常不会有主体。

HTTP/2

HTTP/1.x 消息性能上的缺点

  • 标头不会被压缩
  • 两个消息之间的标头通常非常相似,但它们仍然重复传输
  • 无法多路复用

HTTP/2将HTTP/1.x 消息分成帧并嵌入到流(stream)中。

数据帧和报头帧分离,这将允许报头压缩。

将多个流组合,这是一个被称为多路复用(multiplexing)的过程。

结论

HTTP 消息是使用 HTTP 的关键;结构简单,可扩展性。

HTTP/2 帧机制是在 HTTP/1.x 语法和底层传输协议之间增加了一个新的中间层,而没有从根本上修改它,即它是建立在经过验证的机制之上。

相关推荐
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
wuyk5554 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
XUEYUAN52124 天前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
QYRdata4 天前
年均增速24.2%!机器人数据湖未来六年增长动能强劲
网络·机器人·服务发现
CHENKONG_CK4 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
chshang19924 天前
工业路由器是什么?浅谈5G工业网络中的IR602
网络·物联网·5g·智能路由器
萧瑟余晖4 天前
Netty 核心组件与 Reactor 模型详解
网络·架构
ITxiaobing20234 天前
IP 定位服务选型指南:从准确率到工程落地的技术考察
linux·服务器·网络
wuyk5554 天前
【Socket 进阶之路】第 9 章 Linux 网络服务量产稳定性优化|心跳保活、TIME_WAIT、SO_LINGER、内存池、断线重连、完整异常防护框架
linux·服务器·开发语言·网络·物联网
z落落4 天前
C#UDP+串口服务端+UDP 客户端(含 CRC16 校验)
网络·网络协议·udp