【JavaEE】HTTP 协议

news2024/11/19 13:39:59

文章目录

  • 一、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.coloradmin.cn/o/1675493.html

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

相关文章

用suno创作歌曲音乐的8个技巧

导读 Suno Ai可以将文本转化为高度逼真的音乐和语音。 该系统包括多种音乐风格,如电影、RAP、翻唱等,并提供了多语言和不同性别的播音员选择。 用户可以使用命令来生成音频并进行个性化设置。 用suno.ai所生成的歌曲质量非常高,而且完美支…

C++——超简单登录项目

程序入口文件 #include <QtWidgets/QApplication> // 包含登录页面头文件 #include "DlgLogin.h"int main(int argc, char *argv[]) {QApplication a(argc, argv);// 程序入口// 调页面起来//DlgMain w;//w.show();// 换成登录页面DlgLogin w;w.show();return…

kafka学习笔记04(小滴课堂)

Kafka的producer生产者发送到Broker分区策略讲解 Kafka核心API模块-producer API讲解实战 代码&#xff1a; ProducerRecord介绍和key的作用 Kafka核心API模块-producerAPI回调函数实战 producer生产者发送指定分区实战 我们设置5个分区。 我们指定分区。 重新指定一个分区&am…

猫吃普通猫粮会秃头?细数生骨肉冻干喂养是否智商税

鉴于科学养猫的理念日益深入人心&#xff0c;生骨肉冻干喂养逐渐成为养猫人的首选。生骨肉冻干喂养不仅符合猫咪的自然习性&#xff0c;更提供了均衡全面的营养&#xff0c;有助于维护猫咪的口腔健康及消化系统功能。普通猫粮的营养远不如生骨肉冻干&#xff0c;长期喂食生骨肉…

110份财务常用excel模板(个税、采购、报销、预算),超实用!

如果你还在为报表头疼&#xff0c;那你一定不能错过这篇干货满满的分享&#xff01; 个税报表 个人所得税&#xff0c;听起来就头大&#xff1f;别担心&#xff0c;掌握这些技巧&#xff0c;轻松搞定&#xff01; - 记录员工收入&#xff0c;确保数据准确无误 - 计算应纳税…

Verilog代码bug:一种特殊的组合逻辑环

Verilog代码bug&#xff1a;一种特殊的组合逻辑环 组合逻辑环&#xff08;Combinational Loop&#xff09;是什么&#xff0c;别的文章已经写的很多了&#xff0c;本文就不赘述了&#xff0c;本文主要记录遇到过的一种特殊的逻辑环&#xff1b; 代码如下所示&#xff1a; mo…

【STM32】状态机实现定时器按键消抖,处理单击、双击、三击、长按事件

目录 一、简单介绍 二、模块与接线 三、cubemx配置 四、驱动编写 状态图 按键类型定义 参数初始化/复位 按键扫描 串口重定向 主函数 五、效果展示 六、驱动附录 key.c key.h 一、简单介绍 众所周知&#xff0c;普通的机械按键会产生抖动&#xff0c;可以采取硬件…

卡片笔记写作法 精读笔记 01

元数据 卡片笔记写作法&#xff1a;如何实现从阅读到写作 书名&#xff1a; 卡片笔记写作法&#xff1a;如何实现从阅读到写作作者&#xff1a; 申克阿伦斯简介&#xff1a; 卢曼的“盒中笔记”通常很简短&#xff0c;因为这些只是他庞大繁杂研究中的索引&#xff0c;等需要时&…

[沫忘录]MySQL 锁

[沫忘录]MySQL 锁 锁能够协调多线程或多进程并发访问某资源产生的数据冲突与错乱。而在数据库中&#xff0c;锁也是协调数据库访问的有效工具。 全局锁 能够锁住当前服务器所有数据库及其表。后续所有事务都只能进行读操作&#xff0c;而不能进行写操作或表属性更改。 典型…

SwiftUI中三大渐变色的介绍

在SwiftUI中&#xff0c;渐变色是一种常用的视觉效果&#xff0c;用于创建平滑过渡的颜色变化。通过使用渐变色&#xff0c;我们可以实现丰富多彩的界面设计&#xff0c;增强用户体验。 1. 渐变色的种类和用途 种类&#xff1a; 线性渐变&#xff08;Linear Gradient&#x…

huggingface 笔记:pipeline

1 介绍 pipeline() 是使用预训练模型进行推理的最简单和最快速的方式。可以针对不同模态的许多任务直接使用 pipeline() 2 举例&#xff1a;情感分析 2.1 创建pipeline实例 from transformers import pipelineclassifier pipeline("sentiment-analysis") #首先创…

练习题(2024/5/13)

1移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示例 2&#xff1a; …

Zoho CRM企业成长的智能引擎,智能化销售自动化

数字化时代&#xff0c;客户体验已成为企业竞争的核心要素。卓豪Zoho CRM&#xff0c;作为全球领先的SaaS云端客户关系管理平台&#xff0c;正引领着一场企业运营模式的变革&#xff0c;助力超过25万家企业跨越180多个国家&#xff0c;实现客户互动与业务增长的无缝对接。让我们…

Taylor Francis科技期刊数据库文献去哪里获取

一、Taylor & Francis科技期刊数据库简介&#xff1a; Taylor & Francis 科技期刊数据库&#xff08;T&F ST Library&#xff09;提供超过520种经专家评审的高质量科学与技术类期刊, 其中超过85%的期刊被Web of Science收录&#xff0c;内容最早至1997年。该科技期…

Windows快捷命令

Windows 操作系统提供了大量的快捷命令&#xff0c;用于快速访问系统设置和管理工具。这些命令在各个版本的 Windows 中基本都适用&#xff0c;可以帮助用户快速进入各类管理工具&#xff0c;方便系统的配置和管理。如果你需要使用这些工具&#xff0c;只需按 Win R 键&#x…

CVHub | CVPR 2024 | 英伟达发布新一代视觉基础模型: AM-RADIO = CLIP + DINOv2 + SAM

本文来源公众号“CVHub”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;CVPR 2024 | 英伟达发布新一代视觉基础模型: AM-RADIO CLIP DINOv2 SAM 标题&#xff1a;《AM-RADIO: Agglomerative Vision Foundation Model Reduce Al…

GPT-4o,AI实时视频通话丝滑如人类,Plus功能免费可用

不开玩笑&#xff0c;电影《她》真的来了。 OpenAI最新旗舰大模型GPT-4o&#xff0c;不仅免费可用&#xff0c;能力更是横跨听、看、说&#xff0c;丝滑流畅毫无延迟&#xff0c;就像在打一个视频电话。 现场直播的效果更是炸裂&#xff1a; 它能感受到你的呼吸节奏&#xf…

第 5 篇 : 多节点Netty服务端(可扩展)

说明 前面消息互发以及广播都是单机就可以完成测试, 但实际场景中客户端的连接数量很大, 那就需要有一定数量的服务端去支撑, 所以准备虚拟机测试。 1. 虚拟机准备 1.1 准备1个1核1G的虚拟机(160), 配置java环境, 安装redis和minio 1.2 准备6个1核1G的空虚拟机(161到166), …

C++:编程世界的永恒之石

在编程的广袤领域中&#xff0c;C犹如一块永恒的基石&#xff0c;历经岁月的洗礼&#xff0c;依旧坚固而璀璨。它的深厚底蕴、强大功能和广泛的应用领域&#xff0c;使其成为无数程序员心中的信仰与追求。 一、C&#xff1a;历史与传承的交汇点 C的历史可追溯到上世纪80年代&…

机器学习笔记 PostgresML教程:使用SQL进行机器学习

机器学习的基本做法是将数据转移到模型的环境中进行训练。由于今天的数据库比机器学习模型大好多个数量级,所以PostgresML的思路是,如果我们将模型引入数据集不是会容易得多吗? PostgresML 是一个建立在流行的 PostgreSQL 数据库之上的综合机器学习平台。它引入了一种称为“…