http与https的区别以及详细介绍

426 阅读11分钟

契子:

   在我们的日常生活中,网络几乎已经成为了我们每天的必需品,毕竟世界上最痛苦的事情就是,手机有电,但却没有网了,但是你知道网络的内涵吗?

  在以前还没有智能手机的时候,为了使不用的计算机厂家生产的计算机之间能够互相通信,以便在更大的范围建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,因为以前的的各个厂家推出的网络体系,都是专属的,由此可见,互联网的统一是必要的。

   国际标准化组织在1981推荐了一个网络系统结构---七层参考模型,即开放系统互连,这个标准模型的建立,使得各种计算机网络向它靠拢,大大推动了网络通信的发展。

   除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如上图所示

  如果大家对网络通信比较感兴趣可以查看该博客:计算机网络笔记

  我这里就不在这里赘述了。

http协议

别称 :超文本传输协议(Hyper Text Transfer Protocol)

http是一个简单的请求-响应协议,它通常运行在TCP之上。

发展阶段 :0.9 ->1.0 -> 1.1 -> 2.0

特点:

  • 简单快速
  • 灵活
  • 无连接 :限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 无状态 :无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

不足:

  • 通信使用明文,内容可能会被窃听;
  • 不验证通信方的身份,因此有可能遭遇伪装;
  • 无法证明报文的完整性,有可能已遭篡改;

组成

  1. 请求行
  2. 请求头
  3. 空行
  4. 消息主体

详细了解组成部分:HTTP协议结构

http请求和响应模型 (也支持B/S)

  1. 客户与服务器建立连接;
  2. 客户向服务器提出请求;
  3. 服务器接受请求,并根据请求返回相应的文件作为应答;
  4. 客户与服务器关闭连接。

http请求-响应模型(上图),同样也称之为一次会话(session)

三次握手和四次挥手原因和作用

  • 原因 :因为http请求是建立在tcp之上,而TCP在传输之前会进行三次沟通,一般称为“三次握手”,在传完数据断开的时候进行四次沟通,一般称为“四次挥手”

过程:http的三次握手和四次挥手:

浏览器在给服,务器传输数据之前,有三次握手,握手成功之后,才可以传输数据

1、浏览器需要先发送SYN码,客户端请求和服务器建立连接;

2、服务器接收到SYN码,再发送给客户端SYN+ACK码,我可以建立连接;

3、客户端接收到ACK码,验证这个ACK是否正确,如果正确则客户端和服务端则建立起数据连接;双方的数据发送通道都将开启;

四次挥手:

1、当客户端无数据要传输了,会发送FIN码告诉服务器,我发送完毕了;

2、当服务端接收完毕后,告诉客户端ACK码,告诉客户端你可以把数据通道关闭了;

3、当服务器发送完毕之后,也会发送FIN码,告诉浏览器,数据发送完毕;

4、当客户端接收完毕 之后,同样发送ACK码,告诉服务器,数据接收完毕,你可以关闭;

作用:

三次握手:用来保证双方有通信的基础。

四次挥手:用来保障双方可以安全的回收TCP通信的系统资源。

总的来说就是确保数据的安全和完整。

返回的状态码:

PS:这里只列举了一些常见的状态码,以及本人遇到的一些,更多的请自行了解。

100:这个状态码是告诉客户端应该继续发送请求。

200:表示服务器已经成功接受请求,并将返回客户端所请求的最终结果。

202:表示服务器已经接受了请求,但是没有处理,而且这个请求最终会不会处理还不确定。

204:服务器成功处理了请求,但没有返回任何实体内容。

301:客户端请求的网页已经永久移动到新的位置(连接发生了改变:重定向)。

404:请求失败,客户端请求的资源没有找到或者是不存在。

500:服务器遇到未知的错误,导致无法完成客户端当前的请求。

503:服务器由于临时的服务器过载或者是维护,无法解决当前的请求。

https协议

别称:超文本传输安全协议(Hypertext Transfer Protocol Secure)

是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。

为什么要用HTTPS?

为了解决http的不足,HTTP 不就是因为明文传输,所以造成了安全隐患。那让数据传输以加密的方式进行,不就消除了该隐患。

https是如何改进的?

HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书加密算法非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。设计目标主要有三个。

  1. 数据保密性:保证数据内容在传输的过程中不会被第三方查看。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么  
  2. 数据完整性:及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收 。
  3. 身份校验安全性:保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方  。 

https解决方案:

  1. 所有信息都是加密传播,第三方无法窃听。
  2. 具有校验机制,一旦被篡改,通信双方会立刻发现。
  3. 配备身份证书,防止身份被冒充。
  4. 实现

常见的加密算法:

  1. **对称加密:**即通信双方通过相同的密钥进行信息的加解密。加解密速度快,但是安全性较差,如果其中一方泄露了密钥,那加密过程就会被人破解,典型的有DES、RC5、IDEA(分组加密),RC4(序列加密);。

  2. **非对称加密:**相比对称加密,它一般有公钥和私钥。公钥负责信息加密,私钥负责信息解密。两把密钥分别由发送双发各自保管,加解密过程需两把密钥共同完成。安全性更高,但同时计算量也比对称加密要大很多,典型的算法有RSA,DSA,DH。

  3. **散列算法:**散列变换是指把文件内容通过某种公开的算法,变成固定长度的值(散列值),这个过程可以使用密钥也可以不使用。这种散列变换是不可逆的,也就是说不能从散列值变成原文。因此,散列变换通常用于验证原文是否被篡改。典型的算法有:MD5,SHA,CRC等。

  4. **CA证书:**CA(Certificate Authority)是数字证书认证中心的简称,是指发放、管理、废除数字证书的机构。CA的作用是检查证书持有者身份的合法性,并签发证书(在证书上签字),以防证书被伪造或篡改,以及对证书和密钥进行管理。

SSL/TLS概念:

SSL:安全套接字层

位于可靠的面bai向连接的网络层协du议和应用层协议之间的一种协议层。zhiSSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。

TLS:传输层安全协议

用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。

SSL/TLS协议的基本过程是这样的:

(1) 客户端向服务器端索要并验证公钥。
(2) 双方协商生成"对话密钥"。
(3) 双方采用"对话密钥"进行加密通信。
所以说SSL/TLS协议主要是包含非对称加密(公钥加密)和对称加密,用非对称加密来得到对称加密的"对话秘钥",然后用对称加密来进行加密通信。

进行身份验证:

所谓身份验证就是用公钥生成可信赖的证书。因为非对称加密存在一个问题就是没法验证拿到的公钥就是服务端公开的公钥。

总结

HTTPS和HTTP的区别主要为以下四点:

一、https协议需要到ca申请证书,一般免费证书很少,需要交费。

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

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

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

HTTPS 的优缺点:

优点:

  1. 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器 [2]
  2. HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP 协议安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性 [2]
  3. HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本 [2]

缺点:

  1. 耗时。相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗。
  2. 范围限制。HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用。
  3. 最关键的是,SSL 证书的体系并不安全。特别是在某些国家可以控制 CA根证书的情况下,中间人攻击一样可行。
  4. 成本增加。部署 HTTPS 后,因为 HTTPS 协议的工作要增加额外的计算资源消耗,例如 SSL 协议加密算法和 SSL 交互次数将占用一定的计算资源和服务器成本。在大规模用户访问应用的场景下,服务器需要频繁地做加密和解密操作,几乎每一个字节都需要做加解密,这就产生了服务器成本。随着云计算技术的发展,数据中心部署的服务器使用成本在规模增加后逐步下降,相对于用户访问的安全提升,其投入成本已经下降到可接受程度。

本博客到此,告一段落,如何有哪些写的不对,或者需要补充的,希望各位大神进行指点和补充。

参考博客 :简书-https