《图解http》知识点笔记
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC" }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; min-height: 25.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 16.0px "Microsoft YaHei"; color: #3f3f3f; background-color: #ffffff }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 16.0px "Microsoft YaHei"; color: #3f3f3f; background-color: #ffffff; min-height: 21.0px }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 18.0px "PingFang SC"; min-height: 25.0px }
li.li7 { margin: 0.0px 0.0px 20.0px 0.0px; line-height: 15.0px; font: 12.0px ".PingFang SC"; color: #333333 }
span.s1 { font: 18.0px Helvetica }
span.s2 { }
span.s3 { font: 12.0px "Helvetica Neue"; background-color: #ffffff }
span.s4 { font: 12.0px "Helvetica Neue"; background-color: #ffffff }
span.s5 { background-color: #ffffff }
span.s6 { font: 12.0px "Helvetica Neue" }
span.Apple-tab-span { white-space: pre }
ul.ul1 { list-style-type: disc }
1.
http正式作为标准被公布是在1996年5月,版本被命名为http/1.0,并记载于RFC1945
2.
1997年公布的HTTP/1.1是目前主流的HTTP协议版本,当初的标准是RFC2068,之后发布的修订版RFC2616就是当前的最新版本
3.
TCP/IP协议族按层次分别分为以下4层:应用层,传输层,网络成,数据链路层
4.
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个盖层所属的首部信息
5.
IP网际协议位于网络层。
6.
ip间的通信依赖mac地址
7.
ARP是一种用以解析地址的协议,根据通信放的ip地址就可以反查出对应MAC地址
8.
无论哪台计算机,哪台网络设备,他们都无法全面掌握互联网中的细节
9.
TCP位于传输层,提供可靠地字节流服务,所谓的字节流服务是指,为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。
10.
为了准确无误的将数据送达目标处,TCP协议采用了三次握手策略。发送端首先发送一个带SYN标志的数据包给对方,接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。
11.
URI统一资源标识符,URL统一资源定位符。
URI用字符串标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置)。可见URL是URI的子集
12.
RFC是互联网的设计文档,要是不按照RFC标准执行,就有可能导致无法通信的状况。
13.
http报文大致可分为报文首部和报文主体两块,两者由最初出现的空行(CR+LF)来划分
14.
常见的内容编码有以下几种:
1.gzip(GNU zip)
2.compress(UNIX系统标准压缩)
3.deflate(zlib)
4.identity(不进行编码)
15.
在http通信过程中,请求的编码实体资源尚未被全部传输完成之前,浏览器无法显示请求页面。在传输大容量数据时,通过把数据分割城多块,能够让浏览器逐步显示画面,这种把实体主体分块的功能称为分块传输编码(chunked transfer Coding)
16.
在http报文中使用多部分对象集合时,需要在首部字段里加上content-type
17.
要实现能从之前下载中断处恢复下载需要指定下载的实体范围,像这样,指定范围发送的请求叫做范围请求。由Range这个请求头控制。例如
Range: bytes=5001-10000 表示请求资源的5001-10000字节的范围。
bytes=5001- 表示从5001到之后所有
bytes=-3000, 5000-7000 从一开始到3000和5000-7000字节的多重范围
18.
针对范围请求,响应会返回状态码206。另外,对于多重范围的范围请求,响应会在首部字段content-type标明multipart-byteranges后返回响应报文。如果服务器无法响应范围请求,则会返回状态码200 OK和完整的实体内容
19.
内容协商常见请求头:
1.Accept
2.Accept-Charset
3.Accept-Encoding
4.Accept-Language
5.Content-Langeuage
20.
Accept:text/xml;
Content-Type:text/html
即代表希望接受的数据类型是xml格式,本次请求发送的数据的数据格式是html。
21.
1** 接受的请求正在处理
2** 请求正常处理完毕
3** 需要进行附加操作以完成请求
4** 服务器无法处理请求
5** 服务器处理请求出错
22.
只要遵守状态码类别的定义,即时改变RFC2616中定义的状态码或服务端自行创建状态码都没问题
23.
常见状态码:
200 OK
204 No Content请求处理成功,但没有资源可返回
206 Partial Content表示客户端进行了范围请求,响应报文中包含由Content-Range指定范围的试题内容
301 Moved Permanently 永久重定向
302 Found 临时重定向
303 See Other 希望客户端能以GET方法重定向到另一个URI上
304 Not Modified 用缓存的时候会出现
400 Bad Request请求报文中存在语法错误
401 Unauthorized 发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)
403 Forbidden 服务器拒绝提供,一般是权限的问题
404 Not Found
500 Internal Server Error 服务器端内部出错
503 Service Unavailable 服务器在更新或者忙,一会再来
24.
当301、302、303响应状态码返回时,几乎所有的浏览器都会把POST改为GET
25.
HTTP/1.1规范允许一台HTTP服务器搭建多个WEB站点,因为利用了虚拟主机功能,即时物理层面只有一台服务器,但只要使用虚拟主机的功能,则可以假想已具有多台服务器
26.
当请求发送到服务器时,已经是以IP地址形式访问了
27.
代理,它扮演了位于服务器和客户端“中间人”的角色
网关,是转发其他服务器通信数据的服务器,接受从客户端发送来的请求时,他就像拥有资源的源服务器一样对请求进行处理
隧道,是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序
28.
使用代理服务器的理由有:利用缓存技术减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的。
29.
代理有多种使用方法,按两种基准分类,一种是是否使用缓存,另一种是是否会修改报文。
30.
隧道使用SSL等加密手段进行通信
31.
在请求中,HTTP报文由方法,URI,HTTP版本,HTTP首部字段等构成
在响应中,HTTP报文由HTTP版本,状态码(数字和原因短语)、HTTP首部字段3部分构成
31.
从字面意思上很容易把no-cache误解为不缓存,但事实上no-cache代表不缓存过期的资源,缓存会像员服务器进行有效期确认后处理资源,no-store才是真正的不进行缓存
32.
no-cache: 告诉浏览器、缓存服务器,不管本地副本是否过期,使用资源副本前,一定要到源服务器进行副本有效性校验。也就是说一定会有http请求,服务器会告诉我们资源有没有更新过。
must-revalidate:告诉浏览器、缓存服务器,本地副本过期前,可以使用本地副本;本地副本一旦过期,必须去源服务器进行有效性校验。
33.
keep-alive: timeout=10, max=500
34.
Pragma是HTTP/1.1之前版本的历史遗留字段,仅作为与HTTP/1.0的向后兼容
35.
首部字段Transfer-Encoding规定了传输报文主体时采用的编码方式
36.
首部字段Upgrade用于检测HTTP协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议
37.
报文经过代理或网关时,会现在首部字段Via中附加该服务器的信息,然后进行转发。
38.
Host首部字段在HTTP/1.1规范内是唯一一个必须被包含在请求内的首部字段
39.
If-match和ETag一起使用,还可以使用星号(*)指定If-match的字段值,这样,服务器将会忽略ETag的值,只要资源存在就处理请求
40.
对主体进行内容编码传输时,不能再使用content-length首部字段
41.
http主要有这些不足:
1.通信使用明文,内容可能会被窃听
2.不验证通信方的身份,因此可能遭遇伪装
3.无法证明报文完整性,所以有可能已遭篡改
42.
与SSL组合使用的HTTP被称为HTTPS
43.
虽然使用HTTP协议无法确定通信方,但如果使用SSL则可以,SSL不仅提供加密处理,而且还使用了一种被称为证书的手段,可用于确定方。
44.
常使用的确定报文完整性的方法,MD5和SHA-1等散列值校验,但他们并不便捷和可靠
45.
SSL提供认证和加密处理及摘要功能
46.
HTTP+加密+认证+完整性保护=HTTPS
47.
HTTPS是身披SSL外壳的HTTP,HTTPS只是HTTP通信接口部分用SSL和TLS协议代替而已
48.
通常HTTP直接和TCP通信,当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了,简而言之,所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP
49.
SSL采用一种叫公开密钥加密的加密处理方式,近代的加密方法中加密算法是公开的,而密钥确是保密的
50.
加密和解密同用一个密钥的方式称为共享密钥加密,也被叫做对称密钥加密
51.
使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。
52.
HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制
53.
为了解决公开密钥在传输中被替换的情况,可以使用由数字证书认证机构(CA,certificate Authority)和其相关机关颁发的公开密钥证书
54.
公钥证书也可叫做数字证书或直接称为证书
55.
接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事:一、认证服务器的公开密钥是真实有效的数字证书认证机构。二、服务器的公开密钥是值得信赖的。
56.
多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥
57.
银行的网上银行就采用了客户端证书,在登陆网银时不仅要求用户确认输入ID和密码,还要要求用户的客户端证书,以确认用户是否从特定的终端访问网银
58.
HTTPS也存在一些问题,那就是当使用SSL时,它的处理速度会变慢
59.
SSL的慢分两种。一种是指通信慢。另一种是指由于大量消耗CPU及内存等资源,导致处理速度变慢。
60.
要进行HTTPS通信,证书是必不可少的
61.
HTTP/1.1使用的认证方式:
1.BASIC认证(基本认证)
2.DIGEST认证(摘要认证)
3.SSL客户端认证
4.FormBase(基于表单认证)
62.
当请求的资源需要BASIC认证时,服务器会随状态码401返回带WWW-Authenticate首部字段的响应
63.
google的spdy是作用在会话层,也就是SSL和HTTP中间
64.
为了实现WebSocket通信,需要用到HTTP的Upgrade首部字段,告知服务器通信协议发生改变,已达到握手的目的,服务器返回状态码101
65.
成功握手确立WebSocket链接之后,通信时不再使用HTTP的数据帧,而采用WebSocket独立的数据帧
《图解http》知识点笔记的更多相关文章
- Vim 命令图解-Gvim使用笔记-2017-5-9
Vim 命令图解-Gvim使用笔记... 图片要是看的不太清楚推荐使用:鼠标右键在新标签中打开或是全屏看图 Vim中常用的一些速查命令: Vim发展历史:1976年Bill Joy开发了vi1988 ...
- Vim 命令图解-Gvim使用笔记
Vim 命令图解-Gvim使用笔记... 参考的网址:http://blog.vgod.tw/wp-content/uploads/2014/08/vgod-vim-cheat-sheet-full. ...
- Python 入门必学经典知识点笔记【肯定有你不知道的】
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:实验楼 Python 作为近几年越来越流行的语言,吸引了大量的学员开始学 ...
- [新手必备]Python 基础入门必学知识点笔记
Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...
- Java 多线程与并发【知识点笔记】
Java 多线程与并发[知识点笔记] Java多线程与并发 先说一下线程与进程的由来: 在初期的计算机,计算机只能串行执行任务,并且需要长时间的等待用户的输入才行 到了后来,出现了批处理,可以预先将用 ...
- 图解HTTP学习笔记
前言: 一直觉得自己在HTTP基础方面都是处于知其然,不知其所以然的样子.最近利用空闲时间拜读了一下图解HTTP,写篇博客记录一下读书笔记. TCP三次握手: ① 发送端首先发送一个带SYN标志的数据 ...
- 图解http学习笔记【一】
不想单纯的把书里的知识点罗列一遍 这周,我们的安全代码终于改完了.我在微信上报了个叫 一修读书的课程,现在已经听了6天.感觉并不是很神奇,聊胜于无.倒是趁着当当搞活动买回来好几本书,其中就有这本图解h ...
- 图解HTTP学习笔记——简单的HTTP协议
简单的HTTP协议 前言 最近在学习Web开发的相关知识,发现<图解HTTP>这本书通俗易懂.所以花时间学习这本书,并记录下学习笔记. 如上图,我们每天都在浏览网页,一般我们都是在浏览器地 ...
- 图解http读书笔记
以前对HTTP协议一知半解,一直不清楚前端需要对于HTTP了解到什么程度,知道接触的东西多了,对于性能优化.服务端的配合和学习中也渐渐了解到了HTTP基础的重要性,看了一些大神对HTTP书籍的推荐,也 ...
随机推荐
- Visual Representation of SQL Joins
原文:http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins 从视图上介绍了7种不同类型的JOIN ...
- golang sql database drivers
https://github.com/golang/go/wiki/SQLDrivers SQL database drivers The database/sql and database/sql/ ...
- Linux 文本编辑器vi命令
1.Vim Vim 是一个功能强大的全屏幕文本编辑器,是 Linux/UNIX 上最常用的文本编辑器,它的作用是建立.编辑.显示文本文件. Vim 没有菜单,只有命令 2.Vim 工作模式 3.插入 ...
- cleanMyMac
想看外国网站可以找我,facebook.youtube.XX大片等,只要8元钱,无限制用到服务器关闭.看大片流畅不成问题 需要cleanMyMac的请加微信只要10或直接拍 http://a.p6ff ...
- 字符串匹配KMP算法的C语言实现
字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD" ...
- csv文件转json
http://stackoverflow.com/questions/19766266/directly-convert-csv-file-to-json-file-using-the-jackson ...
- Effective Java 第三版——15. 使类和成员的可访问性最小化
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- Keras:基于Theano和TensorFlow的深度学习库
catalogue . 引言 . 一些基本概念 . Sequential模型 . 泛型模型 . 常用层 . 卷积层 . 池化层 . 递归层Recurrent . 嵌入层 Embedding 1. 引言 ...
- python 列表赋值和列表 sort 方法注意的问题
列表赋值 >>> a = b = [] >>> a.append() >>> a [] >>> b [] >>> ...
- 关于php变量的赋值和引用的区别
刚开始学习php,发现有些地方和js语法不同,所以记录下来. 这篇文章是总结php中变量赋值和引用的区别. 我们知道,js中,原始类型的赋值,是将值直接复制给变量:引用类型的赋值,是将内存地址复制给变 ...