【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.mzph.cn/diannao/12240.shtml

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

相关文章

零样本身份保持:ID-Animator引领个性化视频生成技术新前沿

在最新的研究进展中,由Xuanhua He及其团队提出的ID-Animator技术,为个性化视频生成领域带来了突破性的创新。这项技术的核心在于其零样本(zero-shot)人物视频生成方法,它允许研究者和开发者根据单一的参考面部图像生成…

深度解刨性能测试工具Locust

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 Locust安装 …

gin框架学习笔记(三) ——路由请求与相关参数

参数种类与参数处理 查询参数 在讲解查询参数的定义之前,我们先来看一个例子,当我打开了CSDN,我现在想查看我的博客浏览量,那么我就需要点击我的头像来打开我的个人主页,像下面这样: 我们现在把浏览器的网址取下来,…

【35分钟掌握金融风控策略27】贷中风控策略与客户运营体系

目录 贷中风控策略与客户运营体系 贷中风控日标 贷中风控数据源 贷中风控策略与客户运营体系 贷中是风控的第二道防线,贷中阶段风控的重点工作就是存量客户风控及运营。在当下,新客市场趋于饱和且获客成本越来越高,所以,在做好…

基于Java的俄罗斯方块游戏的设计与实现

关于俄罗斯方块项目源码.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89300281 基于Java的俄罗斯方块游戏的设计与实现 摘 要 俄罗斯方块是一款风靡全球,从一开始到现在都一直经久不衰的电脑、手机、掌上游戏机产品,是一款游戏规则简单…

在React中利用Postman测试代码获取数据

文章目录 概要名词解释1、Postman2、axios 使用Postman测试API在React中获取并展示数据小结 概要 在Web开发中,通过API获取数据是一项常见任务。Postman是一个功能强大的工具,可以帮助开发者测试API,并查看API的响应数据。在本篇博客中&…

【C语言】—— 动态内存管理

【C语言】——动态内存管理 一、动态内存管理概述1.1、动态内存的概念1.2、动态内存的必要性 二、 m a l l o c malloc malloc 函数2.1、函数介绍2.2、应用举例 三、 c a l l o c calloc calloc 函数四、 f r e e free free 函数4.1、函数介绍4.2、应用举例 五、 r e a l l o …

无列名注入

在进行sql注入时,一般都是使用 information_schema 库来获取表名与列名,因此有一种场景是传入参数时会将 information_schema 过滤 在这种情况下,由于 information_schema 无法使用,我们无法获取表名与列名。 表名获取方式 Inn…

FullCalendar日历组件集成实战(3)

背景 有一些应用系统或应用功能,如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件,但功能比较简单,用来做数据展现勉强可用。但如果需要进行复杂的数据展示,以及互动操作如通过点击添加事件&#xff0…

SwiftUI中的常用图形(Shapes)

概述 在SwiftUI中,常用的图形(Shape)主要有: Circle:圆形 Ellipse:椭圆形 Capsule:胶囊形 Rectangle:矩形 RoundedRectangle:圆角矩形 上面的这些图形都继承了Shape协议…

Hive读写文件机制

Hive读写文件机制 1.SerDe是什么? SerDe是Hive中的一个概念,代表着“序列化/反序列化” (Serializer/Deserializer)。 SerDe在Hive中是用来处理数据如何在Hive与底层存储系统(例如HDFS)之间进行转换的机制…

2024国考行测、申论资料大全,做好备考真的很重要!

1. 国考是什么? 国考,全称国家公务员考试,是选拔国家公务员的重要途径。通过国考,你将有机会进入政府部门,为国家建设贡献力量。 2. 国考难在哪里? 国考之所以难,主要体现在以下几个方面: (1) 竞争激烈 每年国考报名人数都在百万以上,而录取率却不足2%。千军万马过独木桥…

node和npm版本太高导致项目无法正常安装依赖以及正常运行的解决办法:如何使用nvm对node和npm版本进行切换和管理

1,点击下载 nvm 并且安装 进入nvm的github: GitHub - coreybutler/nvm-windows: A node.js version management utility for Windows. Ironically written in Go. 这里下载发行版,Releases coreybutler/nvm-windows GitHub 找到 这个 nv…

洗地机哪款好用?希亦、追觅、顺造、米家等高品质洗地机推荐

家用洗地机已经成为家庭清洁的重要利器,其多功能性能帮助您轻松应对各种清洁任务,从而保持家居环境的清洁整洁。然而,市场上品牌繁多、功能各异的洗地机让人眼花缭乱。为了帮助大家做出明智的选择,我们将在本文中提供全面的选购指…

选择法(数值排序)(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//声明排序函数sort; void sort(int a[], int n);int main() {//初始化变量值&#xff1b;int i, a[10];//填充数组&#xff1b;printf("请输入10个整数\n&…

蓝桥杯备战22.k倍区间——前缀和

目录 题目 分析 暴力求解 优化思路 AC代码 题目链接&#xff1a; P8649 [蓝桥杯 2017 省 B] k 倍区间 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目 分析 很明显这题是一道前缀和的题 暴力求解 只得了28分 #include<iostream> using namespace std; co…

求学生平均成绩(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//声明平均数函数average; float average(float score[10]);int main() {//初始化变量值&#xff1b;float score[10], aver;int i 0;//填充数组&#xff1b;pr…

探秘WebSQL:轻松构建前端数据库

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 探秘WebSQL&#xff1a;轻松构建前端数据库 前言WebSQL简介WebSQL的基本操作WebSQL的实际应用WebSQL的局限性和替代方案 前言 在Web的世界里&#xff0c;我们总是追求更好的用户体验和更快的响应速度…

添砖Java之路(其八)——继承,final关键字

目录 继承&#xff1a; super关键字&#xff1a; 方法重写&#xff1a; 继承特点&#xff1a; 继承构造方法&#xff1a; final关键字&#xff1a; 继承&#xff1a; 意义&#xff1a;让类于类之间产生父类于子类的关系&#xff0c;子类可以直接使用父类中的非私有成员(包…

Seal^_^【送书活动第4期】——《Web渗透测试技术》

Seal^_^【送书活动第4期】——《Web渗透测试技术》 一、参与方式二、本期推荐图书2.1 前 言2.2 关于本书2.3 本书读者2.4 图书简介2.5 作者荐语2.6 编辑推荐2.7 目 录 三、正版购买 掌握Web渗透测试技术&#xff0c;提高Web应用安全性。 一、参与方式 1、关注博主的账号。 2、点…