HTTP与HTTPS比较以及通信过程

      最后更新:2022-08-02 23:15:28 手机定位技术交流文章

      文章目录

          • 1.HTTP和HTTPPS的介绍
            • 什么是HTTP
            • HTTP报文格式
            • 什么是HTTPS
          • 2.HTTP VS HTTPS
            • HTTP特点:
            • HTTPS特点:
          • 3.HTTPS实施原则
          • 4.HTTP和HTPS通信传输
            • http通信过程
            • HTTPS通信过程
          • 5.参考链接:

      1.HTTP和HTTPPS的介绍

      什么是HTTP

      超文本传输协议,它以请求和回应为基础,无状态的, 应用层 的协议,经常基于TCP/IP协议的数据传输,互联网上最广泛使用的网络协议, 所有 WW 文件必须符合这个标准.HTTP的设计最初的目的是提供一种发布和接收HTML页面的方法。

      版本 产生时间 内容 发展现状
      HTTP/0.9 1991年 它不涉及数据包传输,并指定客户端与服务器之间的通信格式,只提供GET请求 没有作为正式的标准
      HTTP/1.0 1996年 传输内容格式是无限的,添加PUT、PATCH、HEAD、OPTIONS、 DELETE命令,只有短连接 正式作为标准
      HTTP/1.1 1997年 长期连接,带宽储存,HOST域,管道机制,块传输编码 2015年以前最广泛使用
      HTTP/2 2015年 多路径重用,服务器传送,头信息压缩,二进制协议等。 逐渐覆盖市场

      多个循环复制:通过一个HTTP/2连接请求启动多个请求响应消息,多个请求流共享一个TCP连接实现多个保留平行,而不是依赖多个TCP连接。

      HTTP报文格式

      在这里插入图片描述

      什么是HTTPS

      图形HTTP书提到HTTPPS为HTTP与SSL壳。HTTPS是通过计算机网络进行安全通信的协议。通过HTTP进行通信,使用SSL/TLS创建完整的频道,加密数据包。HTTPS的主要目的是向网站服务器提供认证,同时保护数据交换的隐私和完整性。PS:TLS是一个传输层加密协议,前身是SSL协议,1995年由网景公司出版,有时候两者不区分。

      2.HTTP VS HTTPS

      HTTP特点:

      1. 无状态:协议没有客户端的状态存储,并且没有“存储”能力来处理事务,例如访问网站需要重复登录操作
      2. 没有连接:HTTP/1。由于无状态特点,每个请求需要通过TCP的三个握手和四个握手,重新连接到服务器。例如,客户在短时间内多次请求相同的资源,服务器无法区分它是否响应用户请求,所以每次你需要重新回答一个请求,需要花不必要的时间和流。
      3. 基于请求和基于响应的:基本特征,客户发起的请求,服务侧的响应
      4. 简单快速、灵活
      5. 使用书面声明、请求和答复的通信不能确认或保护通信者的数据完整性

      一些解决无国籍问题的方法:

      1. 透过Cookie/Session技术
      2. HTTP/1.1持久连接(HTTP keep-alive)方法,只要任何目的不明确地提议断电,然后保持TCP连接状态,在请求首部字段中的Connection: keep-alive即为表明使用了持久连接

      http的三个缺点:

      1. 无法验证身份可能导致身份伪造.
      2. 通讯,数据可能被盗
      3. 无法验证报告的完整性, 内容可能会被更改.

      HTTPS特点:

      介绍:提供基于HTTP协议的SSL或TLS数据加密、认证和数据完整性保护

      1. 内容加密:使用混合加密技术,中间人不能直接查看消息的内容
      2. 身份验证:身份验证客户端通过身份验证客户端访问自己的服务器
      3. 保护数据完整:防止中介人操纵或伪造传输内容

      混合加密: 结合不对称加密和对称加密技术.客户使用对称加密来生成加密传输数据的钥匙,然后使用不对称公开密钥加密密钥,所以网络上传输的数据是被秘钥加密的密文和用公钥加密后的秘密秘钥,所以即使有人拦截黑mail,由于没有私钥,无法获取声明的加密密钥,无法访问明文数据.

      摘要:用单向 Hash 函数 Hash 原始文本,将加密的声明“摘要”转换为固定长度的字符串(例如128位元),结果对于不同形式的总结不同的文本总是一样。同样的陈述必须以同样的方式总结,即使知道总结,也无法抵制声明。

      数字签名技术:基于公共密钥加密系统的数字签名是公共密钥加密技术的一种应用形式,它结合非对称加密技术和数字摘要形成一种实用的数字签名技术。 数字签名是使用私人密钥加密信息的数字摘要形成数字签名

      数字证书:数字证书是互联网通信中通信各方的身份信息标记的数字证书,人们可以使用它来在线识别对方的身份。

      • 混合加密解决HTTP通信中可能盗窃的问题
      • 数字签名技术解决了数据操作问题
      • 数字证书对身份伪造的解决方案
        在这里插入图片描述

      非对称加密过程需要使用公共密钥加密,那么公钥从何而来?事实上,公共密码在数字证书中包含,数字证书通常由一个可靠的数字证书签发机构CA发出,在验证服务器身份后发出,证书包含一个密钥对(公共密钥和私人密钥)和所有者识别信息。数字证书放在服务端,具有服务器认证和数据传输加密功能.

      3.HTTPS实施原则

      HTTPS通信主要由多个节点组成,启动请求、验证身份、查阅密钥和加密对话。具体程序如下(在这个例子中只有客户端到服务器的单向验证):

      1.客户端向服务端发起HTTPS请求。

      服务器将数字证书发送给客户端。

      3,客户端验证了数字证书,而证书验证通过客户端生成会话键(客户端也将发送证书到服务器这里进行双边验证)。

      4、服务器生成会话密钥(双向验证此处服务端也会对客户端的证书验证)。

      客户端和服务端开始加密对话。

      4.HTTP和HTPS通信传输

      http通信过程

      在这里插入图片描述

      HTTP通信机制是一个完整的HTTP通信过程,在网页浏览器和网页服务器之间完成以下7步骤:

      1 建立TCP连接
      在HTTP工作开始之前,网络浏览器首先通过网络建立与网络服务器的连接,连接通过TCP完成,协议与IP协议一起构建互联网,著名的TCP/IP协议家族,互联网也被称为TCP/IP网络。HTTP是一个比TCP高层次的应用程序层协议,根据规则,只有在建立一个低级协议之后才能连接一个更深层协议。因此,首先,建立一个TCP连接,通用的TCP连接端口号码是80。

      2网络浏览器向网络服务器发送请求命令
      一旦建立TCP连接,网络浏览器将请求命令发送到网络服务器上
      例如GET/sample/hello.jsp HTTP/1.1.

      3网页浏览器发送请求标题信息
      在浏览器发送请求命令后,它还以标题的形式向Web服务器发送一些其他信息,然后浏览器发送一个空白行通知服务器它已经完成发送标题。

      4 网页服务器响应
      客户端向服务器发送请求后,服务器将发送客户端的响应,
      HTTP/1.1 200 OK
      响应的第一部分是协议的版本号和响应状态代码。

      5Web服务器发送响应头条信息
      就像一个客户端通过请求发送关于自己的信息一样,一个服务器会向用户发送自己的数据和请求的文件,并作出相应的响应。

      6Web服务器向浏览器发送数据
      当Web服务器将标题发送到浏览器后,它将发送一个空白行,以表示该标题的发送到此端,然后它将用户请求的实际数据发送到内容类型格式,以响应该标题的描述。

      7Web服务器关闭TCP连接
      一般来说,一旦Web服务器向浏览器发送请求数据,它就会关闭TCP连接,然后添加此行代码,如果浏览器或服务器的头部有信息
      Connection:keep-alive
      TCP连接在发送后将保持开放,因此浏览器可以继续通过同样的连接发送请求。 保持连接可以节省每次请求创建新的连接的时间,并节省网络带宽。

      客户端输入URL回车,DNS解析域名得到服务器的IP地址,服务器在80端口监听客户端请求,端口通过TCP/IP协议(可以通过Socket实现)建立连接,HTTP属于TCP/IP模型中的应用层协议。

      在这里插入图片描述
      消息由应用程序层发送到传输层,传输层通过TCP握手三次与服务器建立连接,并通过挥手四次释放连接。

      HTTPS通信过程

      上面指出了明文传输的问题和解决方法,并解释了对称加密、非对称加密等概念。 让我们现在全面看一下SSL协议握手过程

      整体情况如下图:
      在这里插入图片描述

      1. Client Hello
        握手第一步是客户端向服务端发送 Client Hello 消息,这个消息里包含了一个客户端生成的随机数Random1、客户端支持的加密套件(Support Ciphers)和 SSL Version 等信息。

      2. Server Hello
        第二步是服务端向客户端发送 Server Hello 消息,这个消息会从 Client Hello 传过来的 Support Ciphers 里确定一份加密套件,该套件确定哪些算法被特别用于后续加密和总结生成,一个随机数随机2也生成。注意,到目前为止,客户和服务端都有两个随机数字(随机1 + 随机2),这两个随机数将用于后续的对称键的生成。

      3. Certificate
        这个步骤是服务器向客户端发送自己的证书,允许客户端验证其身份,然后客户端验证证书中的公共密钥。

      4. Certificate Verify
        客户端收到服务端传来的证书后,先从 CA 验证该证书的合法性,验证通过后取出证书中的服务端公钥,再生成一个随机数Random3,再用服务端公钥非对称加密Random3生成PreMaster Key。

      5. Client Key Exchange
        上面的客户端根据服务器发送的公共密钥生成PreMaster密钥,Client Key Exchange 就是将这个 key 传给服务端,然后,服务器使用自己的私人密钥去解码这个客户端生成的预マスター密钥到随机3。至此,客户端和服务端都拥有Random1+Random2+Random3,然后双方可以根据相同的算法生成一个秘密密钥,握手后, 应用层数据使用这个秘密密钥进行对称加密.为什么使用三个随机数字?这是因为SSL/TLS手握过程数据是书面传输的,同时,为了生成密钥的多个随机序列种子并不易于猛烈地切断。

      6. Encrypted Handshake Message(Client)
        这一步对应的是 Client Finish 消息,客户端将前面的握手消息生成摘要再用协商好的秘钥加密,这是客户端发出的第一条加密消息。服务端接收后会用秘钥解密,能解出来说明前面协商出来的秘钥是一致的。

      7. Change Cipher Spec(Server)
        这个步骤是服务器在重新发送后通知客户端的消息将被加密,也是事件消息。

      8. Encrypted Handshake Message(Server)
        这里,双方安全地谈判了相同的秘密密钥,所有应用程序层数据将用这个秘密密钥加密,然后通过TCP可靠地传输。

      5.参考链接:

      https://zhuanlan.zhihu.com/p/56663184

      https://www.cnblogs.com/ghl1024/p/12080532.html

      原文链接

      https://blog.csdn.net/weixin_46022050/article/details/108017957

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/31356.html

          热门文章

          文章分类