《图解HTTP》读书笔记

《图解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协议

数据链路层:

用来处理连接网络的硬件部分。

例如:操作系统、硬件的设备驱动、网卡

《图解HTTP》读书笔记_第1张图片
TCP/IP协议簇分层
负责传输的IP协议

IP 协议的作用是把各种数据包传送给对方。

使用ARP协议凭借 MAC地址进行通信,ARP是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。

《图解HTTP》读书笔记_第2张图片
IP协议
确保可靠性的TCP协议

TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。

《图解HTTP》读书笔记_第3张图片
TCP协议三次握手
负责域名解析的DNS服务

DNS 协议提供通过域名 查找IP地址,或逆向从IP 地址反查域名的服务。

《图解HTTP》读书笔记_第4张图片
DNS服务

各种协议与 HTTP 协议的关系

《图解HTTP》读书笔记_第5张图片
各种协议与 HTTP 协议的关系

HTTP协议的内容:

在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定有一端是客户端,另一端则是服务器端。

通过请求和响应的交换达成通信。

《图解HTTP》读书笔记_第6张图片
通过请求和响应的交换达成通信
告知服务器意图的 HTTP 方法
《图解HTTP》读书笔记_第7张图片
HTTP方法
HTTP报文

请求报文

《图解HTTP》读书笔记_第8张图片
请求报文

响应报文

《图解HTTP》读书笔记_第9张图片
响应报文

通用首部字段:

《图解HTTP》读书笔记_第10张图片
通用首部字段

请求首部字段:

《图解HTTP》读书笔记_第11张图片
请求首部字段

响应首部字段:

《图解HTTP》读书笔记_第12张图片
响应首部字段

实体首部字段:

《图解HTTP》读书笔记_第13张图片
实体首部字段

返回码:

《图解HTTP》读书笔记_第14张图片
返回码

提升编码传输速率:

持久连接

《图解HTTP》读书笔记_第15张图片
持久连接

管线化

《图解HTTP》读书笔记_第16张图片
管线化

代理

代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。

《图解HTTP》读书笔记_第17张图片
代理服务器
《图解HTTP》读书笔记_第18张图片
缓存服务器

压缩传输的内容编码

  1. gzip(GNU zip)
  2. compress(UNIX 系统的标准压缩)
  3. deflate(zlib)
  4. identity(不进行编码)

分割发送的分块传输编码

在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。

使用 Cookie 的状态管理

《图解HTTP》读书笔记_第19张图片
使用 Cookie 的状态管理

HTTP安全性和HTTPS协议:

HTTP安全性的缺陷

  1. 通信使用明文(不加密),内容可能会被窃听
  2. 不验证通信方的身份,因此有可能遭遇伪装
  3. 无法证明报文的完整性,所以有可能已遭篡改

HTTP + 加密 + 认证 + 完整性保护 = HTTPS

《图解HTTP》读书笔记_第20张图片
HTTPS

HTTPS 是身披 SSL 外壳的 HTTP

共享密钥加密

《图解HTTP》读书笔记_第21张图片
共享密钥加密

公开密钥加密

《图解HTTP》读书笔记_第22张图片
公开密钥加密

HTTPS采用混合加密机制

《图解HTTP》读书笔记_第23张图片
HTTPS采用混合加密机制

证明公开密钥正确性的证书

[图片上传失败...(image-9e4651-1511602975677)]

由自认证机构颁发的证书称为自签名证书

《图解HTTP》读书笔记_第24张图片
自签名证书

HTTPS 通信步骤

《图解HTTP》读书笔记_第25张图片
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 的通信。

你可能感兴趣的:(《图解HTTP》读书笔记)