浅析Https原理

1-在了解https前先看下http

  1.1 http概念:是一个基于TCP/IP通信协议来传递数据的超文本传输协议,传输的数据可以是HTML文件,图片文件,服务端返回数据等等

 1.2 http请求方法有哪些(常用的):

        GET 请求指定的页面信息,并返回实体主体。 

        POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在 请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。

        PUT 从客户端向服务器传送的数据取代指定的文档的内容

        DELETE请求服务器删除指定的页面。

 1.3 http请求头:

       Host : 主机和端口号

       Connection : 链接类型(长连接,短链接)

扫描二维码关注公众号,回复: 11846714 查看本文章

       Upgrade-Insecure-Requests (升级为 HTTPS 请求)  

       User-Agent :用户代理(一般写过爬虫了解这个,我们可以通过这个参数简单了解到是人还是浏览器)

       Accept : 传输文件类型

        Referer : 页面跳转处

        Accept-Encoding:文件编解码格式

        cookie :http是无状态协议,需要通过cookie和seesion来保持会话 

        x-requested-with :XMLHttpRequest (是 Ajax 异步请求)

  1.4 响应状态码:

       状态码分类:

              1XX- 信息型,服务器收到请求,需要请求者继续操作。

              2XX- 成功型,请求成功收到,理解并处理。

              3XX - 重定向,需要进一步的操作以完成请求。

              4XX - 客户端错误,请求包含语法错误或无法完成请求。

              5XX - 服务器错误,服务器在处理请求的过程中发生了错误。

        常见状态码:

              200 OK - 客户端请求成功

              301 - 资源(网页等)被永久转移到其它URL

              302 - 临时跳转

              400 Bad Request - 客户端请求有语法错误,不能被服务器所理解

              401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

              404 - 请求资源不存在,可能是输入了错误的URL

              500 - 服务器内部发生了不可预期的错误

              503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

   1.4  Post和Get区别:

         请求参数上:

               GET:请求是附在在URL上

               POST:请求一般放在body上

         请求数据大小:

               GET:  请求数据大小是有限制的(URL长度受由客户端/浏览器以及服务器端限制)

               POST:理论上没有大小限制(实际还是由客户端/浏览器以及服务器端限制)

         安全:

               POST请求相对于GET是比较安全的,但是记住http是明文传输,所以可以说都是不安全

         具体想了解更深,可以来到这个传入门

    1.5  Http特点:

           1.5.1 http协议支持客户端/服务端模式,也是一种请求/响应模式的协议

           1.5.2 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。

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

           1.5.4 无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。

           1.5.5 无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。

    1.6 http存在的问题:

          1.6.1 数据明文传输,容易被截取。

          1.6.2 数据完整性未校验,容易被篡改

          1.6.3 没有验证对方身份,存在冒充危险

    1.7 Http 在OSI哪一层:

           IP: 网络层

           TCP/UDP: 传输层

           HTTP、FTP: 应用层协议

     

 2- 接下来我们简单了解https

     2.1 消除http存在的问题:

           由于http明文传输数据,所以很容易在传输过程中被监听,对数据篡改或者盗取,这种攻击手法就是中间人攻击手法(MITM)

    2.2 Https是如何实现的(非对称加密和对称加密结合):

        2.2.1 客户端发送请求,服务端返回证书(公钥)

        2.2.2 客户端随机生成对称加密的密钥,并使用公钥加密,再把加密后的对称密钥发给客户端

        2.2.3 服务端使用私钥对对称加密的密钥进行解密,并用其解密后的对称密钥进行数据加密  

   这里注意在2.2.1 服务端返回的数据中不止有证书中的公钥,还有数字签名(用来防伪),证书明文部分。数字签名是对证书明文信息进行哈希,然后用私钥进行加密。客户端得到数据时候现用ca发的公钥进行解密得到sign1,然后再对证书明文部分进行哈希得到sign2,然后把sign1和sign2进行比较来判断是否被篡改过

2.3 Https不足:

      2.3.1 HTTPS协议多次握手,导致页面的加载时间延长近50%;

      2.3.2 HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗

      2.3.3 申请SSL证书需要钱,功能越强大的证书费用越高。

      2.3.4 SSL涉及到的安全算法会消耗 CPU 资源,对服务器资源消耗较大。

2.4 http和https 区别:

      2.41 https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。

     2.4.2 http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl 加密传输协议。

     2.4.3 http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。 

     2.4.4 http 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、 身份认证的网络协议,比 http 协议安全。

补充点: 

URI: 统一资源标识符,用来标示 一个具体的资源的,我们可以通过 URI 知道一个资源是什么。
URL: 统一资源定位符,用来定位具体的资源的,标示了一个具体的资源位置。互联网上的每个文件都有一个唯一的URL。

参考链接:

小灰讲解https

知乎讲解https

知乎十分钟搞懂HTTPS

猜你喜欢

转载自blog.csdn.net/lin_keys/article/details/105599357