【Linux】HTTP协议 HTTPS协议

jsoncpp库的安装使用
sudo yum install jsoncpp-devel
在这里插入图片描述
使用jsoncpp包含头文件<jsoncpp/json/json.h>
Makefile要添加链接jsoncpp库的选项-ljsoncpp

HTTP协议

应用层:通俗说就是程序员在socket接口之上编写的具体逻辑,其中很多工作都是和文本处理有关的(协议分析与处理)。
所以http协议,也就是超文本传输协议,也一定会存在大量的文本分析和协议处理。

协议名称://服务器IP[:端口号]/web根目录

在这里插入图片描述
如果用户想在URL中包含URL本身就用来作为特殊字符的字符,URL形成的时候,浏览器会自动进行编码(encode)。
在这里插入图片描述
所以,服务端收到这样的请求之后,一般都需要进行特殊字符的转回(decode)。

http协议作为应用层的协议,底层所采用的是TCP协议。

http的请求和响应的报文格式,单纯从报文的角度,http可以看作是基于行的文本协议。
在这里插入图片描述
http request的协议版本用于告诉server端,client端用的协议版本;而http response的协议版本用于告诉client端,server端用的协议版本。
http是如何区分报头和有效载荷的呢?
是通过空行的方式来区分的。

我们平时的上网行为无非就两种:
a.从服务端拿取数据 — GET
b.把数据从客户端进行提交 — POST, GET

GET方法通过URL传参,会回显输入的私密信息,进而不够私密;
POST方法通过正文提交参数,不会进行回显,一般而言私密性是有保证的。
对数据进行加密和解密才是安全性上的问题。
HTTP协议还有很多方法,但最常用也就是GET和POST方法了。

HTTP协议的状态码主要分为以下五类:

错误码类别状态类别原因解释
1XXInformational(信息性状态码)接收的请求正在处理
2XXSuccess(成功状态码)请求正常处理完成
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXServer Error(服务器错误状态码)服务器处理请求出错

永久重定向301 vs 临时重定向302
临时重定向:不影响用户后续的请求策略
永久重定向:会影响用户后续的请求策略
在这里插入图片描述
HTTP协议特征:简单快速,无连接,无状态

HTTPS协议

HTTPS协议是在HTTP协议的基础上引入了一个加密层。
HTTP协议的内容都是按照文本的方式明文传输的,所以当明文数据经过路由器等中间设备传输时,一旦被劫持,传输的内容也就完全被暴露出来了,劫持者甚至可以在不被客户端和服务器双方察觉的情况下进行信息的篡改,这就是所谓的中间人攻击。所以对传输的信息进行加密是必须的。

  1. 什么是加密
    所谓加密就是把明文进行一系列变换,生成密文;
    解密就是把密文再进行一系列的变换,还原成明文;
    在这个加密和解密的过程中,需要密钥来辅助这一系列的转换。
  2. 常见加密方式
  • 对称加密
    对称加密的特征就是:加密和解密所用的秘钥是相同的。
    也就是同一个密钥可以用作信息的加密和解密。
    对称加密其计算量小,加密速度快,加密效率高。
  • 非对称加密
    需要两个密钥来进行加密和解密。这两个密钥就是公开密钥(公钥)和私有密钥(私钥)。
    通过公钥对明文加密,可以变成密文;通过私钥对密文解密,可以变成明文;
    也可以反过来用,
    通过私钥对明文加密,可以变成密文;通过公钥对密文解密,可以变成明文。
    非对称算法其算法强度复杂,加密解密速度比对称加密解密要慢很多。
  1. 数据摘要(数据指纹) & 数字签名
    数据摘要(数据指纹),其基本原理就是利用单向散列函数(Hash函数)对信息进行运算,生成一串固定长度的数字摘要。这并不是一种加密机制,但可以用来判断数据有没有被篡改过,通常用来进行数据对比。
    MD5就是常见的摘要算法。
    数据摘要经过加密,就得到了数字签名。
  2. CA证书
    服务端在能使用HTTPS协议前,需要向CA机构申领一份数字证书,这份证书就如同身份证一样,向客户端浏览器证明服务端公钥的权威性。
    当服务端申领CA证书的时候,CA机构会对服务端进行审核,并专门为该网站形成数字签名,过程如下:
  • CA机构拥有非对称加密的公钥A和私钥A’
  • CA机构对服务端申请的证书明文数据进行hash,形成数据摘要
  • 然后对数据摘要用私钥A’加密,得到数字签名
    服务端申请的证书明文和数字签名共同组成了数字证书,这样一份数字证书就是服务端所申请的CA证书了。

HTTPS协议的加密层正是通过非对称加密+对称加密+CA认证来完成的。

在这里插入图片描述
在这里插入图片描述
所以,HTTPS协议工作过程涉及到的密钥有三组:

  • 第一组是非对称加密密钥,用于校验证书是否被篡改;
  • 第二组是非对称加密密钥,用于协商生成对称加密的密钥;
  • 第三组是对称加密密钥,用于后续客户端和服务器传输数据时进行对称密钥的加密解密。

其实这一切的关键都是围绕这个对称加密的密钥展开的:
第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥;
第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/284846.html

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

相关文章

蓝桥杯需要掌握的几个案例(C/C++)

文章目录 蓝桥杯C/C组的重点主要包括以下几个方面&#xff1a;以下是一些在蓝桥杯C/C组比赛中可能会涉及到的重要案例类型&#xff1a;1. **排序算法案例**&#xff1a;2. **查找算法案例**&#xff1a;3. **数据结构案例**&#xff1a;4. **动态规划案例**&#xff1a;5. **图…

Linux的一些基本指令

​​​​​​​ 目录 前言&#xff1a; 1.以指令的形式登录 2.ls指令 语法&#xff1a; 功能&#xff1a; 常用选项&#xff1a; 3.pwd指令 4.cd指令 4.1 绝对路径与相对路径 4.2 cd .与cd ..&#xff08;注意cd后先空格&#xff0c;然后两个点是连一起的&#xff0…

选择word中的表格VBA

打开开发工具 选择Visual Basic插入代码 Sub 选择word中的表格() Dim t As Table an MsgBox("即将选择选区内所有表格&#xff0c;若无选区&#xff0c;则选择全文表格。", vbYesNo, "提示") If an - 6 Then Exit Sub Set rg IIf(Selection.Type wdSel…

33-Java服务定位器模式 (Service Locator Pattern)

Java服务定位器模式 实现范例 服务定位器模式&#xff08;Service Locator Pattern&#xff09;用于想使用 JNDI 查询定位各种服务的时候考虑到为某个服务查找 JNDI 的代价很高&#xff0c;服务定位器模式充分利用了缓存技术在首次请求某个服务时&#xff0c;服务定位器在 JNDI…

return code 1 from org.apache.hadoop.hive.ql.ddl.DDLTask

Bug信息 Error: Error while compiling statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.ddl.DDLTask (state=08S01,code=1)Bug产生的代码 修复hive表分区: msck repair table xxxBug原因排查 分区数量过大 这个是网上查看的说如果一次…

(三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练

这里写目录标题 一、colmap解算数据放入高斯1. 将稀疏重建的文件放入高斯2. 将稠密重建的文件放入高斯 二、vkitti数据放入高斯 一、colmap解算数据放入高斯 运行Colmap.bat文件之后&#xff0c;进行稀疏重建和稠密重建之后可以得到如下文件结构。 1. 将稀疏重建的文件放入高…

02.percona Toolkit工具pt-archiver命令实践

1.命令作用 Percona Toolkit有的32个命令&#xff0c;可以分为7大类 工具类别 工具命令 工具作用 备注 开发类 pt-duplicate-key-checker 列出并删除重复的索引和外键 pt-online-schema-change 在线修改表结构 pt-query-advisor 分析查询语句&#xff0c;并给出建议&#x…

AST学习入门

AST学习入门 1.AST在线解析网站 https://astexplorer.net/ 1.type: 表示当前节点的类型&#xff0c;我们常用的类型判断方法t.is********(node)**,就是判断当前的节点是否为某个类型。 2**.start**:表示当前节点的开始位置 3.end:当前节点结束 4.loc : 表示当前节点所在的行…

项目解决方案:旅游景区4G/5G无线视频监控联网系统设计方案

目录 一、背景 二、系统设计 1.1 总体设计要求 1.2 系统架构设计说明 1.3 系统拓扑图 1.4 关键技术 1.4.1 5G支持技术 1.4.2 视频图像处理技术 1.4.3 数据融合与分析技术 三、功能特点 3.1 高效可靠 3.2 实时监测 3.3 远程控制 3.4 故障预测 四、应用前景 …

DBO优化GRNN回归预测(matlab代码)

DBO-GRNN回归预测matlab代码 蜣螂优化算法(Dung Beetle Optimizer, DBO)是一种新型的群智能优化算法&#xff0c;在2022年底提出&#xff0c;主要是受蜣螂的的滚球、跳舞、觅食、偷窃和繁殖行为的启发。 数据为Excel股票预测数据。 数据集划分为训练集、验证集、测试集,比例…

面试笔记——Redis(双写一致、持久化)

双写一致 双写一致性&#xff1a; 当修改了数据库中的数据&#xff0c;也要更新缓存的数据&#xff0c;使缓存和数据库中的数据保持一致。 相关问题&#xff1a;使用Redis作为缓存&#xff0c;mysql的数据如何与Redis进行同步&#xff1f;——双写一致性问题 回答时&#xff0…

五、分布式锁-redission

源码仓库地址&#xff1a;gitgitee.com:chuangchuang-liu/hm-dingping.git 1、redission介绍 目前基于redis的setnx特性实现的自定义分布式锁仍存在的问题&#xff1a; 问题描述重入问题同一个线程无法多次获取统一把锁。当方法A成功获取锁后&#xff0c;调用方法B&#xff0…

说说webpack中常见的Loader?解决了什么问题?

文章目录 一、是什么配置方式 二、特性三、常见的loadercss-loaderstyle-loaderless-loaderraw-loaderfile-loaderurl-loader 参考文献 一、是什么 loader 用于对模块的"源代码"进行转换&#xff0c;在 import 或"加载"模块时预处理文件 webpack做的事情…

【JS】如何避免输入中文拼音时触发input事件

现有一段代码&#xff0c;监听input事件。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" con…

自动驾驶感知新范式——BEV感知经典论文总结和对比(一)

自动驾驶感知新范式——BEV感知经典论文总结和对比&#xff08;一&#xff09; 博主之前的博客大多围绕自动驾驶视觉感知中的视觉深度估计&#xff08;depth estimation&#xff09;展开&#xff0c;包括单目针孔、单目鱼眼、环视针孔、环视鱼眼等&#xff0c;目标是只依赖于视…

elment-ui el-tabs组件 每次点击后 created方法都会执行2次

先看错误的 日志打印: 错误的代码如下: 正确的日志打印: 正确的代码如下: 前言: 在element-ui的tabs组件中,我们发现每次切换页面,所有的子组件都会重新渲染一次。当子页面需要发送数据请求并且子页面过多时,这样会过多的占用网络资源。这里我们可以使用 v-if 来进行…

数据结构面试常见问题之串的模式匹配(KMP算法)系列-大师改进实现以及原理

&#x1f600;前言 KMP算法是一种改进的字符串匹配算法&#xff0c;由D.E.Knuth&#xff0c;J.H.Morris和V.R.Pratt提出的&#xff0c;因此人们称它为克努特—莫里斯—普拉特操作&#xff08;简称KMP算法&#xff09;。KMP算法的核心是利用匹配失败后的信息&#xff0c;尽量减少…

Jackson 2.x 系列【2】生成器 JsonGenerator

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 前言2. 案例演示2.1 创建 JsonFactory2.2 创建 JsonGenerator2.3 写入操作2.4 查…

stm32使用定时器实现PWM与呼吸灯

PWM介绍 STM32F103C8T6 PWM 资源&#xff1a; 高级定时器&#xff08; TIM1 &#xff09;&#xff1a; 7 路 通用定时器&#xff08; TIM2~TIM4 &#xff09;&#xff1a;各 4 路 例如定时器2 PWM 输出模式&#xff1a; PWM 模式 1 &#xff1a;在 向上计数 时&#xff0…

GETSHELL方法总结上

渗透的总步骤 1.信息收集找到弱漏洞 2.漏洞挖掘 漏洞验证 3.有一定权限 getshell 4.提权后---渗透 5.内网渗透】 前后台拿shell方法汇总 接下来我们实操一波dedecms也就是织梦cms 如果你们的靶场是空白的 可能是php版本 我们修改为5.2 可能是源码问题 我们不要急着上传…