Http 和 Https 的联系和区别

前言

HTTP 和 HTTPS 的区别在面试中太常见了,但是却很容易忽略,在此记录一下。

参考文章

  1. 十分钟搞懂HTTP和HTTPS协议?
  2. HTTP 和 HTTPS 的区别(面试常考题)

一、HTTP 和 HTTPS 的基本概念

1.1 HTTP

  • 概念
    HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
    设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。它可以使浏览器更加高效。
    HTTP 协议是以明文方式发送信息的,如果黑客截取了 Web 浏览器和服务器之间的传输报文,就可以直接获得其中的信息。
  • 原理
    HTTP是一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML 文件,、图片文件, 查询结果等。
    HTTP协议一般用于B/S架构。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

以访问百度为例:

在这里插入图片描述

  • HTTP特点
    • http协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
    • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
    • 灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
    • 无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。
    • 无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。

1.2 HTTPS

  • 概念
    HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer)是以安全为目标的 HTTP 通道,是 HTTP 的安全版。
    HTTPS 的安全基础是 SSL。SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
    SSL 协议可分为两层:
    1. SSL 记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
    2. SSL 握手协议(SSL Handshake Protocol),它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
  • 设计目标
    • 数据保密性:保证数据内容在传输的过程中不会被第三方查看
    • 数据完整性:及时发现被第三方篡改的传输内容
    • 身份校验安全性:保证数据到达用户期望的目的地。
  • HTTPS 缺点
    • HTTPS协议多次握手,导致页面的加载时间延长近50%;
    • HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗;
    • 申请SSL证书需要钱,功能越强大的证书费用越高。
    • SSL涉及到的安全算法会消耗 CPU 资源,对服务器资源消耗较大。
  • HTTPS 的优点
    • 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。
    • HTTPS 协议是由SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP协议安全,可防止数据在传输过程中不被窃取、修改,确保数据的完整性。
    • HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本
  • HTTPS 数据流传输

在这里插入图片描述

- 首先客户端通过URL访问服务器建立SSL连接。 服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端。
- 客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
-  客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用
- 站的公钥将会话密钥加密,并传送给网站。 
- 服务器利用自己的私钥解密出会话密钥。
- 服务器利用会话密钥加密与客户端之间的通信。

二、HTTP 与 HTTPS 的区别

1、HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)

2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。

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

4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。

三 、进一步补充

如果需要将网站从http切换到https到底该如何实现呢?
这里需要将页面中所有的链接,例如js,css,图片等等链接都由http改为https。例如:http://www.baidu.com改为https://www.baidu.com
这里虽然将http切换为了https,还是建议保留http。所以我们在切换的时候可以做http和https的兼容,具体实现方式是,去掉页面链接中的http头部,这样可以自动匹配http头和https头。
例如:将http://www.baidu.com改为//www.baidu.com。然后当用户从http的入口进入访问页面时,页面就是http,如果用户是从https的入口进入访问页面,页面即使https的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nsq_ai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值