`
wuhua
  • 浏览: 2114471 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

http协议之chunk编码

    博客分类:
  • J2ME
EXT 
阅读更多

在有时服务器生成HTTP回应是无法确定消息大小的,这时用Content-Length就无法事先写入长度,而需要实时生成消息长度,这时服务器一般采用Chunked编码。  
    在进行Chunked编码传输时,在回复消息的头部有transfer-coding并定为Chunked,表示将用Chunked编码传输内容。采用以下方式编码:  
    Chunked-Body=*chunk  
           "0"CRLF  
           footer  
           CRLF  
    chunk=chunk-size[chunk-ext]CRLF  
        chunk-dataCRLF  
   
    hex-no-zero=<HEXexcluding"0">  
   
    chunk-size=hex-no-zero*HEX  
    chunk-ext=*(";"chunk-ext-name["="chunk-ext-value])  
    chunk-ext-name=token  
    chunk-ext-val=token|quoted-string  
    chunk-data=chunk-size(OCTET)  
   
    footer=*entity-header  
    编码使用若干个Chunk组成,由一个标明长度为0的chunk结束,每个Chunk有两部分组成,第一部分是该Chunk的长度和长度单位(一般不 写),第二部分就是指定长度的内容,每个部分用CRLF隔开。在最后一个长度为0的Chunk中的内容是称为footer的内容,是一些没有写的头部内 容。  
    下面给出一个Chunked的解码过程(RFC文档中有)  
    length:=0  
    readchunk-size,chunk-ext(ifany)andCRLF  
    while(chunk-size>0){  
    readchunk-dataandCRLF  
    appendchunk-datatoentity-body  
    length:=length+chunk-size  
    readchunk-sizeandCRLF  
    }  
    readentity-header  
    while(entity-headernotempty){  
    appendentity-headertoexistingheaderfields  
    readentity-header  
    }  
    Content-Length:=length  
    Remove"chunked"fromTransfer-Encoding

分享到:
评论

相关推荐

    ChunkedOutputStream.rar_Bodies_chunk _chunk http_http chunk_htt

    标签“bodies chunk_ chunk_http http__chunk http_chunk”进一步强调了关键词“chunk”和“http”,表明文件主要涉及HTTP协议中的分块数据传输。 在Java中,`ChunkedOutputStream`类通常用于服务器端,当服务器...

    HTTP Chunk协议等

    HTTP Chunked编码是一种在HTTP协议中传输大体积数据的方式,主要用在HTTP 1.1版本中,因为HTTP 1.0不支持内容长度未知的响应。Chunked编码的引入解决了服务器无法预先知道响应体总长度的问题,允许数据分块发送,每...

    ChunkedOutputStream.rar_Bodies_chunk _chunk http_http chunk

    标题中的“ChunkedOutputStream.rar_Bodies_chunk_chunk_http_http_chunk”暗示了我们正在讨论的是与HTTP协议中的分块传输相关的源代码,可能是一个实现Chunked输出流的程序。这个RAR文件包含了一个名为...

    HTTP chunked方式传输的C语言解析示例

    HTTP chunked编码是一种在HTTP协议中用于处理大文件或流式传输数据的方式。它允许服务器在不知道确切内容长度的情况下发送响应。这种方式对于那些在生成过程中才能确定大小的动态内容非常有用,例如,从数据库中实时...

    boost之http请求及chunked解析

    在HTTP协议中,请求由多个部分组成:请求行、请求头和可选的请求体。Boost.ASIO提供了一个名为`boost::asio::ip::tcp::socket`的类,你可以用它来创建一个TCP连接,从而发送HTTP请求。例如,你可以创建一个socket...

    修复chunk传输bug的ghttp

    Chunked编码是HTTP协议中一种传输数据的方式,主要用于解决HTTP响应体大小未知的情况。它将大块数据分割成一系列小的数据块(chunk),每一块都有一个长度标识,最后一个chunk通常用0长度标识结束。这种方式允许...

    对chunked编码进行解码

    一个对chunked编码进行解码的例子,通过java socket实现发送http请求,对gzip压缩的消息体进行解码处理。

    parse chunk

    在HTTP协议中,"Chunked编码"是一种传输机制,它允许服务器发送不确定长度的数据块,而无需预先知道整个响应的总大小。这种编码方式在处理大文件或动态生成的内容时非常有用,因为服务器可能无法在开始传输之前知道...

    http1.1的chunked协议解析

    根据 RFC 2616 的 3.6.1 节描述,chunked 编码通过将消息体分成一系列的块(chunk),每个块都有自己的大小指示符,后跟一个可选的尾部(trailer)来包含实体头(entity-header)字段,这种方式允许动态生成的内容在传输的...

    RTMP 协议下载C++实现

    - **Chunk Stream(分块流)**:RTMP协议通过将大块数据分割成小的Chunk Stream进行传输,以适应不同网络环境的带宽变化。 - **Command Messages(命令消息)**:用于建立连接、播放、发布等操作,如`connect`、`...

    gsoap http webapi

    gSOAP(Generic SOAP)是一个强大的开源工具,它为C/C++程序员提供了创建和使用Web服务的框架,尤其在HTTP协议和SOAP(Simple Object Access Protocol)协议的处理上表现出色。本篇文章将深入探讨如何使用gSOAP通过...

    rtmp协议文档.rar

    这些命令以AMF(Action Message Format)编码,是RTMP中的数据交换格式,支持多种数据类型,如字符串、数字、对象等。 3. 数据通道:在命令通道建立后,客户端和服务器可以创建多个数据通道来传输音视频数据。每个...

    关于PHP 如何用 curl 读取 HTTP chunked 数据

    在HTTP协议中,`Transfer-Encoding: chunked`是一种用于分块传输编码的方式,常用于服务器无法预先知道响应体总长度的情况。这种方式将响应体分成多个块(chunks),每一块都有一个大小标识,最后以一个零长度的块...

    http协议进阶之Transfer-Encoding和HttpCore实现详解

    Content-Encoding通常是对数据内容进行一些压缩编码操作,而Transfer-Encoding通常是对传输采用分块策略之类的。 Content-Length头的作用是指定待传输的内容的字节长度。如果想知道Transfer-Encoding和Content-...

    测试报告1

    在本文中,我们将深入探讨这些知识点,并...同时,报告还揭示了在处理chunk编码和gzip压缩数据时的处理机制,以及利用哈希表进行高效数据管理的方法。这些技术在网络安全监控、内容过滤和网络调试等领域有着广泛应用。

    从HTTP服务器下载文件

    本篇将深入探讨如何利用HTTP协议进行文件下载,这对于网络程序开发来说是一个重要的基础概念。 首先,理解HTTP的基本工作原理至关重要。HTTP是一种无状态、基于请求与响应模型的协议,客户端(通常是浏览器)向...

    实现bt下载的delphi代码

    这通常涉及解析Bencoding格式,一种特殊的字符串编码方式。 5. **建立连接**:找到其他peers后,使用TCP建立连接,并进行Handshake,交换各自的Info Hash和Peer ID。 6. **下载Pieces**:根据库提供的API,请求并...

    HTTP大文件传输

    1. **HTTP/1.1的Chunked编码**:HTTP/1.1引入了Chunked编码,允许服务器将大文件分成多个小块(chunk)发送,减少了对网络带宽的瞬间需求,改善了传输效率。 2. **HTTP/2多路复用**:HTTP/2协议通过TCP连接的多路...

Global site tag (gtag.js) - Google Analytics