【JavaEE】HTTP 协议

文章目录

  • 一、HTTP 协议
    • 1、HTTP 是什么
    • 2、理解 "应用层协议"
    • 3、理解 HTTP 协议的工作过程
    • 4、HTTP 协议格式
    • 5、HTTP 请求 (Request)
      • 5.1 认识 URL
    • 6、
  • 二、HTTPS
    • 1、HTTPS是什么
    • 2、"加密" 是什么
    • 3、HTTPS 的工作过程
      • 3.1 对称加密
      • 3.2 非对称加密
      • 3.3 证书
      • 3.4 完整过程
    • 4、总结
  • 三、Tomcat

一、HTTP 协议

1、HTTP 是什么

2、理解 “应用层协议”

3、理解 HTTP 协议的工作过程

4、HTTP 协议格式

5、HTTP 请求 (Request)

5.1 认识 URL

6、

二、HTTPS

1、HTTPS是什么

HTTPS也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层。
HTTP协议内容是按照文本的方式明文传输的,这就导致传输过程中出现一些被篡改的情况。

臭名昭著的 “运营商劫持”

下载一个 天天动听
未被劫持的效果, 点击下载按钮, 就会弹出天天动听的下载链接.

已被劫持的效果, 点击下载按钮, 就会弹出 QQ 浏览器的下载链接

例如:在浏览器上下载软件,相信很多同学都经历过在浏览器上面下载东西但是下载的却不是自己想要下载的,下载下来却变成了其他的软件,这就是传输内容被篡改了。

由于我们通过网络传输的任何数据包都会经过运营商的网络设备(路由器,交换机等),那么运营商的网络设备就可以解析我们的传输内容,并进行篡改。

点击下载天天动听,就是给服务器发送一个 HTTP 请求,获取到的HTTP响应包含了改APP的下载地址,运营商劫持后发现这个响应是下载天天动听,自动将返回给用户的响应篡改成QQ浏览器的下载地址。


不止运营商,黑客也可以用类似的手段来获取用户信息,或者篡改内容,如果用户的账户信息甚至支付密码,所以,在互联网上,明文传输是很危险的事情。

HTTPS 就是在HTTP的基础上进行了加密操作,来进一步保护用户的信息安全。

2、“加密” 是什么

加密 就是把明文(传输内容)进行一系列的变换,转换成密文,
解密 就是把密文进行一系列的变换,转换成明文。
在加密和解密的过程中,需要一个或多个中间数据,辅助进行这个过程,这样的数据被称为密钥(yue)。

加密解密到如今已经发展成一个独立的学科:密码学,而密码学的奠基人,也正是计算机科学的祖师爷之一,艾伦·麦席森·图灵。

3、HTTPS 的工作过程

既然要保证数据安全,那就要进行 “加密”,
网络传输中不再直接使用明文,而是使用加密之后的 “密文”,
加密的方式有很多,但总得来说分为两大类:对称加密非对称加密

3.1 对称加密

对称加密就是通过同一个 “密钥”,把明文加密成密文,也能把密文解密成明文。

一个简单的对称加密, 按位异或
假设 明文 a = 1234, 密钥 key = 8888
则加密 a ^ key 得到的密文 b 为 9834.
然后针对密文 9834 再次进行运算 b ^ key, 得到的就是原来的明文 1234.
(对于字符串的对称加密也是同理, 每一个字符都可以表示成一个数字)
当然, 按位异或只是最简单的对称加密. HTTPS 中并不是使用按位异或.


引入对称加密之后, 即使数据被截获, 由于黑客不知道密钥是啥, 因此就无法进行解密, 也就不知道请求的真实内容是啥了。

但是,服务器同一时间给很多客户端提供服务,每个人的密钥都是不相同(如果一样,那么密钥很容易扩散,黑客也能拿到),因此服务器需要维护每个客户端和每个密钥之间的关联关系,这是一个很庞大的工程。

比较理想的做法是,在客户端和服务器建立连接的时候,双方协商好这次的密钥。

但是如果密钥也进行明文传输的话,那么黑客也能获取密钥并对传输内容进行解密,所以密钥的传输也需要进行加密。想要对密钥进行加密,双方仍旧需要约定一个密钥,但是这就形成了套娃过程,传输内容需要加密,密钥需要加密,密钥的密钥又需要加密…此时密钥的传输用对称加密就行不通了~

此时需要引入非对称加密。

3.2 非对称加密

非对称加密需要两个密钥:“公钥” 和 “私钥”
公钥和私钥是配对的,最大的缺点是:运算速度非常慢,比对称加密慢得多

加密方式1:

  • 通过公钥对明文进行加密,变成密文
  • 通过私钥对明文进行解密,变成明文

加密方式2:

  • 通过私钥对明文进行加密,变成密文
  • 通过公钥对明文进行解密,变成明文

公钥谁都可以持有,不怕泄密,但是私钥只有服务器可以有,只有持有私钥的人才可以解密。

  1. 客户端生产对称密钥,通过公钥进行加密传输,发送给服务器
  2. 由于中间设备没有私钥,即使截获到加密的对称密钥也不知道里面的对称密钥是什么
  3. 服务器通过私钥对加密的对称密钥进行解密,获取到对称密钥,并且使用这个对称密钥加密给客户端返回响应数据。此时知道对称密钥的只有客户端和服务器两个设备,中间设备不知道对称密钥。
  4. 后续客户端和服务器的通信就只用对称密钥就好了,由于改对称密钥只有客户端和服务器两个设备知道,其他设备不知道密钥即使截获也不知道加密内容是什么。

由于对称加密的速度比非对称加密的速度快得多,所以一般只在开始阶段协商密钥的加密使用非对称加密,后续传输都使用对称加密。

那么接下来问题又来了:
1、客户端如何获取到公钥?
2、客户端如何确定这个公钥不是黑客伪造的?

3.3 证书

在客户端-服务器刚建立连接的时候,服务器就给客户端返回一个证书
证书里面包含公钥,也包含了网站的身份信息。

3.4 完整过程

左侧为客户端做的事情,右侧是服务器做的事情。

4、总结

HTTPS 工作过程中涉及三组密钥:

三、Tomcat

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

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

相关文章

VBA_NZ系列工具NZ06:VBA创建PDF文件说明

我的教程一共九套及VBA汉英手册一部,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到数据库,到字典,到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑,这么多知识点该如何组织…

Llama 3 超级课堂 -笔记

课程文档: https://github.com/SmartFlowAI/Llama3-Tutorial 课程视频:https://space.bilibili.com/3546636263360696/channel/series 1 环境配置 1.1 创建虚拟环境,名为:llama3 conda create -n llama3 python3.10 1.2 下载、安装 pyt…

论文解读:Self-Prompt Mechanism for Few-Shot Image Recognition

文章汇总 存在的问题 由于提示文本和图像特征之间固有的模态差异,常规的提示方法的性能受到限制。 动机 让视觉信息自己给自己提示 解决办法 SPM涉及到图像编码器跨空间和通道维度产生的固有语义特征的系统选择,从而产生自提示信息。随后&#xff…

nginx反向代理使用(详细版)

1. 下载nginx,解压;(随便放在哪里) 2. 在nginx-1.26.0文件夹下创建web文件夹,继续在web文件夹下创建abcd.test.cn文件夹(文件夹的名字就叫abcd.test.cn); 3. 配置前端代理&#xff…

人工智能应用正在改变我们的生活

在这个AI蓬勃发展的时代,你如何使用人工智能?如果您认为还没有,请再想一想。人工智能已经为我们的许多日常活动提供了动力,尽管您可能还没有有意将其用作工具,但这种情况可能会在不久的将来发生变化。随着顶尖科技公司…

二叉树的前序遍历(leetcode)

144. 二叉树的前序遍历 - 力扣(LeetCode) 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 这道题的启发性真的很强 ,这里必须传入i的指针进去,下一次栈帧i,但回到了上一层i又变回到了原来的i&#…

霍廷格电源 Tru plasma DC3030 通快DC3040 MF3030

霍廷格电源 Tru plasma DC3030 通快DC3040 MF3030

(十)Python基础练习题一(50道选择题)#Python

本文整理了Python基础知识相关的练习题,共50道,适用于刚入门初级Python想巩固基础的同学。来源:如荷学数据科学题库(技术专项-Python一)。 1) 2) 3) 4) 5) 6…

LeetCode题练习与总结:不同的二叉搜索树--96

一、题目描述 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出:5示例 2: 输入:n 1 输出&…

【平衡二叉树】AVL树(双旋)

🎉博主首页: 有趣的中国人 🎉专栏首页: C进阶 🎉其它专栏: C初阶 | Linux | 初阶数据结构 小伙伴们大家好,本片文章将会讲解AVL树的左双选和右双旋的相关内容。 如果看到最后您觉得这篇文章写…

k8s 理论知识基本介绍

目录 一 k8s 理论前言 (一)微服务是什么 1,应用场景 2,API 是什么 (二),微服务 如何做版本迭代 1. Docker镜像构建 2. 版本标记 3. Docker Registry 4. 环境一致性 5. 滚动更新…

C#中json数据序列化和反序列化的最简单方法(C#对象和字符串的相互转换)

文章目录 将C#对象转换为json字符串Newtonsoft模块的安装用Newtonsoft将对象转换为json字符串 将json字符串转换为C#对象 将C#对象转换为json字符串 本介绍将基于C#中的第三方库Newtonsoft进行,因此将分为Newtonsoft模块的安装和使用两部分。该模块的优势在于只需要…

等保2.0的全面解读与实施策略

《网络安全等级保护基本要求》(等保2.0)是中华人民共和国国家安全部于2019年6月发布的网络安全等级保护标准。该标准规定了我国关键信息基础设施的网络安全等级保护要求和评估标准,对于保障我国网络安全具有重要的意义。下面是对等保2.0的全面…

安全风险 - 如何解决 setAccessible(true) 带来的安全风险?

可能每款成熟的金融app上架前都会经过层层安全检测才能执行上架,所以我隔三差五就能看到安全检测报告中提到的问题,根据问题的不同级别,处理的优先级也有所不同,此次讲的主要是一个 “轻度问题” ,个人认为属于那种可改…

利用一段代码轻松绕过PHP授权系统

利用一段代码轻松绕过PHP授权系统 第一步:首先你需要改名全局文件 比如说全局文件 common.php,那么 你将他改为core.php 第二步:创建文件 创建一个文件,和改名前的全局文件名称一样,然后把以下代码复制进去就OK了 …

SpringBoot解决CORS跨域——WebMvcConfigurationSupport

前端请求后端报错了。 状态码:403 返回错误:Invalid coRs request 增加配置类WebMvcConfig Configuration public class WebMvcConfig extends WebMvcConfigurationSupport {Overridepublic void addCorsMappings(CorsRegistry registry) {// 允许跨域…

【java】异常与错误

Throwable包括Error和Expected。 Error Error错误是程序无法处理的,由JVM产生并抛出的。 举例:StackOverflowError \ ThreadDeath Expected Expected异常包括两类,即受检异常(非运行时异常)和非受检异常(运行时异常),异常往往…

6. RedHat认证-基于公钥的认证方式

6. RedHat认证-基于公钥的认证方式 主要学习客户端访问服务端的时候,免密登录这一方式 注意: 免密登录只是基于公钥认证的一个附带属性(基于公钥认证的方式更加安全,防止黑客暴力破解) 第一步:将客户端生成的秘钥传送到服务器 在客户端通过…

MIT 6.5840(6.824) Lab1:MapReduce 设计实现

1 介绍 本次实验是实现一个简易版本的MapReduce,你需要实现一个工作程序(worker process)和一个调度程序(coordinator process)。工作程序用来调用Map和Reduce函数,并处理文件的读取和写入。调度程序用来协…

编译适配纯鸿蒙系统的ijkplayer中的ffmpeg库

目前bilibili官方的ijkplayer播放器,是只适配Android和IOS系统的。而华为接下来即将发布纯harmony系统,是否有基于harmony系统的ijkplayer可以使用呢? 鸿蒙版ijkplayer播放器是哪个,如何使用,这个问题,大家…