第三章 HTTP报文中的HTTP信息

HTTP通信过程:客户端—》服务端,服务端—》客户端。

1.HTTP报文

  使用HTTP协议交互的信息被称为HTTP报文,包括请求报文和响应报文。

  【请求报文和响应报文结构】报文首部(请求行/相应行+首部字段<请求、响应、通用、实体首部字段>)+报文主体

 2.报文编码

  HTTP在传输数据是可以通过编码技术来有效处理大量的访问请求,但会消耗更多的CPU等资源。

  【报文和实体】报文是箱子,是HTTP通信中的基本单位,由8位组字节流组成,通过HTTP传输。实体是货物,作为请求或响应的有效载荷数据。报文中的实体是由实体首部和实体主体组成的。一般情况下,报文主体等于实体主体。但在传输过程进行编码操作时,实体主体内容发生变化,和报文主体产生差异。

  【压缩传输的内容编码】内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接受并负责解码。常见的内容编码方式:gzip、compress(UNIX系统标准压缩)、deflate、identity。

  【分割发送的分块传输编码】将数据分割成多块,能让浏览器逐步显示页面。实体最后一块使用0(CR+LF)来标识。

  【发送多种数据的多部份对象集合】传输实体包含不同类型的数据,例如邮件的附件可以同时添加文字、音频、视频等,这就是采用了MIME(多用途因特网邮件扩展)机制。相应地,HTTP协议中也采纳了多部份对象集合,发送的报文主体有多种类型实体,通常在图片或文本等上传时使用。在HTTP报文中使用多部份对象集合时,需要在首部字段加上Content-type,并且使用boundary字符串来划分多部份对象的各类实体。

  多部份对象集合包含的对象如下:

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

      multipart/byteranges:状态码206响应报文包含了多个范围的内容是使用。  

  【获取部分内容的范围请求】指定要请求的范围的发送请求叫做范围请求。例如对一份10000字节大小的资源,如果使用范围请求,可以指请求5001~10000字节内的资源。

  Range: bytes=5001-10000    请求5001-10000字节的

  Range: bytes=5001-    请求5001字节之后全部的

  Range: bytes= -3000,5001-7000  请求一开始到3000和5001-7000的

  【内容协商返回最合适的内容】内容协商机制是指客户端和服务端就相应的资源内容进行交涉,然后提供给客户端最为适合的资源。包含在请求报文中的某些首部字段就是判断的基准。

  内容协商技术有以下三种类型:服务器驱动协商、客户端驱动协商、透明协商。

第三章 HTTP报文中的HTTP信息的更多相关文章

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

    第三章 http报文内的http信息 用于http协议交互的信息被称为http报文,包括请求报文和响应报文. 1.编码提升传输速率,在传输时编码能有效的处理大量的访问请求.但是编码的操作是计算机完成的 ...

  2. 《HTTP 权威指南》笔记:第三章 HTTP 报文

    如果说 HTTP 是因特网的信使,那么 HTTP 报文就是它用来搬东西的包了. 这一章讲述关于 HTTP 报文的相关知识,包括: HTTP 报文的三个组成部分 请求报文以及其各种功能 响应报文以及各种 ...

  3. 《图解HTTP》阅读笔记--第二章 简单的HTTP协议--第三章 HTTP报文信息

     第二章.简单的HTTP协议HTTP协议:HTTP协议用于客户端(请求资源的一端)和服务器端(响应回复提供资源的一端)的通信,是一种无状态协议HTTP1.1默认TCP持久连接,管线化发送(并行发送多个 ...

  4. 《Django By Example》第三章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第三章滚烫出炉,大家请不要吐槽文中 ...

  5. 精通Web Analytics 2.0 (5) 第三章:点击流分析的奇妙世界:指标

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第三章:点击流分析的奇妙世界:指标 新的Web Analytics 2.0心态:搞定它.新的闪亮系列工具:是的.准备好了吗?当然 ...

  6. 《Linux内核设计与实现》课本第三章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第三章自学笔记 进程管理 By20135203齐岳 进程 进程:处于执行期的程序.包括代码段和打开的文件.挂起的信号.内核内部数据.处理器状态一个或多个具有 ...

  7. python学习心得第三章

    python学习心得第三章 1.三元运算 变量=值1 if 条件 else 值2 由图如果条件成立则赋值1给变量,如果条件不成立则赋值2给变量. 2.数据类型 集合:set() class set(o ...

  8. 《linux内核设计与实现》读书笔记第三章

    第3章 进程管理 3.1 进程 1.进程 进程就是处于执行期的程序. 进程包括: 可执行程序代码 打开的文件 挂起的信号 内核内部数据 处理器状态 一个或多个具有内存映射的内存地址空间 一个或多个执行 ...

  9. 07.C#泛型的限制和可空类型的简单说明(三章3.5-四章4.1)

    自己在写文章的同时,也是在学习,对于书中的语句很多其实没有太好的理解,读一本书,要消化!!!三章都是讲泛型的,最后写一下泛型的限制,对于本章学习的完结,one end,one begin. 看下面的代 ...

随机推荐

  1. CSS入门(边框、轮廓、元素的分类、盒子模型的三个构成部分)

    一.边框属性 作用:给元素加上一个边框 第一种: border-top border-bottom border-left boder-right 三个属性值: 粗细 线型 颜色 第二种: borde ...

  2. 腾讯云大学 x CODING | 当 DevOps 邂逅云原生

    2019 年经济减速的阴云笼罩了所有行业,势如破竹的发展势头被打破,小微创新型企业生存艰难.越来越多的企业更加关注客户和业务之间的交付价值,精益化公司运营,降低成本,驱动业务发展.是否要拥抱云原生?开 ...

  3. VUE组件 之 Drawer 抽屉

    注:因为项目中用的是 element-ui 框架,而这个框架并没有抽屉组件,所以自己实现一个. 一.源码地址 https://github.com/imxiaoer/DrawerForVue 二.效果 ...

  4. SQL Server查看login所授予的具体权限

    在SQL Server数据库中如何查看一个登录名(login)的具体权限呢,如果使用SSMS的UI界面查看登录名的具体权限的话,用户数据库非常多的话,要梳理完它所有的权限,操作又耗时又麻烦,个人十分崇 ...

  5. 《软件安装》VMware 安装 centos8

    上期问题回顾 搞技术的同学应该都听过docker,那么请问docker和虚拟机有什么区别呢? 传统的虚拟机架构是:物理机 -> 宿主机操作系统 -> Hypervisor支持 -> ...

  6. 使用navicat连接只开放内网ip连接的数据库

    无法通过Navicat来连接MySQL,比较常见的两种问题? 服务器上自己安装的MySQL数据库,且未开通外网登录账号 直接购买服务商的MySQL数据库不创建公网访问,只有内网访问   背景: 公司数 ...

  7. Redis令牌桶限流

    一 .场景描述 在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源, 通常来说我们会对于服务器上的各种接口进行调用次数的限制.比如对于某个 用户,他在一个时间段(interval ...

  8. PHP 管理树莓派

    同学给过我一块树莓派,那会儿觉得挺新鲜的.但是每次使用都需要远程桌面或者 ssh 进行登录,比较麻烦.后来为了方便管理,在树莓派上安装部署了 LAMP 环境,然后写了一个简单的 PHP 页面,代码如下 ...

  9. 关于实现序列化接口Serializable

    关于javabean,是否需要实现序列化接口这个问题,只有当这些javabean需要通过分布式网络传输,磁盘持久化等情况下才有必要,其他情况并非必须.

  10. phpredis 报错 “Function Redis::setTimeout() is deprecated” 解决方法

    项目在本地开发过程中抛出异常: Function Redis::setTimeout() is deprecated 找到出错代码: <?php use Illuminate\Support\F ...