http协议之chunked

记得以前做网盘相关的东西时候因为要涉及到上传数据都网盘,而且都是通过http协议进行的,所以当时还专门去好好的学习了一下http协议,后来看nginx源码的时候因为要解析http报文,所以相当于又复习了一次http协议的内容,最近遇到的东西涉及到了chunked(netty有一个chunkedwritehandler),当时就没有看,那么这次搞明白补上吧..

首先复习一下:

http报文分成了3部分;
(1)request-line  GET /cache/aladdin/ui/jquery/jquery.js HTTP/1.1

(2)Connection: keep-alive

  1. Content-Type:
    application/json; charset=UTF-8

(3)body部分。。。(当然不是都有的)


requestline之后会有一个回车换行作为结束(\r\n),然后header部分的每一个栏目都需要一个回车换行来分开,最后用一个空的回车换行来作为结束。。


那么最后就是body部分了,一般情况下在header部分会有一个栏目:content-length,用于指明body部分的数据大小,那么我们在读取数据的时候只要读取相应大小的字节数据就表示body已经读完了。。。

但是有的情况下如果没有content-length,那么就需要那么就需要chunked来传输body的数据了。。。

如果采用了chunked方式来传输数据的话,那么需要在header部分添加一个栏目:

transfer-encoding:chunked

用于指明body部分是采用chunked的方式来传输的。。。

那么记下来就来说明chunked的内容吧:


chunked,其实看名字就能够看出来,数据是一块一块的发送的,其中每一块分为两个部分:

(1)chunked头部 (2)chunked的body

每一部分之后都需要一个回车换行来隔开。。。 其中头部其实就是一个整数,用于表示body的长度

例如 5\r\nabcde\r\n


这里还有一个尾部的chunked,它的头部值为0,如下:

0\r\n\r\n


好了,chunked本身定义还挺简单的。。。自己以前居然都觉得懒得去搞明白。。汗。。。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值