浅谈HTTP及HTTPS协议
1.什么是HTTP?
HTTP全称是超文本传输协议,是一种基于TCP协议的应用非常广泛的应用层协议。
1.1常见应用场景
一.浏览器与服务器之间的交互。
二.手机和服务器之间通信。
三。多个服务器之间的通信。
2.HTTP请求详解
2.1请求报文格式
我们首先看一下协议格式图,再来详细描述各个部分。
2.2认识请求行
2.2.1认识方法
在HTTP中,常用的方法一般有两个:GET和POST。
GET方法用于获取资源
POST方法用于提交一些数据到服务器
GET方法和POST方法的区别?
1.语义不同,GET方法一般用于获取数据,POST数据一般用于输出数据。
2.GET的body(正文)一般为空,需要传递数据通过query string传递
【GET的URL长度无限制,如果有,也是浏览器或者应用程序规定的】
POST的query string一般为空,需要传递数据通过body传递。
3.GET请求一般是幂等的,POST请求一般不是幂等的
4.GET可以被缓存在本地,(下次访问时就无需联网,而直接从本地缓存获取)POST不可以
【这就是为什么联网时点开看过的手机图片断网后也可以加载出来,而没看过的就不可以】
2.2.2认识URL
URL其实就是统一资源定位符(俗称网址)
例如:https;//www.baidu.com就是一个URL,仅此而已。
2.2.3认识Version
请求行中的version就是指HTTP协议的版本号,用于标识客户端使用的HTTP协议版本。
2.3认识请求报头(header)
HOST:表示服务器主机的地址 和端口号
Content-Length:表示Body中数据长度,单位是字节(在空行后就读取多长)
Content-Type:表示Body中的数据长度
User-Agent(简称UA):表示浏览器/操作系统的属性
Referer:表示当前页面是从那个页面跳转来的
Cookie:它的作用是存储用户在此网站的一些数据,比如登录信息和操作记录,这样用户下次登陆时就不用重新输入账号密码之类的,每个网站都有自己的Cookie,各自之间不能访问。
2.4认识空行
空行就是将请求正文和以上内容分开,但是因为大多数请求都是使用GET方法的,而GET方法的正文一般为空,所以…当我们用抓包工具例如Fidder去看请求报文时,一般到报头就结束了
3.HTTP响应详解
3.1响应报文格式
3.2认识状态码
状态码;表示访问一个页面的结果。
常见状态码:
200 OK 表示访问成功
404 Not Found 表示没有找到资源【URL写错了】
403 Forbidden 表示无权访问,一般是企业内部网址
状态码总结;
1xx 信息行状态码 接收的请求正在处理
2xx 成功状态码 请求正常处理完毕
3xx 重定向状态码 需要进行附加操作以完成请求
4xx 客户端错误状态码 服务器无法处理请求
5xx 服务器错误状态码 服务器处理请求出错
3.3其余
和请求部分差不多,只不过正文部分不是空,是客户端请求的数据。
4.什么是HTTPS?
HTTPS跟HTTP差不多,只是在其基础上引入了一个“加密层”。HTTP虽然传输效率高,但是数据传输是采用明文形式的,随着互联网技术的发展,这种方式容易造成数据泄露,造成经济损失。
5.对称加密和非对称加密
那么HTTPS是如何给数据进行加密的呢?
有两种方式,分别是对称加密和非对称加密。
5.1对称加密
客户端生成一个密钥发给服务器,两方使用这个密钥对数据进行加密,进行数据传输。
对称加密是指数据加密和解密的密钥是相同的
优点: 数据传输效率高(当然跟明文传输比还差点)
缺点:一旦密钥被掌握,安全性这块也基本等于明文传输了
5.2非对称加密
客户端使用公钥加密数据变成密文,服务器使用私钥解密密文
公钥用来加密,私钥用来解密。
优点:相对对称加密安全性高点
缺点:传输效率低下
如何加密数据?
是的,我们合二为一,具体思路为:
首先使用非对称加密的方式将密钥使用公钥加密发送给服务器,服务器使用私钥解密,拿到密钥,然后双方使用密钥来通信,具体如图:
6.中间人攻击
即使采用了合二为一法,看似天衣无缝,但其实黑客还是有办法去破解的(欸我草黑客怎么这么坏)。中间人攻击就是典型的方法之一
具体如图:
为什么会造成这种情况呢?
其实主要原因就是公钥这玩意不是客户端自带的,是在客户端向服务器发送连接请求后服务端发给客户端的(明文发送,很容易被截获),而服务器私钥也是根据发给客户端的公钥生成的。
那公钥加密一下不就好了?
这就扯成先有蛋还是先有鸡的问题了,那加密公钥的密钥怎么让服务端知道?服务端不知道怎么解密?
7.破局关键——证书!
问题的关键就在于关键的问题的关键,嗯…那么防止中间人攻击的关键就在于鉴别收到公钥的真假,如果鉴别到假公钥我就不传数据了,嗯…那么最终的解决办法就是把公钥放在证书里,然后传证书(证书由权威机构颁发)!
7.1简单介绍证书
证书长这样:
可以把它理解为一个结构化的字符串。
那么有没有可能黑客截获证书,将其中公钥修改成自己生成的公钥(欸我草黑客怎么这么坏),进行中间人攻击?
啊还真是有可能的,那么问题就变成了
如何验证证书有没有被修改?
权威机构将证书中所有信息生成一个字符串,然后进行运算(如MD5算法)得到一个值,这个值就是数据签名,客户端拿到证书首先将除签名外所有信息进行运算,算出来值与证书中的数据签名一样即可证明没有被修改。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。真的可以证明吗?有没有可能黑客根据算法去修改公钥,只要保证最后值不变就行了(欸我草黑客怎么这么坏!!!!)?可行吗?
还真可行!那么问题又变成了
如何验证证书中的数字签名有没有被修改?
那么我们就需要给数字签名加密,具体过程:权威机构用私钥给数字签名加密,公钥则由客户端自带,当客户端收到证书时,使用自带的公钥解密数字签名,再自己根据证书内容算一个数字签名,两者相同则表示数字签名没有被修改。至此,HTTPS数据传输安全就得到了保证。
8.小结
8.1HTTPS中涉及的三个密钥
1.正常通讯使用的密钥
2.用于保证发送密钥安全的非对称加密的公钥和私钥
3.证书机构和客户端使用的用于保证证书真伪的公钥和私钥
8.2HTTPS的通讯过程
1.三次握手
2.客户端发送连接请求
3.服务器发送证书,包含公钥
4.客户端使用自带私钥解密数字签名的值,并验证证书真伪
5.若证书为真则发送之后通讯用的密钥,用公钥加密
6.服务器用私钥解密获得密钥,发送响应,用密钥加密。
.
相关文章:

浅谈HTTP及HTTPS协议
1.什么是HTTP? HTTP全称是超文本传输协议,是一种基于TCP协议的应用非常广泛的应用层协议。 1.1常见应用场景 一.浏览器与服务器之间的交互。 二.手机和服务器之间通信。 三。多个服务器之间的通信。 2.HTTP请求详解 2.1请求报文格式 我们首先看一下…...

GTID的基本概念
1.1 GTID的基本概念 1.1.1 GTID的作用 GTID的全称为Global Transaction Identifier,是MySQL的一个强大的特性。MySQL会为每一个DML/DDL操作都增加一个唯一标记,叫作GTID(每个事务一个GTID)。这个标记在整个复制环境中都是唯一的…...
.NET Core MVC IHttpActionResult 设置Headers
最近碰到调用我的方法要求返回一个代码值,但是要求是不放在返回实体里,而是放在返回的Headers上 本来返回我是直接用 return Json(res) 这种封装的方法特别简单,但是没有发现设置headers的地方 查询过之后不得已换了个返回 //原来方式 //…...
数据结构与算法面试专题——桶排序
引入 桶排序,顾名思义,会用到“桶”,核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。 桶排序…...
深度学习奠基作 AlexNet 论文阅读笔记(2025.2.25)
文章目录 训练数据集数据预处理神经网络模型模型训练正则化技术模型性能其他补充 训练数据集 模型主要使用2010年和2012年的 ImageNet 大规模视觉识别挑战赛(ILSVRC)提供的 ImageNet 的子集进行训练,这些子集包含120万张图像。最终ÿ…...
MongoDB 数据库简介
MongoDB 数据库简介 引言 随着互联网技术的飞速发展,数据已经成为企业的重要资产。为了高效地管理和处理这些数据,数据库技术应运而生。MongoDB作为一种流行的NoSQL数据库,因其灵活的数据模型和高效的数据处理能力,受到了广泛的关注。本文将为您详细介绍MongoDB的基本概念…...

Transformer LLaMA
一、Transformer Transformer:一种基于自注意力机制的神经网络结构,通过并行计算和多层特征抽取,有效解决了长序列依赖问题,实现了在自然语言处理等领域的突破。 Transformer 架构摆脱了RNNs,完全依靠 Attention的优…...
【DeepSeek开源:会带来多大的影响】
DeepSeek 开源,震撼登场对云计算行业的冲击 巨头云厂商的新机遇 DeepSeek 开源后,为云计算行业带来了巨大的变革,尤其是为巨头云厂商创造了新的发展机遇。以阿里云为例,它作为云计算行业的领军者,与 DeepSeek 的合作…...

Redis7——基础篇(七)
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…...

边缘计算:通俗易懂的全方位解析
1. 什么是边缘计算? 边缘计算(Edge Computing)是一种数据处理方式,它将计算任务从云端或数据中心下放到更靠近数据源(边缘)的设备上。 通俗理解: 想象你住在一个偏远的村庄,而最近…...
Flink 中的滚动策略(Rolling Policy)
在 Apache Flink 中,滚动策略(Rolling Policy)是针对日志(或数据流)文件输出的一种管理策略,它决定了在日志文件的大小、时间或其他条件满足特定标准时,如何“滚动”生成新的日志文件。滚动策略…...
GPU和FPGA的区别
GPU(Graphics Processing Unit,图形处理器)和 FPGA(Field-Programmable Gate Array,现场可编程门阵列)不是同一种硬件。 我的理解是,虽然都可以用于并行计算,但是GPU是纯计算的硬件…...
网易云音乐分布式KV存储实践与演进
随着网易云音乐业务的快速发展,推荐和搜索场景对分布式KV存储的需求日益增长。本文将深入探讨网易云音乐在分布式KV存储方面的实践和演进,分析其技术选型、架构设计以及未来发展方向。 一、业务背景 网易云音乐的业务场景对分布式KV存储提出了高并发、…...

WordPress平台如何接入Deepseek,有效提升网站流量
深夜改代码到崩溃?《2024全球CMS生态报告》揭露:78%的WordPress站长因API对接复杂,错失AI内容红利。本文实测「零代码接入Deepseek」的保姆级方案,配合147SEO的智能发布系统,让你用3个步骤实现日均50篇EEAT合规内容自动…...

【嵌入式】STM32内部NOR Flash磨损平衡与掉电保护总结
1. NOR Flash与NAND Flash 先deepseek看结论: 特性Nor FlashNAND Flash读取速度快(支持随机访问,直接执行代码)较慢(需按页顺序读取)写入/擦除速度慢(擦除需5秒,写入需逐字节操作&…...

什么是磁盘阵列(RAID)?如何提高磁盘阵列的性能
什么是磁盘阵列 磁盘阵列(RAID)是一种将多个独立的硬盘组合成一个逻辑存储单元的技术,旨在提高数据存储的性能、容量、可靠性和冗余性。磁盘阵列通过将数据分割成多个区段并分别存储在不同的硬盘上,利用个别磁盘提供数据加…...

轻量级日志管理平台Grafana Loki
文章目录 轻量级日志管理平台Grafana Loki背景什么是Loki为什么使用 Grafana Loki?架构Log Storage Grafana部署使用基于 Docker Compose 安装 LokiMinIO K8s集群部署Loki采集Helm 部署方式和案例 参考 轻量级日志管理平台Grafana Loki 背景 在微服务以及云原生时…...
k8s集群部署
集群结构 角色IPmaster192.168.35.135node1192.168.35.136node2192.168.35.137 部署 #需在三台主机上操作 //关闭防火墙 [rootmaster ~]# systemctl disable --now firewalld//关闭selinux [rootmaster ~]# sed -i s/enforcing/disabled/ /etc/selinux/config//关闭swap分区…...

STM32MP157A-FSMP1A单片机移植Linux系统SPI总线驱动
SPI总线驱动整体上与I2C总线驱动类型,差别主要在设备树和数据传输上,由于SPI是由4根线实现主从机的通信,在设备树上配置时需要对SPI进行设置。 原理图可知,数码管使用的SPI4对应了单片机上的PE11-->SPI4-NSS,PE12-->SPI4-S…...

系统基础与管理(2025更新中)
一、Linux 核心架构与组件 内核架构 核心职责: 管理进程生命周期、内存分配、硬件驱动交互及文件系统操作。 模块化设计支持动态加载硬件驱动(如modprobe加载内核模块),提升灵活性和扩展性。 内存管理:…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...