HTTP和HTTPS的区别及通信原理

文章目录

  • HTTP
    • 特性
      • http解决无状态的问题
        • 🍪cookie
        • session
        • token
    • 常见状态码
    • 报文和字段
    • 方法
  • HTTPS
    • 补充知识
      • 常见的加密方式
      • 数字摘要 (数字指纹) && 数字签名
    • 加密过程

HTTP

何为http?

http是超文本传输协议,HyperText Transfer Protocol

HyperText:超文本,意思是不仅限于文本。泛指图片、视频、音频等等。
Transfer:传输方法,指数据传输方法。也就是超文本的传输方法。
Protocol:协议,指双方遵守的规则。按照一定的规则来执行。

以上加起来就是,超文本按照某种特定的规则来进行信息传输交换。

举一个生动形象的🌰:人们的交流。我们通过语言来进行对话交流,那么语种就是协议,话就是超文本,声音传播就是传输方法,如果会的语种不同,那么就无法进行交流,就比如各个地区的方言,又或者不同国家的语言。

通俗来讲,http协议就是“计算机们”在网络上进行信息交流时要遵守的“游戏规则”,如果不遵守就无法进行通信游戏。

特性

HTTP是【无连接的,无状态的,明文传输的】,且具有跨平台的优点

无连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。 采用这种方式可以节省传输时间。这样做的好处就是尽快将资源释放出来服务其他客户端

无状态:协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态,HTTP不会记录用户输入的任何操作

明文传输:http协议不会对信息做任何加密或映射的操作。


那么可能就会有一个疑惑,为什么平时的登入信息只需要一次登录,即可下次无需重新输入信息来登入?

这里就引出了cookie技术🍪

http解决无状态的问题

🍪cookie

在第一次登入某个网站时,客户端通过post方法发送请求给服务端,服务端会提取http请求中body内的用户信息并保存在cookie里,然后在发送回客户端,客户端就将cookie保存在本地里,下次发送请求登入时浏览器会自带cookie,这样用户就不用多次输入账户信息了

图片转载自: 小林coding

前文有提及到,http是明文传输的,用户信息保存在cookie里,在网络传输中,那岂不是“信息裸奔”,他人很轻易就可以知道我们的所有信息了。考虑到这点就引入了session技术。

session

何为session?
session是依赖于cookie的,对cookie进行一种优化升级。

还是第一次通信,客户端发送请求给服务端,服务端中请求主体中提前用户信息,并形成唯一的sessionID(还有其他内容)保存起来,返回客户端的cookies中会携带sessionID,而不是裸露的用户信息数据,下次访问时,只需要校验sessionID即可验证身份。
在这里插入图片描述

session确保了他人获取不到我们真实的用户信息,但是仍有缺点,随着用户数量的增多,一台服务器上的sessionID数量也会随之增多,并且不同服务器不共享sessionID,这样其他服务器也就会保存sessionID,这样同一份sessionID在不同的服务器中都保存了一份,显然,服务器的资源得不到充分利用,为了解决种种问题,新的技术孕育而生——JWT(Json Web Token)

token

和session的通信过程类似,只不过服务器上不存储sessionID了,而是通过JWT技术生成JWT,并保留签名密文,将JWT存储在cookie或者storage中返回给客户端,客户端下次请求将JWT带上即可。
在这里插入图片描述
图片来源:B站技术蛋
JWT结构图
在这里插入图片描述

以上方法其实都还会存在安全问题,就是他人可以冒名顶替我,因为浏览器是只认sessionID/JWT的,只要sessionID/JWT符合,那就认为是曾经的用户,殊不知已经狸猫换太子了。关于安全问题,一会会在https里讲解。

常见状态码

https://xiaolincoding.com/network/2_http/http_interview.html#http-%E5%B8%B8%E8%A7%81%E7%9A%84%E7%8A%B6%E6%80%81%E7%A0%81%E6%9C%89%E5%93%AA%E4%BA%9B
常见状态码

状态码含义
200 OK成功状态码,表示一切正常
301 Moved Permanently永久重定向
302 Found临时重定向
403 Forbidden服务器禁止访问资源,并不是客户端的请求出错
404 Not Found请求的资源在服务器上不存在或未找到
500 Internal Server Error服务器发生了什么错误,我们并不知道
502 Bad Gateway表示服务器自身工作正常,访问后端服务器发生了错误

报文和字段

来自于B站的http报文
在这里插入图片描述

Content-Type: 数据类型(text/html等)
Content-Length: Body的长度
Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上
User-Agent: 声明用户的操作系统和浏览器版本信息
referer: 当前页面是从哪个页面跳转过来的
location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问
Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能

方法

在这里插入图片描述

HTTPS

https常用端口443,http常用端口80

补充知识

HTTPS = HTTP + SSL/TLS
在这里插入图片描述

  • 为什么要加密?

HTTP 由于是明文传输,所谓的明文,就是说客户端与服务端通信的信息都是肉眼可见的,随意使用一个抓包工具都可以截获通信的内容。
所以安全上存在以下三个风险:

  1. 窃听风险,比如通信链路上可以获取通信内容,用户号容易没。
  2. 篡改风险,比如强制植入垃圾广告,视觉污染,用户眼容易瞎。
  3. 冒充风险,比如冒充淘宝网站,用户钱容易没。

常见的加密方式

对称加密

  • 采⽤单钥密码系统的加密⽅法,同⼀个密钥可以同时⽤作信息的加密和解密,这种加密⽅法称为对称加密,也称为单密钥加密,特征:加密和解密所⽤的密钥是相同的
  • 常⻅对称加密算法:DES、3DES、AES、TDEA、Blowfish、RC2等
  • 特点:算法公开、计算量小、加密速度快、加密效率高

对称加密其实就是通过同⼀个“密钥”,把明⽂加密成密⽂,并且也能把密⽂解密成明⽂

非对称加密

数字摘要 (数字指纹) && 数字签名

  • 数字摘要(数字指纹):利⽤单向散列函数(Hash函数)对信息进⾏运算,⽣成⼀串固定⻓度的数字摘要。数字指纹并不是⼀种加密机制,但可以⽤来判断数据有没有被窜改。
  • 数字签名:数据签名是数字摘要经过加密得到的

加密过程

前文说道,http是明文传输的,具有安全隐患,而为了解决这个安全隐患,http在传输的过程中可能运用了各种加密方法。

下面打算从加密方法的采用一步一步

  • 对称
    在这里插入图片描述
    采用对称加密显然不安全,因为是公钥,大家都知道,所有信息在传递过程中第三者也可以对数据进行解密
  • 非对称
    在这里插入图片描述

非对称加密显然比对称加密更加安全些,但是仍有缺点,一是效率低下,二是还有安全问题

  • 对称+非对称
    在这里插入图片描述
    这种加密方式也能达到相对安全,且相对于非对称加密提升了不少效率(因为只在第一次获得秘钥X采用了非对称加密),但是依旧存在安全问题

刚刚上述加密均存在安全问题,这个安全问题就是中间人攻击
在这里插入图片描述
狸猫换太子,得到秘钥X。有人会觉得奇怪,那为什么客户端、服务端不知道被换了,这个不奇怪,因为信息通信时无法确认身份

所以引进了数字证书,用来确认身份的。

  • 对称加密+非对称+数字证书
    在这里插入图片描述
    这里补充一些,数字证书里面是包含服务端的公钥S的,此外里面还有浏览器的域名,ip地址,且数字证书自己有公钥和私钥。浏览器里一般也会保存数字证书的公钥。
    详细了解去这: 彻底搞懂HTTPS的加密原理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/99927.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux的http服务

Web通信基本概念 基于B/S(Browser/Server)架构的网页服务 服务端提供网页 浏览器下载并显示网页 Hyper Text Markup Lanuage,超文本标记语言 Hyper Text Transfer Protocol,超文本传输协议 虚拟机A:构建基本的Web服务 [root…

Anaconda, Python, Jupyter和PyCharm介绍

目录 1 Anaconda, Python, Jupyter和PyCharm介绍 2 macOS通过Anaconda安装Python, Jupyter和PyCharm 3 使用终端创建虚拟环境并安装PyTorch 4 安装PyCharm并导入Anaconda虚拟环境 5 Windows操作系统下Anaconda与PyCharm安装 6 通过 Anaconda Navigator 创建 TensorFlow 虚…

Kafka 学习笔记

😀😀😀创作不易,各位看官点赞收藏. 文章目录 Kafka 学习笔记1、消息队列 MQ2、Kafka 下载安装2.1、Zookeeper 方式启动2.2、KRaft 协议启动2.3、Kafka 集群搭建 3、Kafka 之生产者3.1、Java 生产者 API3.2、Kafka 生产者生产分区3…

【jsthreeJS】入门three,并实现3D汽车展示厅,附带全码

首先放个最终效果图: 三维(3D)概念: 三维(3D)是一个描述物体在三个空间坐标轴上的位置和形态的概念。相比于二维(2D)只有长度和宽度的平面,三维增加了高度或深度这一维度…

软件开发中常用数据结构介绍:C语言队列

工作之余来写写C语言相关知识,以免忘记。今天就来聊聊C语言实现循环队列,我是分享人M哥,目前从事车载控制器的软件开发及测试工作。 学习过程中如有任何疑问,可底下评论! 如果觉得文章内容在工作学习中有帮助到你&…

【Alibaba中间件技术系列】「RocketMQ技术专题」小白专区之领略一下RocketMQ基础之最!

应一些小伙伴们的私信,希望可以介绍一下RocketMQ的基础,那么我们现在就从0开始,进入RocketMQ的基础学习及概念介绍,为学习和使用RocketMQ打好基础! RocketMQ是一款快速地、可靠地、分布式、容易使用的消息中间件&#…

【Linux】cpolar+JuiceSSH实现手机端远程连接Linux服务器

文章目录 1. Linux安装cpolar2. 创建公网SSH连接地址3. JuiceSSH公网远程连接4. 固定连接SSH公网地址5. SSH固定地址连接测试 处于内网的虚拟机如何被外网访问呢?如何手机就能访问虚拟机呢? cpolarJuiceSSH 实现手机端远程连接Linux虚拟机(内网穿透,手机端连接Linux虚拟机) …

Github的使用指南

首次创建仓库 1.官网创建仓库 打开giuhub官网,右上角点击你的头像,随后点击your repositories 点击New开始创建仓库 如下图为创建仓库的选项解释 出现如下界面就可以进行后续的git指令操作了 2.git上传项目 进入需上传项目的所在目录,打开…

WPS中的表格错乱少行

用Office word编辑的文档里面包含表格是正常的,但用WPS打开里面的表格就是错乱的,比如表格位置不对,或者是表格的前几行无法显示、丢失了。 有一种可能的原因是: 表格属性里面的文字环绕选成了“环绕”而非“无”,改…

css的常见伪元素使用

1.first-line 元素首行设置特殊样式。 效果演示&#xff1a; <div class"top"><p>可以使用 "first-line" 伪元素向文本的首行设置特殊样式。<br> 换行内容 </p></div> .top p::first-line {color: red;} 2.first-lette…

ORCA优化器浅析——DXLToPlStmt[CTranslatorDXLToPlStmt]

如上图所示是将plan_dxl转为plan_stmt的主入口函数。其主要工作就是创建plan_id_generator、motion_id_generator、param_id_generator和table_list、subplans_list&#xff0c;并将其设置到CContextDXLToPlStmt dxl_to_plan_stmt_ctxt中供后续流程调用&#xff1b;初始化CTran…

【3Ds Max】可编辑多边形“边界”层级的简单使用

目录 示例 &#xff08;1&#xff09;挤出 &#xff08;2&#xff09;插入顶点 &#xff08;3&#xff09;切角 &#xff08;4&#xff09;利用所选内容创建图形 &#xff08;5&#xff09;封口 &#xff08;6&#xff09;桥 示例 这里我们首先创建一个长方体&#xff…

开源在线图片设计器,支持PSD解析、AI抠图等,基于Puppeteer生成图片

Github 开源地址: palxiao/poster-design 项目速览 git clone https://github.com/palxiao/poster-design.git cd poster-design npm run prepared # 快捷安装依赖指令 npm run serve # 本地运行将同时运行前端界面与图片生成服务(3000与7001端口)&#xff0c;合成图片时…

财务数据分析用什么软件好?奥威BI自带方案

做财务数据分析&#xff0c;光有软件还不够&#xff0c;还需要有标准化的智能财务数据分析方案。奥威BI数据可视化工具就是这样一款自带智能财务数据分析方案的软件。 ”BI方案“&#xff0c;一站式做财务数据分析 奥威BI数据可视化工具和智能财务分析方案结合&#xff0c;可…

Alibaba-Easyexcel 使用总结

简介 简介 EasyExcel 是一个基于 Java 的简单、省内存的读写 Excel 的开源项目&#xff0c;在尽可能节约内存的情况下支持读写百 M 的 Excel。 但注意&#xff0c;其不支持&#xff1a; 单个文件的并发写入、读取读取图片宏 常见问题 Excel 术语 Sheet&#xff0c;工作薄…

Pyqt5-开源工具分解功能(文本拖拽)

开源第四篇:功能实现之拖拽功能与配置文件。 写这个功能的初衷,是因为,每次调试我都要手动敲命令,太麻烦了,想偷个懒,所以直接给这功能加上了,顺便衍生出了另一个想法,配置文件自动填写相关数据。 先看个简单的拖拽功能: 很明显吧,还是比较便捷的。所以我们本章,就在…

基于PaddlePaddle实现的声纹识别系统

前言 本项目使用了EcapaTdnn、ResNetSE、ERes2Net、CAM等多种先进的声纹识别模型&#xff0c;不排除以后会支持更多模型&#xff0c;同时本项目也支持了MelSpectrogram、Spectrogram、MFCC、Fbank等多种数据预处理方法&#xff0c;使用了ArcFace Loss&#xff0c;ArcFace loss…

智能电视与win10电脑后续无法实现DLNA屏幕共享

问题背景&#xff1a; 我用的是TCL电视&#xff0c;但是并不是最新&#xff0c;打开的方式是U盘->电脑&#xff0c;各位看自己情况&#xff0c;很多问题都大概率是智能电视问题。 情景假设&#xff1a; 假设你已经完成原先智能电视该有的步骤&#xff0c;通过DLNA&#xf…

蓝牙运动耳机哪款好、运动耳机性价比推荐

近年来&#xff0c;运动蓝牙耳机备受欢迎&#xff0c;成为人们健身时的必备时尚单品。随着蓝牙耳机的不断发展&#xff0c;市场上可供选择的产品种类繁多&#xff0c;因此挑选一款适合自己的蓝牙耳机并不困难。然而&#xff0c;并非每款耳机都适合户外或者运动场景下的使用&…

Lua与C++交互(一)————堆栈

Lua与C交互&#xff08;一&#xff09;————堆栈 Lua虚拟机 什么是Lua虚拟机 Lua本身是用C语言实现的&#xff0c;它是跨平台语言&#xff0c;得益于它本身的Lua虚拟机。 虚拟机相对于物理机&#xff0c;借助于操作系统对物理机器&#xff08;CPU等硬件&#xff09;的一…