HTTP和HTTPS的区别及通信原理

news2024/11/28 4:16:30

文章目录

  • 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.coloradmin.cn/o/909722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 数据备份和数据恢复

目录 一、数据备份 1、概述 2、MySQLdump命令备份 1)备份单个数据库中的所有表 2) 备份数据中某个或多个表 3) 备份所有数据库 4)备份多个库 5) 只备份一个表或多个表结构 二、数据恢复 三、数据备份与恢复应用 一、数据备份 1、概述 数据备…

面试之HTTP

1.HTTP与HTTPS的区别 HTTP运行在TCP之上;HTTPS是运行在SSL之上,SSL运行在TCP之上两者使用的端口不同:HTTP使用的是80端口,HTTPS使用的是443端口安全性不同:HTTP没有加密,安全性较差;HTTPS有加密…

2023国赛数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

【CSS Grid网格布局】常用属性,示例代码解读

Grid布局是一种二维布局系统,可以将页面划分为行和列,并将元素放置在这些行和列的交叉点上。以下是Grid布局的一些常用属性: grid-template-columns/grid-template-rows:用于定义网格的列和行的大小和数量。可以指定具体的尺寸值…

【ARM】Day6 cotex-A7核UART总线实验

cotex-A7核UART总线实验 1. 键盘输入一个字符‘a’,串口工具显示‘b’ 2. 键盘输入一个字符串"nihao",串口工具显示“nihao” uart.h #ifndef __UART4_H__ #define __UART4_H__#include "stm32mp1xx_rcc.h" #include "stm3…

安卓系列机型-禁止安装某软件 防止“沉迷游戏的小孩”操作解析

如何禁止安装某软件。这里以好课帮app为例做个演示步骤说明。这个博文的目的在于可以阻止他人用手机安装你指定的一些软件。 💔💔💔首先手机上安装好课帮这个软件。打开应用详情找到包名。或者使用第三方工具打开获取这个软件的包名。记住是…

Unity 物体固定屏幕尺寸(透视模式)

物体固定屏幕尺寸 🥪效果图🍱食用方法 🥪效果图 如图所示物体远离摄像机后会被放大,靠近相机会被缩小,使得在屏幕上的大小保持不变; 🍱食用方法 导入插件后使用gameObject.SetFixedScreenSi…

c#中lambda表达式缩写推演

Del<string> ml new Del<string>(Notify);//泛型委托的实例化&#xff0c;并关联Nofity方法 Del<string> ml new Del<string>(delegate (string str) { return str.Length; });//将Nofity变更为匿名函数 Del<string> ml delegate(string str)…

15.树与二叉树基础

目录 一. 树&#xff0c;基本术语 二. 二叉树 &#xff08;1&#xff09;二叉树 &#xff08;2&#xff09;满二叉树 &#xff08;3&#xff09;完全二叉树 三. 二叉树的性质 四. 二叉树的存储结构 &#xff08;1&#xff09;顺序存储结构 &#xff08;2&#xff09;链…

港联证券|燃气板块午后走高,美能能源涨停,水发燃气大幅拉升

燃气板块21日午后快速拉升&#xff0c;到发稿&#xff0c;美能动力涨停&#xff0c;水发燃气涨超7%&#xff0c;蓝天燃气涨超5%&#xff0c;贵州燃气涨逾4%。 消息面上&#xff0c;受澳大利亚LNG工厂罢工忧虑影响&#xff0c;欧洲基准天然气价格一度大涨18%。 有报导称&#x…

音视频技术开发周刊 | 307

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 “视象新生”火山引擎视频云&AIGC技术大会邀你踏入新“视界” 8月22日&#xff0c;火山引擎视频云&AIGC技术大会即将开启&#xff01;本次大会以“视象新生”为主…

lvs-dr模式+keepalived

一&#xff0c;keepalived概述 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案&#xff0c;可以解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器&#xff08;MASTER&#xff09;和备份服务器&#xff08;BACKUP&#xff09;两种角色的服务器&am…

如何创建和销售在线健身业务

快速轻松地创建您自己的线上健身网站&#xff01; 越来越多的人在家健身&#xff0c;在线健身业务也随之快速增长。 虽然这个生意很红火&#xff0c;但是真的像看起来那么容易上手吗&#xff1f; 有了MemberPress&#xff0c;确实如此&#xff01; 在这篇文章中&#xff0c…

【李宏毅机器学习】注意力机制

输出 我们会遇到不同的任务&#xff0c;针对输出的不一样&#xff0c;我们对任务进行划分 给多少输出多少 给一堆向量&#xff0c;输出一个label&#xff0c;比如说情感分析 还有一种任务是由机器决定的要输出多少个label&#xff0c;seq2seq的任务就是这种&#xff0c;翻译也…

Vue.js知识点学习的一点笔记

一、虚拟DOM 1、原生JS是命令式编程&#xff0c;当渲染在页面的数据发生一点点变化&#xff0c;需要整个重新渲染一编。vue.js渐进式框架有个虚拟DOM的概念&#xff0c;运用diff算法&#xff0c;比较新旧数据&#xff0c;相同的数据不变不重渲染&#xff0c;不同的部分新数据…

CAD VCL Multiplatform Crack

CAD VCL Multiplatform Crack CAD VCL多平台是在Delphi和CBuilder中开发应用程序的一个组件。它允许创建、可视化、导入、导出、转换和打印图形。开发人员可以访问实体的属性。CAD VCL多平台支持大量矢量和3D格式&#xff0c;包括AutoCAD DWG/DXF、HPGL、STEP、IGES、STL、SVG、…

Excel带数值的计算公式

问题描述 如图&#xff0c;想实现在第三列单元格中实现带数值的计算表达式 解决方法 单元格 & "/" & 单元格 & "" & TEXT(单元格/单元格, "0.00%")& 为简单的 与 符号 最后设定单元格数值与格式&#xff08;保留两位小数…

[Mac软件]AutoCAD 2024 for Mac(cad2024) v2024.3.61.182中文版支持M1/M2/intel

下载地址&#xff1a;前往黑果魏叔官网 AutoCAD是一款计算机辅助设计&#xff08;CAD&#xff09;软件&#xff0c;目前已经成为全球最受欢迎的CAD软件之一。它可以在二维和三维空间中创建精确的技术绘图&#xff0c;并且可以应用于各种行业&#xff0c;如建筑、土木工程、机械…

天锐绿盾安全U盘系统

安全U盘系统 01 简介 天锐绿盾安全U盘系统&#xff0c;是一款致力于保障U盘数据内容安全的产品。通过严格身份认证、便捷安全的密保机制、智能的U盘锁定或自毁设置、详细的文件操作日志、文件粉碎、设置还原等&#xff0c;天锐绿盾安全U盘系统为您U盘的数据保驾护航&#xff0…

2023年京东儿童智能手表行业数据分析(京东销售数据分析)

儿童消费市场向来火爆&#xff0c;儿童智能手表作为能够实现定位导航&#xff0c;信息通讯&#xff0c;SOS求救&#xff0c;远程监听&#xff0c;智能防丢等多功能的智能可穿戴设备&#xff0c;能够通过较为精准的定位功能和安全防护能力保障儿童的安全&#xff0c;因而广受消费…