《图解http》读书笔记(三)

第七章 确保web安全的HTTPS

HTTP在安全性方面并没有保障,所以我们不得不提到HTTPS,HTTPS并非是一种新的协议,HTTPS = HTTP + SSL,相信大家都知道,接下来一起看一下https到底是什么吧?

HTTP存在的问题:

  • 明文传输,不加密
  • 不验证通信方的身份
  • 无法保证报文的完整性

所以,https也就是HTTP + 加密 + 认证 + 完整性保护 ,弥补了http在安全性方面的缺陷。

è¿éåå¾çæè¿°

插播两个小概念:

  1. 共享密钥加密(对称密钥加密): 加解密是同一个密钥
  2. 公开密钥加密(非对称密钥加密):有一对非对称密钥,公钥和私钥,私钥只有自己知道,公钥是公开的,通信时,发送方采用接受方的公钥加密,接收方收到后用自己的私钥解密

HTTPS采用共享密钥加密和公开密钥加密的混合加密机制。通信双方建立连接后,先通过公开密钥加密机制,传输接下来要使用的共享密钥加密的密钥,再使用共享密钥加密机制通信。

这里客户端怎么确认服务器端的公钥是正确的呢?  服务器端先去CA申请公钥,CA审核后会发数字证书,客户端只需要核实数字证书的有效性就可以知道服务器端的公钥是否正确。

https的通信机制如下:

è¿éåå¾çæè¿°

         è¿éåå¾çæè¿°

扫描二维码关注公众号,回复: 4015604 查看本文章

         è¿éåå¾çæè¿°

第九章 基于http的功能追加协议

http的瓶颈:

  • 一条连接上只可发送一个请求
  • 请求只能从客户端开始,客户端不可以接收除响应外的指令
  • 请求或响应首部未经压缩就发送,首部信息越多延迟越大
  • 发送冗长的首部,每次互相发送相同的首部造成的浪费较多
  • 可任意选择数据压缩格式,非强制压缩发送

优化方案:

Aajx:异步请求,局部更新

Comet:收到请求,先将响应挂起,等服务器端有更新,再返回

SPDY:多路复用(一个Tcp连接,可以处理多个http请求);赋予请求优先级;压缩HTTP首部;推送功能(服务器端可以主动向客户端推送数据);服务器提示功能(主动提示客户端请求所需的资源)

WebSocket

WebSocket是 web浏览器与web服务器之间的全双工通信标准,是一个新的协议,WebSocket是建立在http基础上的协议,因此建立连接时,发起方还是客户端。

websocket的特点:推送功能(服务器端可主动推动数据到客户端);减少通信量(相比http,连接时的总开销减少,websocket首部的信息量也很少)

由于是建立在HTTP基础上的协议,因此连接的发起方仍是客户端,而一旦确立WebSocket通信连接,不论服务器端还是客户端,任意一方都可直接向对方发送报文。

websocket例子:

握手请求: 

GET /chat HTTP/1.1
Host: server.example.com
//告诉服务器我使用的是websocket连接
Upgrade: websocket 
Connection: Upgrade 

//验证请求,浏览器生成
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==  //握手过程中必不可少的键值
Sec-WebSocket-Protocol: chat, superchat  //使用的子协议
Sec-WebSocket-Version: 13
Origin: http://example.com

服务器端响应:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat

成功握手确立websocket连接之后,通信时不再使用http数据帧,而是使用websocket独立的数据帧。

猜你喜欢

转载自blog.csdn.net/Smallsun_229/article/details/81775181