zoukankan      html  css  js  c++  java
  • Http报文长度的计算

    客户机与服务器需要某种方式来标示一个报文在哪里结束和在下一个报文在哪里开始。
    一般使用Content-Length表示body报文体的长度,这样往后截取即可获得整个报文。对于普通的页面、图片皆可使用。
    报文头中的Transfer-Encoding: chunked ,表示报文体body是使用chunked分块方式拼接成的,不需要Content-Length指明长度。不需要提前计算总长度。
    uploading-image-355497.png
    chunked拼接报文

    Chunked编码使用若干个Chunk串连而成,由一个标明长度为0的chunk标示结束。
    每个Chunk分为头部和正文两部分。头部内容指定下一段正文的字符总数(十六进制的数字)和数量单位(一般不写);正文部分就是指定长度的实际内容。两部分之间用回车换行(CR&LF)隔开。
    最后一个长度为0的Chunk中的内容是称为footer的内容,是一些附加的Header信息(通常可以直接忽略)。
    返回值报文

    解析:这里面只有一个有意义的chunke以及一个footer。第一个chunk,头部是3134这两个字节,表示的是1和4这两个ascii字符,被http协议解释为十六进制数14,也就是十进制的20。
    后面紧跟0d0a,再接着是20个字节的chunk正文(图中的011e~0131)。后面再接着0d0a。
    然后就是footer了,30表示ascii字符0,http解释为长度是0(也说明了这是最后一个chunk),后面紧跟0d0a,然后正文部分为空,再接0d 0a表示footer结束

  • 相关阅读:
    策略模式
    Properties类学习笔记
    System类学习笔记
    一个反射的妙用案例
    new 对象时的暗执行顺序
    常用数据库默认端口号
    java对日开发常用语(词汇)总结
    java开发中常用语(词汇)含义
    MyBatis 常用词汇含义
    java SE,EE,ME区别
  • 原文地址:https://www.cnblogs.com/Desneo/p/7214023.html
Copyright © 2011-2022 走看看