概述

最近对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响应收不来说明使用的是哪个差异编码算法。

转载于:https://www.cnblogs.com/yangzhou33/p/9286654.html

《http权威指南》读书笔记14相关推荐

  1. HTTP权威指南读书笔记

    <<HTTP权威指南>>读书笔记 第一部分:Web的基础 第1章:HTTP概述 主要内容 1.什么是HTTP 2.HTTP的基本组件 HTTP HTTP:HTTP(Hypert ...

  2. mysql数据库权威指南_MySQL_MySQL权威指南读书笔记(三),第二章:MYSQL数据库里面的数 - phpStudy...

    MySQL权威指南读书笔记(三) 第二章:MYSQL数据库里面的数据 用想用好MYSQL,就必须透彻理解MYSQL是如何看待和处理数据的.本章主要讨论了两个问题:一是SQL所能处理的数据值的类型:二是 ...

  3. MongoDB权威指南读书笔记——CRUD

    插入并保存文档 插入是向MongoDB中添加数据的基本方法.可以使用Insert方法向目标集合插入一个文档:db.foo.insert({"bar" : "baz&quo ...

  4. HTML5权威指南----读书笔记

    <!DOCTYPE html> <html> <head><meta name = 'keywords' content="HTML5权威指南--- ...

  5. 计算机网络和http权威指南 读书笔记

    计算机网络笔记 网络层 网络层向上提供无连接的,尽最大努力交付的数据报服务 网络层不提供数据质量承诺 物理层使用的中间设备叫转发器repeater 数据链路层叫网桥bridge 网络层叫路由器rout ...

  6. MapReduce总结 + 相关Hadoop权威指南读书笔记(未完......欢迎补充,互相学习)

    文章目录 MapReduce概述 MapReduce优缺点 MapReduce核心思想 MapReduce进程 MapReduce编程规范 WordCount 案例实操 本地测试 集群测试 Hadoo ...

  7. JavaScript权威指南读书笔记——JavaScript的扩展

    常量和局部变量 常量 声明常量需要使用关键字const,const关键爵var关键字行为非常类似,但const声明的是常量. 对常量重新赋值会失败,而对常量重新声明会报错. const pi = 3. ...

  8. HTML5权威指南读书笔记03(第7,8章)--icon,base,锚点,一些七七八八的元素

    1.使用ico图标 如果标志文件位于服务器/favicon.ico(服务器根目录,则不需要link),浏览器自动匹配该文件 <link rel="shortcut icon" ...

  9. WINDOWS+PE权威指南读书笔记(20)

    目录 PE补丁技术 动态补丁: 进程间的通信机制: 读写进程内存: 目标进程枚举: 执行远程线程: 静态补丁: 整体替换 PE 文件: 整体替换 DLL 文件: 部分修改 PE 文件 嵌入补丁程序: ...

  10. android开发读书笔记,android开发权威指南读书笔记

    第17章 Fragment 1.在res目录下增加 layout-sw600dp 目录,用于存放7英寸及以上尺寸屏幕的布局文件.10英寸以上平板用 sw720dp.如果是更小的屏幕,如 480*800 ...

最新文章

  1. python join()函数
  2. Colored Boots
  3. FreeRTOS内核详解(1) —— 临界段保护原理
  4. html overflow 样式,css样式之overflow-x属性样式
  5. OpenCV中的傅里叶的门道
  6. ios服务器需要开启ipv6的支持,针对iOS审核要求为应用兼容IPv6
  7. c语言dfs算法全排列代码,c语言dfs解决全排列问题
  8. shell输入输出重定向
  9. Excel宏的自动运行设置
  10. PMOS做固态继电器,PMOS做高侧双向开关电路,PMOS防电流倒灌电路,PMOS电源防反接电路
  11. 人工智能基础 | Python实现-产生式系统-文字动物识别系统
  12. 淘宝APP用户行为数据分析
  13. .NET解析BT种子,获取InfoHash
  14. SQL SERVER “指定的网络名不再可用”
  15. 华三H3C路由器如何配置端口映射远程登录到内网服务器
  16. JS中各种width和height的区别
  17. android模拟器 对比,安卓模拟器多开用哪个模拟器好?实测数据对比哪个好用
  18. java配置环境变量path(JAVA配置环境变量失败)
  19. ganache命令行安装
  20. P1017 进制转换 (洛谷)

热门文章

  1. python字符串函数的使用方法_python字符串的操作函数
  2. linux乱码临时怎么解决方案,(收集)linux环境下乱码的解决方法
  3. git push 报错git: push-u is not a git command. See 'git --help'.
  4. Java8中的foreach跳出循环break/return
  5. MyBatis中resultType返回值类型介绍
  6. 台湾SDN/NFV联盟:集合产业内各部分力量,共同推进NFV技术发展
  7. 如何改变Myeclipse编辑区背景色(转)
  8. JS中的值是按值传递,还是按引用传递呢?
  9. selenium和junit 的使用
  10. MySQL 基础总结