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

HTTP协议--关于Chunked编码

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
  下一次将会讨论一些小问题,如POST方法的数据传输等。
  最后,还有一点要说的是,好像NetAnt的一个版本不支持Chunked编码,会显示无法确定内容长度,或许是版本太低的缘故,如果你也遇到这种问题,可以改用NetVampire或其它支持Chunked编码的下载程序试试。

分享到:
评论

相关推荐

    HTTP协议的chunked编码

    Chunked编码是HTTP协议(特别是HTTP/1.1版本)中的一种传输机制,它允许发送方将大响应体分块发送,而不是一次性发送完整个响应。这种编码方式尤其适用于那些在传输过程中大小未知或不断变化的数据流。 Chunked编码...

    Burpsuite插件之chunked-coding-converter使用方法1

    Chunked编码是HTTP协议中的一个特性,主要用在HTTP 1.1版本中,用于处理不确定长度的数据传输。这种编码方式允许发送方在不知道消息总长度的情况下,将数据分块发送,每一块都伴随着其大小的标识,最后一块则使用一...

    对chunked编码进行解码

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

    boost之http请求及chunked解析

    通过Boost.ASIO和对chunked编码的理解,你可以构建出高效的网络应用程序,能够处理各种大小的HTTP响应,无论它们是否使用了chunked编码。这个主题涉及到的代码示例和具体实现细节通常会比较复杂,但理解背后的原理和...

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

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

    http1.1的chunked协议解析

    ### HTTP 1.1 Chunked 编码详解 #### 协议概述 HTTP 1.1 的 Chunked 编码是一种特殊的传输编码方式,用于在不知道数据总长度的情况下传输动态生成的内容。根据 RFC 2616 的 3.6.1 节描述,chunked 编码通过将消息体...

    网络技术协议-HTTP协议

    ### 网络技术协议-HTTP协议详解 #### HTTP协议概述 HTTP(HyperText Transfer Protocol)是一种用于万维网(World Wide Web, WWW)数据传输的应用层协议,它定义了客户端与服务器之间的通信规则。HTTP协议是基于...

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

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

    httpcore-nio-4.4.6.zip

    3. **Entity Encoders/Decoders**:实体编码器和解码器用于处理HTTP消息体,支持各种内容编码格式,如GZIP压缩、chunked传输编码等。 三、网络编程实践 1. **异步编程模型**:HTTPCore-NIO采用事件驱动的异步编程...

    nginx-http-flv - module.rar

    在标题提到的 "nginx-http-flv - module.rar" 文件中,包含的是一个已经编译好的 Nginx 服务运行包,特别针对 RTMP (Real-Time Messaging Protocol) 和 HTTP-FLV 流媒体协议进行了优化。这个压缩包简化了部署流程,...

    windows下nginx-http-flv-module一键部署 非常方便

    - **编码与解码**:确保你的视频编码器支持FLV格式,并且客户端(如Flash Player)能够解码这个格式。 - **带宽与性能**:HTTP-FLV依赖于HTTP协议,可能不如RTMP高效,因为它没有内置的流控制。因此,要确保网络带宽...

    HTTP超文本传输协议-HTTP1.1中文版.doc

    HTTP/1.1还支持分块传输编码(Chunked Transfer Coding),允许服务器在不知道内容总长度的情况下发送数据,这对于动态生成的内容或大文件的传输非常有用。 此外,HTTP/1.1引入了缓存机制,通过Cache-Control和ETag...

    httpcore-4.2.4,httpclient-4.2.5,httpclient-cache-4.2.5,httpmime-4.2.5的jar包下载

    HTTP Core还支持传输编码(如chunked编码),内容编码(如gzip压缩)和HTTP连接的复用,这极大地提高了网络通信的效率。 **httpclient-4.2.5.jar** 是HttpClient的主要实现库,它基于HTTP Core构建,提供了更高级别...

    httpcore-4.1.2.jar 等

    4. **传输编码**:HTTP Core支持chunked编码和gzip压缩,可以处理大体积的数据传输,同时提高了数据传输的效率。 接下来,我们要提到的是与`httpcore-4.1.2.jar`一起使用的其他组件: - **httpclient-4.1.2.jar**...

    HTTP Chunk协议等

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

    http-core-4.3.3.jar源码

    2. **HTTP/1.1编码**:支持 chunked transfer encoding 和 content-length 编码,保证大文件的传输效率。 3. **异步处理**:HttpCore提供了异步执行HTTP请求的能力,通过Future接口进行回调,适应高并发场景。 五、...

    计算机网络-HTTP协议实验报告

    ### 计算机网络-HTTP协议实验报告 #### 第一关:HTTP基本请求与应答 **实验目的:** - 分析HTTP请求与应答中各字段的作用及取值。 - 了解HTTP协议的基本结构。 **实验内容与操作步骤:** 1. **背景知识与所需...

    HTTP.zip_C http协议_HTTP协议_c语言 http_c语言 http_c语言http协议

    例如,"Content-Length"头字段提供了响应体的字节大小,这对于处理分块编码(Transfer-Encoding: chunked)的响应尤其有用。 在C语言中处理HTTP协议时,还需要注意一些细节,比如错误处理。网络连接可能会失败,...

    http-request-smuggler,.zip

    它会尝试多种走私技术,如Chunked编码、多部分请求、Transfer-Encoding与Content-Length的不匹配等。 2. **偏移调整**:在实际的攻击中,攻击者需要精确调整请求的某些部分以避开安全检查。此扩展可以帮助用户处理...

Global site tag (gtag.js) - Google Analytics