博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《http权威指南》读书笔记14
阅读量:4676 次
发布时间:2019-06-09

本文共 1417 字,大约阅读时间需要 4 分钟。

概述

最近对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

你可能感兴趣的文章
LiveNVR传统安防摄像机互联网直播-二次开发相关的API接口
查看>>
LiveNVR高性能稳定RTSP、Onvif探测流媒体服务配置通道接入海康、大华等摄像机进行全终端无插件直播...
查看>>
c c++ sizeof
查看>>
Intellij IDEA连接Spark集群
查看>>
最长回文子串解法
查看>>
代码优化程序性能
查看>>
腾讯实习生招聘笔试题目
查看>>
Java Socket编程----通信是这样炼成的
查看>>
作业要求 20180925-1 每周例行报告
查看>>
1078. Hashing (25)-PAT甲级真题
查看>>
SQLite中的运算符表达式
查看>>
Grid使用 & ComboBox Binding & DateTime Format WPF
查看>>
.Net Core迁移到MSBuild的多平台编译问题
查看>>
数据结构之删除线性表中的元素
查看>>
redis安装配置
查看>>
结对项目博客
查看>>
讨论记录:求大于一个时间段的最大平均积分,O(n)时间实现
查看>>
error) DENIED Redis is running in protected mode because protected mode is enabled报错
查看>>
CSS-16-margin值重叠问题
查看>>
selenium常用方法
查看>>