HTTP 发送流数据类型详解

更新时间:2024-04-23 12:46:50   人气:8571
在计算机网络通信中,HTTP(超文本传输协议)是最为广泛应用的协议之一。它主要用于分布式、协作式和多媒体信息系统,在万维网上传输数据。然而,默认情况下,HTTP 以“请求-响应”的模式工作,并且每个消息体通常被视为独立的整体进行发送与接收。但在某些场景下,如实时音视频流或连续的数据推送服务,则需要一种机制来支持持续不断或者长时间连接下的 HTTP 流数据传送。

**HTTP 数据分块传输**

对于大文件或者是动态生成的内容,HTTP/1.1 引入了"Transfer-Encoding: chunked"这一特性来进行流数据处理。在这种方式下,服务器不会一次性知道内容的确切长度,而是将数据分割成多个块依次发送给客户端。每一块都包含自身的大小(十六进制表示),后跟一个换行符,然后是具体的数据部分,最后再用另一个空chunk标识结束。这样可以实现在不预先得知完整实体尺寸的情况下也能有效地逐步提供资源内容。

http

Chunked Body = * ChunkRLF

Chunk = ChunkSize [Extension] CRLF
; followed by ChunkData

ChunkSize = 1*HEX
; decimal number of octets in ChunkData,
; excluding the CRLF at the end of this section and
; any extension trailers.

...


**HTTP/2 的帧及流复用技术**

随着互联网应用需求的增长和技术的进步,HTTP/2 对传统HTTP进行了深度优化并引入了二进制分帧层以及多路复用的概念。在这个新版本里,所有传输的信息被分解到更小的消息帧内,而这些帧可以在同一个TCP链接上并发地交错发送——这就形成了所谓的流数据。

例如,通过HTTP/2中的DATA帧能够实现对单个HTTP响应主体的有效载荷数据流式的传输,同时还可以配合其他控制类帧比如HEADERS帧灵活管理各个逻辑上的HTTP事务上下文或者说流的状态。

尽管如此,严格意义上讲HTTP/2并不直接等同于传统的长轮询或是WebSocket这类全双工通讯模型提供的真正意义上的双向不间断数据流服务,但它确实极大地提升了基于HTTP的应用程序在网络带宽利用效率和服务端推送上性能表现。

总结来说,无论是早期HTTP/1.x阶段采用的分块编码方案还是后续HTTP/2标准带来的高级特性和改进措施,都在不同程度上增强了HTTP协议本身应对和支持流媒体数据的能力。这意味着开发者可以通过合理选择相应的技术和策略,更加高效稳定地完成各类涉及大规模或多维度交互时序性较强的数据交付任务。