zoukankan      html  css  js  c++  java
  • 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) 针对无状态的一些解决策略:

    1. 通过Cookie/Session技术
    2. 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。

  • 相关阅读:
    java内联函数
    jvm垃圾回收
    jvm内存管理
    java进程和线程的区别
    jvm
    简单易学的SSM(Spring+SpringMVC+MyBatis)整合
    Spring之声明式事务
    SpringMVC知识点小结
    Servlet之文件的上传与下载
    java使用字节流和字符流实现文件复制
  • 原文地址:https://www.cnblogs.com/ivy-zheng/p/10867856.html
Copyright © 2011-2022 走看看