《图解HTTP》读书笔记
TITLE:《图解HTTP》
AUTHOR:上野宣
TRANSLATOR:于均良
SHOP:http://csdn.com/
BUY:2017-11-03
READ:2017-11-10
NOTE:2017-11-25
INTENT:学习HTTP协议
TCP/IP协议簇分层:
应用层:
应用层决定了向用户提供应用服务时通信的活动。
例如:HTTP,FTP 和 DNS
传输层:
传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
例如:TCP和UDP
网络层:
网络层用来处理在网络上流动的数据包。
例如:IP协议
数据链路层:
用来处理连接网络的硬件部分。
例如:操作系统、硬件的设备驱动、网卡
TCP/IP协议簇分层负责传输的IP协议
IP 协议的作用是把各种数据包传送给对方。
使用ARP协议凭借 MAC地址进行通信,ARP是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。
IP协议确保可靠性的TCP协议
TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。
TCP协议三次握手负责域名解析的DNS服务
DNS 协议提供通过域名 查找IP地址,或逆向从IP 地址反查域名的服务。
DNS服务各种协议与 HTTP 协议的关系
各种协议与 HTTP 协议的关系HTTP协议的内容:
在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定有一端是客户端,另一端则是服务器端。
通过请求和响应的交换达成通信。
通过请求和响应的交换达成通信告知服务器意图的 HTTP 方法
HTTP方法HTTP报文
请求报文
请求报文响应报文
响应报文通用首部字段:
通用首部字段请求首部字段:
请求首部字段响应首部字段:
响应首部字段实体首部字段:
实体首部字段返回码:
返回码提升编码传输速率:
持久连接
持久连接管线化
管线化代理
代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。
代理服务器 缓存服务器压缩传输的内容编码
- gzip(GNU zip)
- compress(UNIX 系统的标准压缩)
- deflate(zlib)
- identity(不进行编码)
分割发送的分块传输编码
在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。
使用 Cookie 的状态管理
使用 Cookie 的状态管理HTTP安全性和HTTPS协议:
HTTP安全性的缺陷
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
HTTP + 加密 + 认证 + 完整性保护 = HTTPS
HTTPSHTTPS 是身披 SSL 外壳的 HTTP
共享密钥加密
共享密钥加密公开密钥加密
公开密钥加密HTTPS采用混合加密机制
HTTPS采用混合加密机制证明公开密钥正确性的证书
[图片上传失败...(image-9e4651-1511602975677)]
由自认证机构颁发的证书称为自签名证书
自签名证书HTTPS 通信步骤
HTTPS通信步骤步骤 1: 客户端通过发送 Client Hello 报文开始 SSL通信。报文中包 含客户端支持的 SSL的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)。
步骤 2: 服务器可进行 SSL通信时,会以 Server Hello 报文作为应 154 答。和客户端一样,在报文中包含 SSL版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。
步骤 3: 之后服务器发送 Certificate 报文。报文中包含公开密钥证书。
步骤 4: 最后服务器发送 Server Hello Done 报文通知客户端,最初阶段的 SSL握手协商部分结束。
步骤 5: SSL第一次握手结束之后,客户端以 Client Key Exchange 报 文作为回应。报文中包含通信加密中使用的一种被称为 Pre-master secret 的随机密码串。该报文已用步骤 3 中的公开密钥进行加密。
步骤 6: 接着客户端继续发送 Change Cipher Spec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret 密钥加密。
步骤 7: 客户端发送 Finished 报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确 解密该报文作为判定标准。
步骤 8: 服务器同样发送 Change Cipher Spec 报文。
步骤 9: 服务器同样发送 Finished 报文。
步骤 10: 服务器和客户端的 Finished 报文交换完毕之后,SSL连接 就算建立完成。当然,通信会受到 SSL的保护。从此处开始进行应用 层协议的通信,即发送 HTTP 请求。
步骤 11: 应用层协议通信,即发送 HTTP 响应。
步骤 12: 最后由客户端断开连接。断开连接时,发送 close_notify 报 文。
上图做了一些省略,这步之后再发送 TCP FIN 报文来关闭与 TCP 的通信。
网友评论