title: http 理解(中)
date: 2018-05-15 14:53:22
tags: http
确保Web安全的HTTPS
在HTTP协议中有可能 存在 信息窃听或身份伪装等安全问题。使用HTTPS通信机制可以有效地防止这些问题。
HTTP的缺点
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭遇创思
当然这些问题不仅仅是在HTTP上出现,其他未加密协议中也会存在这类问题。
除此之外,HTTP本身还有很多缺点。而且,还有像某些特定的Web服务器和特定的Web浏览器在实际应用中存在的不足。
加密处理防止被窃听
通信的加密
HTTP协议中没有加密机制。但可以通过和SSL 或 TLS 的组合使用,加密HTTP的通信内容。
- 用SSL建立安全通信路线之后,就可以在这条线路上进行HTTP通信了,与SSL组合使用的HTTP被称之为 HTTPS
- 查明对方的证书
- 通过MD5和SHA-1等散列值校验方法
HTTP + 加密 + 认证 + 完整性保护 = HTTPS
既然HTTPS那么安全可靠,那为何所有的Web网站不一直使用HTTPS。
-
与纯文本通信相比,加密通信会消耗更多的CPU和内存资源,如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定也会随之减少。
-
购买证书的开销也是原因之一。
确认访问用户身份的认证
谱写web页面指向让特定的人浏览,或者干脆仅本人可见。为达到这个目标,必不可少的就是认证功能。
通常我们知道的认证 有以下:
- 密码
- 动态令牌
- 数字证书
- 生物认证
- IC卡等
HTTP 使用的认证方式
HTTP/1.1 使用的认证方式如下所示。
- BASIC 认证(基本认证)
- DIGEST 认证(摘要认证)
- SSL 客户端认证
- FormBase 认证(基于表单认证)
前面两个用的不多,在这里就不过多描述,SSL 虽然安全,但是如果是个人网站,则购买证书也需要花费金额。因此大多数会采用基于表单认证。
Session 管理 及 Cookie 应用
基于HTTP的动能追加协议
虽然HTTP协议既简单又简洁,但随着时代的发展,其功能使用上捉襟见肘的疲态已经凸现。
消除HTTP瓶颈的SPDY
Google在2010年发布了SPDY,其开发目标旨在解决HTTP的性能瓶颈,缩短Web页面的加载时间
http标准的瓶颈:
- 一条连接上只可发送一个请求
- 请求只能从客户端开始。客户端不可以接受除响应以外的指令
- 请求/响应首部未经压缩就发送。首部信息越多延迟越大。
- 发送冗长的首部。每次互相发送相同的首部造成的浪费较多。
- 可任意选择数据压缩格式。非强制压缩发送。
AJAX的方案 和 comet的方案的出现解决一部分问题,但是仍为解决http的瓶颈问题。
SPDY的目标
SPDY没有完全改写HTTP协议,而是在TCP/IP的应用层与传输层之间通过新加会话层的形式运作。同时,考虑到安全性问题,SPDY规定通信中使用SSL。
使用SPDY后,HTTP协议获得额外功能。
-
多路复用流
通过单一的TCP连接,可以无限制处理多个HTTP请求。所有请求的处理都在一条TCP连接上完成,因此TCP的处理效率得到提高。 -
赋予请求优先级
SPDY不仅可以无限制地并发处理请求,还可以给请求逐个分配优先级。这样主要是为了在发送多个请求时,解决因带宽低而导致响应变慢的问题 -
压缩HTTP首部
压缩HTTP请求和响应的首部。这样依赖,通信产生的数据包数量和发送的字节数就更少了 -
推送功能 支持服务器主动向客户端推送数据的功能。这样,服务器可直接发送数据,而不必等待客户端的请求
-
服务器提示功能 服务器可以主动提示客户端请求所需的资源,由于在客户端发现资源之前就可以获得资源的存在,因此在资源已经缓存等情况下,可以避免发送不必要的请求
使用浏览器进行全双工通信的 WebSocket
利用Ajax和Comet技术进行通信可以提升Web的浏览速度。但问题在于通信若使用HTTP协议,就无法彻底解决瓶颈问题。WebSocket网络技术正是为解决这些问题而实现的一套新协议及API。
WebSocket的设计与功能
WebSocket,即Web浏览器与Web服务器之间全双工通信标准。其中,WebSocket协议由IETF定为标准,WebSocket API 由W3C定为标准。扔在开发中的WebSocket技术主要是为了解决Ajax 和 Comet里XMLHttpRequest附带的缺陷所引起的问题。
成功握手确立WebSocket连接之后,通信时,不再使用HTTP的数据帧,而采用WebSocket独立的数据帧。
HTTP/2.0
HTTP/2.0 的目标是改善用户在使用Web时的速度体验。由于基本上都会先通过HTTP/1.1与TCP连接,现在我们以下面这些协议为基础,探讨一下它们的实现方法。
- SPDY
- HTTP Speed + Mobiliity
- Network-Friendly HTTP Upgrade
**HTTP Speed + Mobiliity **是由微软起草,用于改善并提高移动通信时的通信速度和性能的标准。它建立在Google公司提出的SPDY与WEBSOCKET的基础上。
Network-Friendly HTTP Upgrade 主要是在移动端通信时改善HTTP性能的标准。
网友评论