zoukankan      html  css  js  c++  java
  • 网络基础:HTTP协议 vs HTTPS协议 区别

     HTTP协议

    • HTTP ( HYper Text Transfer Protocol)超文本传输协议,用于从万维网(www)服务器传输资源到本地浏览器的传送协议
    • HTTP 协议是基于 TCP 协议,默认是 80 端口。主要是用来规定客户端和服务端的数据传输格式
      • 80 端口用来区分上层协议(应用层)
    • HTTP 是基于请求与响应模式的、无状态的、无连接的应用层协议

        

    HTTP特点:

    1. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。-- 速度快

    2. 灵活: HTTP允许传输任意类型的数据对象,用Content-Type加以标记。

    3. 无连接:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。--重新发起连接?采用这种方式可以节省传输时间。

    ----- 基于目前web页面越来越复杂,就需要一个链接里面处理多个请求,就不希望处理一个请求就断开链接;-----然后在协议里面定义了keep-alive 的机制,就可以让链接保持连接,成为长连接

    4. 无状态:协议对客户端没有状态存储,对事物处理没有"记忆"能力,比如访问一个网站需要反复进行登录操作。请求1---断开》没有保存任何信息;请求2 (用请求1信息) :需要重传

    淘宝:登录----》 购买商品?我们需要cookies、session这种机制来 保持登录状态

    5. 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性

    client   ----->    (第三者,截取消息,篡改消息)   --->  server        ======根据这种情况HTTPS应运而生

    HTTPS协议

      概念::HTTPS (Hypertext Transfer Protocol Secure)超文本传输安全协议,简单讲是HTTP的安全版。它加密数据并确保其机密性--密文,可保护用户在与网站交互时免于窃取个人信息和计费数据,验证数据完整性。

    • HTTP  + 加密 + 身份认证 + 完整性 = HTTPS
    • 基于TCP的443端口,披着SSL协议外壳HTTP协议。
      • HTTP 和 HTTPS 协议在底层都是一样的(IP 层---传输层用的一个底层协议叫TCP协议,还有 UDP协议)
      • HTTP 协议是直接基于 TCP协议 直接成为 HTTP 协议
      • HTTPS 协议是从TCP 协议,先有一个 SSL 协议层,先封装一个SSL 协议头部数据包(基于SSL加密),再去封装一个 HTTPS 协议;在加密的基础上面再去发送 HTTP 的消息

          

     

    SSL 的四次握手

    ==

    1. 客户端请求建立SSL连接,并将自己支持的一套加密规则发送给服务器。---------1

    2. 网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等。---------2.3.4

      一对钥匙:公钥--公布--加密:私钥--私有, 解密的

    3. 获得网站证书之后浏览器要做以下工作;受信任?---CA颁证机构;---------5.6.7

      • 0验证证书的合法性--服务器身份,如证书受信任,浏览器会生成一串随机数密码,并用证书中提供的公钥加密。  
      • 0把密码发送给网站。  
      • 0告诉网站后续报文要加密了。握手结束。  

    4. 网站接收浏览器发来的数据之后要做以下的操作;---------8.9

      • 0使用自己的私钥将信息解密取出密码-- 加密了
      • 0告诉客户端后续报文要加密了。握手结束。

    Application Datal(HTTP):进行通讯,应用数据(HTTP)------10.11

    Alert warning, close notify:警告,关闭通知--------12

    • HTTP + 加密(秘钥来实现) + 身份认证(证书) + 完整性 ( MD5 哈希算法摘要 = 摘要 ) = HTTPS

     

    HTTP协议  vs  HTTPS协议

          

    *******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/   谢谢!!******* 

  • 相关阅读:
    5-python基础—获取某个目录下的文件列表(适用于任何系统)
    Automated, Self-Service Provisioning of VMs Using HyperForm (Part 1) (使用HyperForm自动配置虚拟机(第1部分)
    CloudStack Support in Apache libcloud(Apache libcloud中对CloudStack支持)
    Deploying MicroProfile-Based Java Apps to Bluemix(将基于MicroProfile的Java应用程序部署到Bluemix)
    Adding Persistent Storage to Red Hat CDK Kit 3.0 (在Red Hat CDK Kit 3.0添加永久性存储)
    Carve Your Laptop Into VMs Using Vagrant(使用Vagran把您笔记本电脑刻录成虚拟机)
    使用Python生成一张用于登陆验证的字符图片
    Jupyter notebook的安装方法
    Ubuntu16.04使用Anaconda5搭建TensorFlow使用环境 图文详细教程
    不同时区的换算
  • 原文地址:https://www.cnblogs.com/shouhu/p/12168391.html
Copyright © 2011-2022 走看看