第一章 了解web以及网络基础
1.3 TCP/IP
网络上的两个设备要通信必须遵守一致的协议,协议中规定很多内容,例如IP地址的选定方法、寻找各地用户的方法、双方建立通信的顺序、以及在web页面显示内容需要的步骤等。
TCP/IP就是这样的协议集合。该集合中包含很多协议。可将其分为4层:
客户端和服务端通过TCP/IP通信时,数据流在客户端是从上往下走,在服务端是从下往上走。
在层层传递的时候会有封装和解封装的过程。
1.4 与HTTP关系密切的协议:IP、TCP、DNS
1.4.1 IP协议
“IP”是一种协议名称。
“IP地址”指明了数据包被传送到的网络地址
“MAC地址”是指网卡所属的固定地址。
IP间的通信依赖MAC地址,在网络上,通信双方通常要经过设备中转才能通信。这时会采用ARP协议(Address Resolution Protocol).ARP是一种用于解析地址的协议,根据通信双方的IP反查MAC地址。
“TCP”能确保数据到达目标。通过三次握手方式保证数据成功。如果握手中莫名其妙的中断,TCP会重新握手发送数据。
1.5 DNS服务
DNS协议提供通过域名查找IP地址、或者逆向通过IP反查域名。
1.6 各协议与HTTP的关系
第二章 简单的HTTP协议
2.1 一次HTTP请求
request:
response:
HTTP是无状态的,也就是对request和response不做持久化。
COOKIE是用来解决HTTP无状态的问题。
2.6 带有意图的HTTP
2.8 管线化
最初的http每次通信都要建立连接断开连接。连接的建立和销毁是很耗费资源的。
HTTP1.1开始支持持久连接。建立连接后,只要没有一方主动断开连接就不会端断开连接。
持久连接使得多数请求以管线化的方式发送称为可能。
管线化之前发送请求后需要等待接收到响应后才能再发下一个请求。
管线技术可以不等直接发送下一个请求。
2.8使用Cookie的状态管理
第三章 HTTP报文内的HTTP信息
3.1HTTP报文结构
报文主题不一定有。
3.3 提升传输效率的方法
内容编码
压缩传输的内容编码
分块传输
3.4 发送多种对象的多部分对象集合
HTTP支持发送喊报文主体包含多类型实体,如图片文件。
首部字段需要加Content-type。
使用boundary字符串来划分多部分对象集合的指明的各类实体。
3.5 范围请求
这种场景:一幅图片下载了一般连接断开了。重新下载希望继续下载而不是全部下载。
首部字段的Range可以实现。
第四章 返回结果的HTTP状态码
4.1
4.2 2XX 成功
200 成功
204 no Content.没有报文主体可以返回
206 partial Content.范围请求
4.3 3XX 重定向
301 moved permanently.永久重定向
302 Found.临时重定向
303 see other。与302的区别是明确表示客户端应该采用GET方法获取临时定向的资源。
304 Not modified.有资源但是不满足条件。
307 Temporary Redirect。与302一样。
4.4 4XX 客户端错误
400 Bad Request。请求报文中存在语法错误
401 unauthorized。需要认证
403 forbidden.无权访问。
404 not found。无资源。
4.5 5XX 服务器错误
500 internal Server Error。服务端异常
503 service unavailable。服务端服务不可用。
第七章 确保Web安全的HTTPS
HTTPS = HTTP + 加密 + 认证 + 完整性保护
HTTP主要有这些不足:
- 通信使用明文,内容可能被窃听
- 不验证通信方的身份,因此可能遭遇伪装
- 无法证明报文的完整性,所以可能已遭篡改
7.1 加密方法
- 对称加密。加密和解密使用相同的秘钥
- 非对称加密。加密和解密使用不同的秘钥。公钥和私钥成对出现,公钥加密的密文只有私钥可以解密,私钥加密的密文只有公钥可以解密。服务端持有私钥,客户端持有公钥。
对称加密的缺点是一旦秘钥泄漏,则毫无安全可言。
非对称加密更加安全。
7.2 SSL
ssl采用非对称加密的方发。
为了解决客户端不相信服务端的问题,引入了客户端和服务端都信任的第三方证书机构。
客户端将第三方设置为信任的机构,服务端从第三方申请证书,发送给客户端,客户端通过信任的机构验证服务端发送过来的证书,认证通过,则服务端的身份得到确认,同时,客户端也得到了公钥。
7.3 HTTPS
HTTPS就是身披SSL外壳的HTTP.
HTTPS主要还是使用对称加密。
为了更安全,每个客户端使用不同的秘钥和服务端通信。具体使用什么秘钥需要两者协商得出结果。
协商的过程会明文传输对称加密秘钥,
为了保证对称加密秘钥传输的安全,秘钥传输使用的是SSL协议安全传输。
HTTPS通过SSL通信的示意图: