图解HTTP 第三章HTTP报文内的HTTP信息

Posted 雄研识测

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图解HTTP 第三章HTTP报文内的HTTP信息相关的知识,希望对你有一定的参考价值。

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 第三章HTTP报文内的HTTP信息的主要内容,如果未能解决你的问题,请参考以下文章

读《图解HTTP》总结--第三章

HTTP图解3-HTTP报文内的HTTP信息

读《图解HTTP》有感-(HTTP报文内的HTTP消息)

(第三章,第四章)http报文内的http信息,返回结果的http状态码

《图解Http》 2-6章: 基础,报文,状态码,首部。

《图解HTTP》读书笔记