HTTP与HTTPS简介(通俗易懂)

HTTP与HTTPS简介(通俗易懂)

什么是HTTP?

HTTP:超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(通常运行在TCP之上),用于从www服务器传输超文本到本地浏览器的传输协议,而设计他的初衷就是为了提供一种发布和接收HTML页面的方法。

什么是HTTPS?

HTTPS:是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性,说白了就是HTTP的安全版,HTTPS是在HTTP的基础下加入SSL层,是HTTPS的安全基础,因此加密的详细内容就需要 SSL。

两者的区别

HTTP HTTPS
是超文本传输协议,信息是明文传输,不具有安全性 由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,实现互联网传输安全保护,具有数据保密性数据完整性身份校验安全性,说白了就是比HTTP协议更安全
端口:80 端口:443
相同网络环境下:页面的加载较快 相同网络环境下:HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。会影响缓存,增加数据开销和功耗

原理

HTTP:客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过TCP 来完成的。 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和许可内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容 。

HTTPS 客户端产生密钥发送给服务器。 服务器将加密算法和一份包含服务器公用密钥的证书发送给客户端,同时还提供了一个用作产生密钥的随机数。 客户端对服务器的证书进行验证,并抽取服务器的公用密钥,使用服务器的公用密钥对其进行加密,并将加密后的信息发送给服务器。 服务器通过自己的私钥解密出会话密钥。 服务器通过会话密钥加密与客户端之间的通信。

HTTPS的优缺点

优点:

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

缺点:

1. HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用。
2. SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。
3. SSL 证书需要钱,功能越强大的证书费用越高。
4. SSL 证书需要绑定IP,不能在同一个ip上绑定多个域名。

TCP三次握手和四次挥手(简单理解)

三次握手
第一次:客户端发送请求到服务器,服务器接收到请求,并同意连接。
第二次:服务器同意连接后,发给客户端同意连接请求,客户端接收请求。
第三次:客户端接收请求后,发出确认连接请求,连接建立。

四次挥手
第一次:客户端请求断开
第二次:服务器确认客户端的断开请求
第三次:服务器请求断开
第四次:客户端确认服务器的断开

扩展:

为什么不能用两次握手进行连接?
解:3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),如果把三次握手改成仅需要两次握手,是可能发生死锁的。例如,a和b之间的通信,假定b给a发送一个连接请求,a收到了这个请求,并发送了确认请求。按照两次握手的协定,a就会认为连接已经建立了,可以开始发送数据。但是,b给a的请求在传输中被丢失的情况下,将不知道a是否收到自己的连接请求。在这种情况下,b认为连接还未建立成功,将忽略a发来的任何数据,只等待连接确认请求。而a在发出的请求超时后,重复发送同样的请求。这样就形成了死锁。

为什么连接的时候是三次握手,关闭的时候却是四次握手?
解:因为当服务端收到客户端的连接请求后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”。只有等到我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

猜你喜欢

转载自blog.csdn.net/weixin_43886137/article/details/106215847