速读,五分钟深入了解HTTP( 七 )


公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密 。
非对称密钥除了用来加密,还可以用来进行签名 。因为私有密钥无法被其他人获取,因此通信发送方使用其私有密钥进行签名,通信接收方使用发送方的公开密钥对签名进行解密,就能判断这个签名是否正确 。

优点:可以更安全地将公开密钥传输给通信发送方;
缺点:运算速度慢 。

速读,五分钟深入了解HTTP

文章插图
 
3. HTTPs 采用的加密方式HTTPs 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率 。(下图中的 Session Key 就是对称密钥)
速读,五分钟深入了解HTTP

文章插图
 
认证通过使用 证书 来对通信方进行认证 。
数字证书认证机构(CA,Certificate Authority)是客户端与服务器双方都可信赖的第三方机构 。
服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起 。
进行 HTTPs 通信时,服务器会把证书发送给客户端 。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了 。
通信开始时,客户端需要使用服务器的公开密钥将自己的私有密钥传输给服务器,之后再进行对称密钥加密 。
速读,五分钟深入了解HTTP

文章插图
 
完整性保护SSL 提供报文摘要功能来进行完整性保护 。
HTTP 也提供了 MD5 报文摘要功能,但不是安全的 。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是无法意识到发生了篡改 。
HTTPs 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作 。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文 。
HTTPs 的缺点
因为需要进行加密解密等过程,因此速度会更慢;
需要支付证书授权的高额费用 。
九、HTTP/2.0HTTP/1.x 缺陷HTTP/1.x 实现简单是以牺牲性能为代价的:
客户端需要使用多个连接才能实现并发和缩短延迟;
不会压缩请求和响应首部,从而导致不必要的网络流量;
不支持有效的资源优先级,致使底层 TCP 连接的利用率低下 。
二进制分帧层HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式的 。
速读,五分钟深入了解HTTP

文章插图
 
在通信过程中,只会有一个 TCP 连接存在,它承载了任意数量的双向数据流(Stream) 。
一个数据流(Stream)都有一个唯一标识符和可选的优先级信息,用于承载双向信息 。
消息(Message)是与逻辑请求或响应对应的完整的一系列帧 。
帧(Frame)是最小的通信单位,来自不同数据流的帧可以交错发送,然后再根据每个帧头的数据流标识符重新组装 。

速读,五分钟深入了解HTTP

文章插图
 
服务端推送HTTP/2.0 在客户端请求一个资源时,会把相关的资源一起发送给客户端,客户端就不需要再次发起请求了 。例如客户端请求 page.html 页面,服务端就把 script.js 和 style.css 等与之相关的资源一起发给客户端 。
速读,五分钟深入了解HTTP

文章插图
 
首部压缩HTTP/1.1 的首部带有大量信息,而且每次都要重复发送 。
HTTP/2.0 要求客户端和服务器同时维护和更新一个包含之前见过的首部字段表,从而避免了重复传输 。
不仅如此,HTTP/2.0 也使用 Huffman 编码对首部字段进行压缩 。
速读,五分钟深入了解HTTP

文章插图
 
十、HTTP/1.1 新特性
详细内容请见上文
默认是长连接
支持流水线
支持同时打开多个 TCP 连接
支持虚拟主机
新增状态码 100
支持分块传输编码
新增缓存处理指令 max-age
十一、GET 和 POST 比较数据传输方式GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456 。POST方法是把提交的数据放在HTTP包的Body中 。(一个形象地比喻是:当执行GET请求的时候,要给汽车贴上GET的标签(设置method为GET),而且要求把传送的数据放在车顶上(url中)以方便记录 。如果是POST请求,就要在车上贴上POST的标签,并把货物放在车厢里 。)


推荐阅读