《图解HTTP》读书心得(三)
本文紧跟上文《图解HTTP》读书心得(二)
最后是关于HTTP安全方面的知识:
HTTP的安全隐患
1.通信适用铭文可能被窃听
2.不验证通信方的身份可能遭遇伪装
3.无法验证报文完成性,可能已遭篡改
相对安全的HTTPS
HTTPS不是应用层的新协议,只是HTTP通信接口部分用SSL(secure socket layer)和TLS(Transport Layer Security)协议替代。
通常,HTTP直接和TCP通信,而使用SSL时,则先和SSL通信,再由SSL和TCP通信。关于HTTPS的介绍 参见HTTPS详解。
HTTP使用的认证方式
- BASIC认证 userName:Pwd
- DIGEST认证 质询/响应
- SSL客户端认证 证书+form认证
- FormBase认证
HTTP 1.1的性能瓶颈
- 一条连接上只可发送一个请求
- 请求只能从客户端开始 客户端不可以接收除了响应以外的指令
- 请求响应首部未经过压缩就发送 首部信息越多延迟越大
- 发送冗长的首部 每次互发相同的首部信息
- 可以任意选择数据压缩格式 而非强制压缩发送
解决方案 追加协议
- Ajax 通过XMLHttpRequest API 实现局部更新
- Comet 服务器推送
-
SPDY以会话层的形式加入,控制对数据的流动,但还是采用了HTTP建立通信连接。
好处:
实现多路复用 单一的tcp连接上处理所有的请求;
赋予请求的优先级;
压缩HTTP首部;
推送功能;
服务器提示功能;但是由于SPDY基本上只是将单个域名(IP地址)的通信多路复用,所以当一个Web网站上使用多个域名下的资源,改善效果就会受到限制。
-
WebSocket 浏览器与服务器之间全双工通信标准
利用Ajax和Comet技术进行通信可以提升Web的浏览速度。但问题在于通信如果继续使用HTTP协议,就无法彻底解决瓶颈问题。WebSocet网络技术正是为了解决这些问题而实现的一套新的协议及API。
原本计划是讲WebSocket作为HTML5的一部分,而现在逐渐成了独立的协议标准。
WebSocket协议
一旦服务器与客户端之间建立WebSocket协议的通信连接,之后所有的通信都依赖这个专有协议进行。通信过程中可以实现相互发送JSON、XML、HTML、图片、语音、视屏等等任意格式的数据。
主要特点:
* 推送功能
* 减少通信量
只要建立起WebSocket连接,就希望一直保持连接状态。和HTTP相比,不但每次连接时的总开销减少,而且由于WebSocket的首部信息很小,通信量也减少了。为了实现WebSocket通信,在HTTP连接建立之后,需要完成一次握手的步骤。(我也不知道为啥图片不能旋转o(>﹏<)o)
WebSocket API
JavaScript可以调用The WebSocket API内提供的程序接口,以实现WebSocket协议下的全双工通信。
期盼已久的HTTP/2.0
HTTP/2.0主要围绕7项技术进行讨论
表9-1
压缩 | SPDY、Friendly |
---|---|
多路复用 | SPDY |
TLS义务化 | Speed + Mobility |
协商 | Speed + Mobility,Friendly |
客户端拉拽(Client Pull)/服务器推送(Server Push) | Speed + Mobility |
流量控制 | SPDY |
WebSocket | Speed + Mobility |
注:HTTP speed + Mobility简写为Speed+Mobility,Network-Friendly HTTP Upgrade 简写为Friendly。
附一篇介绍HTTP/2.0详解
(完)