• 【HTTP图解】3-HTTP报文内的HTTP信息


    HTTP报文

    HTTP报文大致可分为报文首部报文主体两块,以空行分割。

    image-20200723170135625

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

    image-20200723170242729

    image-20200723170506447

    编码提升传输速率

    HTTP在传输数据时可以按照数据原貌直接传输,但也可以在传输过程中通过编码提升传输速率。通过在传输时编码,能有效地处理大量的访问请求。但是,编码的操作需要计算机来完成,因此会消耗更多的CPU等资源。

    报文主体和实体主体的差异

    image-20200723171736682

    通常,报文主体等于实体主体,只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。

    都是抽象的概念,没必要扣那么细,会抓包分析就可以了

    压缩传输的内容编码

    类似ZIP压缩文件。常用的内容编码有以下几种:

    • gzip
    • compress
    • deflate
    • identity(不进行编码)

    分割发送的分块传输编码

    在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。

    这种把实体主体分块的功能称为分块传输编码(Chunked Transfer Coding)

    image-20200723172419654

    分块传输编码会将实体主体分成多个部分,每一块都会用十六进制来标记块的大小,而实体主体的最后一块都会使用“0(CR+LF)”来标记。

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

    邮件中含有文字还有各种各样的附件,HTTP采纳了多部分对象集合,发送的一份报文主体内可含有多类型实体。通常是在图片或文本文件等上传时使用。

    在HTTP报文中使用多部分对象集合时,需要在首部字段加上Content-type。多部分对象集合的每个部分类型中,都可以含有首部字段。

    获取部分内容的范围请求

    在下载中断处恢复下载处恢复下载,要实现该功能需要指定下载的实体范围。image-20200723173214706

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

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

    同一个Web页面有可能存在着多份相同的页面。

    当浏览器的默认语言是中文或者英文的时候,访问同一个页面,显示对应语言的版本,这种机制称为内容协商(Content Negotiation)。

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

    请求报文中的某些首部字段就是判断的基准:

    • Accept
    • Accept-Charset
    • Accept-Encoding
    • Accept-Language
    • Content-Language

    内容协商技术有以下3中类型。

    1. 服务器驱动协商(Server-driven Negotiation):服务器根据客户端发送的请求的首部字段,自动处理,返回响应的内容。
    2. 客户端驱动协商(Agent-driven Negotiation):浏览器手动选择
    3. 透明协商(Transparent Negotiation):客户端和服务器端各自进行内容协商。
  • 相关阅读:
    MySQL源代码解读(二)
    MySQL源代码解读(一)
    C语言中如何对串口进行操作
    mysql 运行概图
    Yacc 与 Lex
    外键建索引
    提高SQL查询效率
    MySQL源代码分析:(1)Main函数
    Linux "could not open default font 'fixed'."
    转帖 浅析ARM汇编语言子例程设计方法
  • 原文地址:https://www.cnblogs.com/realzhaijiayu/p/13367649.html
Copyright © 2020-2023  润新知