1、HTTP报文

  • 1)、报文首部

    • 服务器或客户端需处理的请求或响应的内容及属性

  • 2)空行

    • 16进制  0x0a

    • 16进制 0x0d

    • CR(Carriage Return,回车)‘\n’

    • LF(Line Feed, 换行符)'\r'

unix只有'\n'

windows包含'\n\r'

mac只有'\r'

3)报文主体

  • 被发送的数据

  • 非必须项

2、请求报文及响应报文的结构

  • 请求

    • 请求行  包含用于请求的方法,请求URI和HTTP版本

  • 响应

    • 状态行 包含响应结果的状态码,原因短语和HTTP版本

  • 都包含:通用首部、请求首部、响应首部和实体首部

  • 可能包含Cookie等

3、编码提升传输速率

  • 牺牲CPU资源来提升传输速率

  • 报文主体和实体主体

    • 请求和响应的实体

    • HTTP基本单位(8位组字节流)

    • 报文主体

    • 实体主体

  • 传输时进行压缩

    • gzip(GNU zip)

    • compress(UNIX系统的标准压缩)

    • deflate(ZLIB)

    • identity(不进行编码)

4、发送多种数据的多部分对象集合

  • 图片或文本上传时,报文主体通常包含多类型的实体

  • multipart/form-data:在 Web 表单文件上传时使用

  • multipart/byteranges:状态码206(Partial Content 部分内容)响应报文包含了多个范围的内容时使用

    • boundary 表示分隔符,用于划分多部分对象集合指明的各类实体。在 boundary 字符串指定的各个实体的起始行之前插入“--”标记(例如:--AaB03x、--THIS_STRING_SEPARATES),而在多部分对象集合对应的字符串的最后插入“--”标记(例如:--AaB03x--、--THIS_STRING_SEPARATES--)作为结束

5、获取部分内容的范围请求

  • 为继续获取中断之后的内容,设置“范围请求”

  • 使用首部字段Range指定byte范围

    • Range:byte=-300,500-600

    • 对于多重范围的范围请求,响应会在首部字段 Content-Type 标明 multipart/byteranges 后返回响应报文。

    • Range:byte=500-

    • Range:byte=500-1000

    • 中间范围500-1000字节

    • 500之后的全部

    • 从头开始到300,以及500-600的多范围请求

  • 如果服务器端无法响应范围请求,则会返回状态码 200 OK 和完整的实体内容

6、内容协商返回最合适的内容

  • 内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为合适的资源。

  • 内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。

    • Accepet

    • Accepet-Charest

    • Accept-Encoding

    • Accept-Language

    • Content-Encoding

      下边是xmind图片方便记忆:

http发送16进制报文_图解HTTP 第三章HTTP报文内的HTTP信息相关推荐

  1. python3.6串口编程实例_Python3 串口接收与发送16进制数据包的实例

    Python3 串口接收与发送16进制数据包的实例 如下所示: import serial import string import binascii s=serial.Serial('com4',9 ...

  2. java串口发送16进制数据_MFC串口通信发送16进制数据的方法

    本文实例为大家分享了MFC串口通信发送16进制数据的具体代码,供大家参考,具体内容如下 MFC串口通信会使用m_mscomm控件. 发送数据一般是在edit control 里输入自己想发送的内容,然 ...

  3. 使用串口调试助手发送16进制数

    发送16进制的1(即0x01),应该写01,不能去掉前面的0,更不能写成0x01

  4. matlab上位机串口通信中如何发送16进制数,而不是当做ASCII字符发送(已实测成功)

    转载 (找了很长时间,朋友帮忙找到了发送方法) https://zhidao.baidu.com/question/383761631.html 用matlab发送16进制数据,可以用fwrite直接 ...

  5. 串口调试助手 发送16进制与现实16进制数据

    话不多说,直接干货. 使用串口助手发送16进制数据: 如图所示:第一步,选中16进制发送. 第二步:输入你要发送的数据(所有的16进制数据去掉0x符号) 第三步:点击16进制显示 第四步:查看返回值 ...

  6. esp32的uart串口发送16进制通信指令调用实例

    esp32的uart串口发送16进制通信指令调用实例 简介 最近想用esp32通过uart发送的16进制指令来控制一个语言播放模块,记录一下调用uart的过程,请大佬斧正.比较愚笨,过程中踩了很多坑, ...

  7. python socket发送16进制数据_Python UDP Socket 16进制数据发送

    注:此篇文章首次发表于我的一篇CSDN博客里边,现转载于此. 今天琢磨了一下Python UDP Socket 16进制数据发送. 原以为UDP发送和接受的都是字符,怎么能够发送16进制?但细想,其实 ...

  8. STM32串口发送16进制数据

    方法一(用printf函数) 下面演示两个示例 //说明:用u8或unsigned char都能正常发送//示例 1 u8 send1=0x55; printf("%c",send ...

  9. http发送16进制报文_阿里云物联网平台使用心得(25)MQTT协议详解UNSUBSCRIBE报文...

    题目 大家好,超子又和大家见面了,超子我能力有限,水平不高,有什么错误的地方,欢迎板砖.超子今天给大家介绍一下UNSUBSCRIBE报文. UNSUBSCRIBE报文 从上图中可知,UNSUBSCRI ...

最新文章

  1. lua创建文件和文件夹
  2. UVa 10652 (简单凸包) Board Wrapping
  3. HMAC-SHA1加密
  4. 猜数字游戏python程序_python经典小程序:猜数字游戏
  5. mysql可以使用mybaties框架吗_搭建一个简单的mybatis框架
  6. Bean的自动装配Autowiring
  7. python报表自动化系列 - 获取某个时间段内所有日期
  8. LibFewShot:小样本学习与细粒度分类(二) -- 数据集、训练、测试
  9. python(三):时间窗口
  10. day 05 random time sys os pickle json re模块 爬取dytt
  11. ppt在服务器上打开要修复,打开ppt提示需要修复怎么办-处理ppt总是提示需要修复的方法 - 河东软件园...
  12. 一招判断云主机IP是不是原生IP
  13. 解释一下label中的写法:plt.plot(t, sig, b-, linewidth=2, label=r$\sigma(t) = \frac{1}{1 + e^{-t}}$)...
  14. 公积金总结(一)--公积金概念
  15. USB_HID协议基础
  16. android ndk x86 arm,NDK r21编译FFmpeg 4.2.2(x86、x86_64、armv7、armv8)
  17. Jlink在ADS下的配置说明及常见问题解决办法 (转载)
  18. git bush如何上传文件
  19. hadoop与传统数据库的区别
  20. 20道高频面试题(含答案),手慢无

热门文章

  1. Win10笔记本电脑如何开启热点
  2. Win10电脑如何查看电脑配置
  3. Andriod:serializer序列化器生成xml文件
  4. 常见移动机器人轮直径校准
  5. mysql可重复读和间隙锁_解决MySQL可重复读——详解间隙锁
  6. 阿里开发者们的第15个感悟:做一款优秀大数据引擎,要找准重点解决的业务场景...
  7. 图像滤镜艺术---(Instagram)1977滤镜
  8. eclipse-阶段四-Server Tomcat v8.5 Server at localhost failed to start.
  9. 关于视频监控线缆的常识
  10. MediaElement 4.1.3 发布,HTML5 音视频解决方案