概述

最近对http很感兴趣,于是开始看《http权威指南》。别人都说这本书有点老了,而且内容太多。我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做,还告诉你为什么这么做。于是我把学到的知识点记录下来,供以后开发时参考,相信对其他人也有用。

实体和编码

1.http要确保它所承载的“货物”满足以下条件:

  • 可以被正确的识别。(通过Content-Type首部说明媒体格式,Content-Language首部说明语言)
  • 可以被正确的解包。(通过Content-Length首部和Content-Encoding首部)
  • 最新的。(通过实体验证码和缓存过期控制)
  • 符合用户的需要。(基于Accept系列的内容协商首部)
  • 在网络上可以快速有效地传输。(通过范围请求、差异编码以及其他数据压缩方法)
  • 完整到达、未被篡改。(通过传输编码首部和Content-MD5校验和首部)

2.http的早期版本通过Content-Length来检测报文截尾,如果缓存服务器收到被截尾的报文却没有识别出截尾的话,它可能会储存不完整的内容并多次使用它来提供服务。Content-Length首部对于持久连接也是必不可少的,不然无法知道报文在何处结束,下一条报文从何处开始。

3.在使用分块编码的情况下,使用持久连接时可以没有Content-Length首部。

4.为了检测实体主体的数据是否被不经意地修改,发送方可以在生成初始的主体时,生成一个数据的校验和,用Content-MD5首部来发送。

5.Content-Type首部字段说明了实体主体的MIME类型。它还支持可选的参数来进一步说明内容的类型,比如下面的charset参数:

Content-Type: text/html;charset=iso-8859-4

6.Accept-Encoding字段包含用逗号分隔的支持编码的列表。并且可以给每种编码附带Q(质量)值参数来说明编码的优先级。

7.内容编码是对报文的主体进行的可逆变换,比如gzip,但是用gzip压缩JPEG这类东西效果不够好。这个时候就用传输编码了。使用传输编码是为了改变报文中的数据在网络上传输的方式,比如分块传输。

8.Transfer-Encoding告诉接收方为了可靠地传输报文,已经对其进行了何种传输编码。而TE用在请求首部中,告知服务器可以使用哪些传输编码扩展。

9.对于分块编码来说,服务器可以使用大小为0的块作为主体结束的信号,所以它不需要Content-Length首部。

10.范围请求:http还允许客户端实际上只请求文档的一部分,或者说某个范围。比如说下载重连,这个时候就从某个范围(Range首部字段)开始请求。当然前提是这段时间内,该对象没有改变过。

11.Range首部在流行的P2P(Peer-to-Peer)文件共享客户端软件中得到广泛应用,他们从不同的对等实体同时下载多媒体文件的不同部分。

12.差异编码:差异编码是http协议的一个扩展,它通过交换对象改变的部分而不是完整的对象来优化传输性能。客户端使用A-IM首部(Accept-Instance-Manipulation)来说明可以接受的差异编码算法,服务端通过IM响应收不来说明使用的是哪个差异编码算法。

《http权威指南》读书笔记14的更多相关文章

  1. HTTP权威指南读书笔记

    HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...

  2. css权威指南读书笔记

    今天翻手机,翻到了许久之前看css权威指南时的笔记,遂移到博客中来. 1.属性选择器p.one class名为one的p元素p[class][name] 含有class和name属性的p元素p[cla ...

  3. 经典的性能优化最佳实践 web性能权威指南 读书笔记

    web性能权威指南 page 203 经典的性能优化最佳实践 无论什么网络,也不管所用网络协议是什么版本,所有应用都应该致力于消除或减 少不必要的网络延迟,将需要传输的数据压缩至最少.这两条标准是经典 ...

  4. css权威指南读书笔记-第10章浮动和定位

    这一章看了之后真是豁然开朗,之前虽然写了圣杯布局和双飞翼布局,有些地方也是模糊的,现在打算总结之后再写一遍. 以下都是从<css权威指南>中摘抄的我认为很有用的说明. 浮动元素 一个元素浮 ...

  5. Hadoop权威指南读书笔记

    本书中提到的Hadoop项目简述 Common:一组分布式文件系统和通用I/O的组件与接口(序列化.javaRPC和持久化数据结构). Avro:一种支持高效.跨语言的RPC以及永久存储数据的序列化系 ...

  6. JS权威指南读书笔记(七)

    第十七章 事件处理 1 客户端JS程序采用了异步事件驱动编程模型. 2 关于事件的重要定义     a 事件类型(event type)     b 事件目标(event target) target ...

  7. JS权威指南读书笔记(六)

    第十五章 脚本化文档   1 文档对象模型(DOM)是表示和操作HTML和XML文档内容的基础API. 2 文档节点的部分层次结构 Text和CDATASection都是characterData的子 ...

  8. JS权威指南读书笔记(二)

    第四章 表达式和运算符 1 new调用构造函数的过程     a 创建一个新的空对象     b 设置空对象的_proto_指向构造函数原型prototype     c 将这个新对象当做this的值 ...

  9. JS权威指南读书笔记(一)

    第一章 JavaScript概述 1 JS是一门高端的.动态的.弱类型的编程语言,非常适合面向对象和函数式的编程风格.   第二章 词法结构 1 JS程序是用Unicode字符集编写的. 2 JS是区 ...

  10. JavaScript权威指南读书笔记

    JavaScript 1.变量 变量是一个表示值的符号,是一个名字,他的本质是值: var x; //----声明一个变量: 值通过等号“=”赋给变量,x = 16; 对象是名/值对的集合,或字符串到 ...

随机推荐

  1. kubenetes安装记录和要点

    https://blog.csdn.net/jinglexy/article/details/79813546 在官网web上进行kubenetes测试:kubectl run kubernetes- ...

  2. sql server版本、组件和管理工具

    以下信息由何问起收集,希望有帮助. SQL Server 版本 定义 Enterprise 作为高级版本, SQL Server Enterprise 版提供了全面的高端数据中心功能,性能极为快捷.虚 ...

  3. oracle12C安装步骤

    首先去官网下载两个架包链接如下:官网链接 第一步:将两个架包解压到同一个database目录下.如截图所示: 第二步:打开setup应用程序 打开后就到了下面这个页面 第三步:配置安全更新 环境变量配 ...

  4. 旅游类的APP原型模板分享——Priceline

    Priceline是一款旅游服务的APP应用.功能有查找预订酒店.车票.机票等服务. 本原型由国产Mockplus(原型工具)和iDoc(智能标注,一键切图工具)提供. 先简单看看动图: 点击这里,可 ...

  5. 解决js数组循环删除出错

    for(var i=0,flag=true,len=arr.length;i<len;flag ? i++ : i){ if( arr[i]&&arr[i].status==0 ...

  6. [html]CSS中的margin、border、padding区别

    图解CSS padding.margin.border属性W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层. ...

  7. 移动端常见bug

    meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-wid ...

  8. O365 Manager Plus帮助台委派功能一览表

    O365 Manager Plus帮助台委派介绍 虽然Office 365允许您在全球任何地方工作,但它提供的管理功能十分不足.当一个组织分布在多个国家/地区时,一个管理员很难单独管理所有用户和邮箱. ...

  9. KVM 虚拟机的热迁移

    热迁移:顾名思义在虚拟机不关机的情况下将KVM虚拟机进行迁移 准备工作:两台KVM虚拟机,一台nfs虚拟机,centos7.4系统 主机 IP地址 主机名 KVM01 10.00.11 kvm01 K ...

  10. 记录mysql安装过程遇到问题

    1. 远程连接授权 登陆mysql数据库    (如果安装在系统盘可以直接命令, 否则要切换到安装目录..bin/) mysql -u root -p mysql> use mysql;   - ...