Http和Https
一、什么是HTTP?
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
二、什么是HTTPS?
《图解HTTP》这本书中曾提过HTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
PS:TLS是传输层加密协议,前身是SSL协议,由网景公司1995年发布,有时候两者不区分。
SSL证书:SSL证书能自动激活浏览器显示“锁”型安全标志,地址栏以“https”开头,意味着在客户端浏览器和Web服务器之间已建立起一条SSL安全加密通道,此时用户在线输入的信用卡号、交易密码等机密信息在网络传输过程中将不会被查看、窃取和修改,SSL证书为互联网数据传输保驾护航
三、HTTP VS HTTPS
1、HTTP特点:
1) 无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作
2) 无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
3) 基于请求和响应:基本的特性,由客户端发起请求,服务端响应
4) 简单快速、灵活
5) 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性
6) 针对无状态的一些解决策略:
- 通过Cookie/Session技术
- HTTP/1.1持久连接(HTTP keep-alive)方法,只要任意一端没有明确提出断开连接,则保持TCP连接状态,在请求首部字段中的Connection: keep-alive即为表明使用了持久连接
2、HTTPS特点:
基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护
1) 内容加密:采用混合加密技术,中间者无法直接查看明文内容
2) 验证身份:通过证书认证客户端访问的是自己的服务器
3) 保护数据完整性:防止传输的内容被中间人冒充或者篡改
3、 HTTP通信传输
报文从应用层传送到运输层,运输层通过TCP三次握手和服务器建立连接,四次挥手释放连接。
为什么需要三次握手呢?为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
4、HTTPS实现原理
4、 运用与总结
1)安全性考虑:
i. HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用
ii. SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行
2)成本考虑:
a) SSL证书需要购买申请,功能越强大的证书费用越高
b) SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗(SSL有扩展可以部分解决这个问题,但是比较麻烦,而且要求浏览器、操作系统支持,Windows XP就不支持这个扩展,考虑到XP的装机量,这个特性几乎没用)。
c) 根据ACM CoNEXT数据显示,使用HTTPS协议会使页面的加载时间延长近50%,增加10%到20%的耗电。
d) HTTPS连接缓存不如HTTP高效,流量成本高。
e) HTTPS连接服务器端资源占用高很多,支持访客多的网站需要投入更大的成本。
f) HTTPS协议握手阶段比较费时,对网站的响应速度有影响,影响用户体验。比较好的方式是采用分而治之,类似12306网站的主页使用HTTP协议,有关于用户信息等方面使用HTTPS。