【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.hqwc.cn/news/701343.html

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

相关文章

新手做抖店一般多久出单?想尽快出单需要做什么准备工作?

大家好,我是电商糖果 有不少刚开店的朋友,喜欢搜索,咨询多久出单的问题。 根据糖果做店四年多的经验来说,新手运营新店,只要操作思路正确,一般是一周左右就会出单,三到四周左右,店…

NSSCTF中的1zjs、作业管理系统、finalrce、websign、简单包含、Http pro max plus

目录 [LitCTF 2023]1zjs [LitCTF 2023]作业管理系统 [SWPUCTF 2021 新生赛]finalrce exec()函数:php中exec介绍及使用_php exec-CSDN博客​​​​​​ 资料参考:RCE(远程命令执行)绕过总结_rce绕过-CSDN博客 [UUCTF 2022 新生赛]websign [鹏城杯 …

局域网监控软件有哪些:好用的局域网桌面监控软件神器分享

如何有效地监控和管理内部员工的计算机使用行为,防范潜在的安全风险,提高工作效率,是众多企业管理者关注的焦点。 而一款优秀的局域网桌面监控软件无疑能为企业的IT治理提供有力支撑。 小编在此给大家推荐一款好用的局域网桌面监控软件——域…

克服亏损的负面影响 学学现货白银止损的方法

一个多月以前,现货黄金的上涨还十分强劲,一度还逼近历史的高位30大关。但是我们看近半个月以来,现货白银价格出现了调整。很多在高位买入的投资者都承受了较大的亏损,这时候就凸显出了现货白银止损的作用。如果投资者能够通过近期…

销量?模糊销量?精准销量?如何获取淘宝商品销量数据接口

淘宝爬虫商品销量数据采集通常涉及以下几个步骤: 1、确定采集目标:需要明确要采集的商品类别、筛选条件(如天猫、价格区间)、销量和金额等数据。例如,如果您想了解“小鱼零食”的销量和金额,您需要设定好价…

探索数据结构:堆的具体实现与应用

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty’s blog 1. 堆的概念 堆(Heap)是计算机科学中一类特殊的数据结构。堆通常是一个…

【漏洞复现】GB28181摄像头管理平台-user未授权访问

0x01 漏洞描述 GB28181是公共安全视频监控联网系统信息传输、交换、控制技术要求的标准。该标准主要定义了基于IP网络的音视频监控系统的整体架构,包括前端设备、存储设备、管理平台等组成部分,以及设备接入、流媒体传输、信令交互、存储管理、安全防护…

PostgreSQL源码安装

文章目录 一、先决条件检查二、源码安装1、获取源代码2、编译安装1.运行 configure2.运行make 3、PostgreSQL的配置4、安装contrib目录下的工具 三、初始化数据库1、创建数据库管理员2、创建数据库实例3、启动和停止数据库4、设置数据库密码 四、PostgreSQL的简单配置1、pg_hba…

测试和开发工作必备的17个Python自动化代码

您是否厌倦了在日常工作中做那些重复性的任务?简单但多功能的Python脚本可以解决您的问题。 我们将通过上下两个篇章为您介绍17个能够自动执行各种任务并提高工作效率Python脚本及其代码。无论您是开发人员、数据分析师,还是只是希望简化工作流程的人&…

Java学习47-Java 流(Stream)、文件(File)和IO - 其他流的使用

1.标准输入流System.in/标准输出流System.out System.in : 标准的输入流,默认从键盘输入 System.out: 标准的输出流,默认从显示器输出(理解为控制台输出) System.setOut()方法和 System.setIn()方法(结合下面介绍的打印流举例) …

实验十 智能手机互联网程序设计(微信程序方向)实验报告

实验目的和要求 完成以下页面设计。 二、实验步骤与结果&#xff08;给出对应的代码或运行结果截图&#xff09; Wxml <view class"container"> <view class"header"> <view class"logo"…

OSEK应用模式

1 前言 应用模式&#xff08;Application modes)用于区分不同的场景&#xff0c;以便在系统运行时&#xff0c;组织各自相互独立的OS相关的资源集合&#xff0c;是一种分而治之的思想体现。不同的应用模式是互斥的&#xff0c;即系统当前必须在一种应用模式&#xff08;且只能在…