当前位置: 首页 > news >正文

浅谈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万张图像。最终&#xff…...

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加载内核模块),提升灵活性和扩展性。 ‌内存管理‌&#xff1a…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档?从规划到实践的完整指南 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...

Netty自定义协议解析

目录 自定义协议设计 实现消息解码器 实现消息编码器 自定义消息对象 配置ChannelPipeline Netty提供了强大的编解码器抽象基类,这些基类能够帮助开发者快速实现自定义协议的解析。 自定义协议设计 在实现自定义协议解析之前,需要明确协议的具体格式。例如,一个简单的…...

6.9本日总结

一、英语 复习默写list11list18,订正07年第3篇阅读 二、数学 学习线代第一讲,写15讲课后题 三、408 学习计组第二章,写计组习题 四、总结 明天结束线代第一章和计组第二章 五、明日计划 英语:复习l默写sit12list17&#…...

从数据报表到决策大脑:AI重构电商决策链条

在传统电商运营中,决策链条往往止步于“数据报表层”:BI工具整合历史数据,生成滞后一周甚至更久的销售分析,运营团队凭经验预判需求。当爆款突然断货、促销库存积压时,企业才惊觉标准化BI的决策时差正成为增长瓶颈。 一…...