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

传输安全HTTPS

为什么要有 HTTPS

为什么要有 HTTPS?简单的回答是:“因为 HTTP 不安全”。HTTP 怎么不安全呢?

  • 通信的消息会被窃取,无法保证机密性(保密性):由于 HTTP 是 “明文” 传输,整个通信过程完全透明,其他人能够窃取到传输的明文信息。
  • 通信的消息会被篡改,无法保证完整性:使用 HTTP 通信,任何人都能够在通信的过程中截获并篡改请求报文、响应报文,但消息接收者无法识别报文是否被篡改。
  • 通信的消息会被伪造,无法确认消息发送者的真实身份(身份认证):使用 HTTP 通信,任何人都能够给一个接收者发送消息,但是消息接收者无法确认消息发送者的真实身份。也就是说,无法进行身份认证。
  • 无法保证不可否认性(不可抵赖):使用 HTTP 通信,消息接收者收到一个消息后,通信的一方可以否认(抵赖)消息不是他发送的。也就是说,消息接收者无法证明这一消息的确是由通信的一方发送的。

只有同时具备了机密性、完整性、身份认证、不可否认这四个特性,才能算得上是安全的通信。

HTTPS 使用 HTTP 进行通信,并使用 SSL/TLS 为 HTTP 增加了机密性、完整性、身份认证、不可否认这四大安全特性。

介绍 SSL/TLS

SSL 即安全套接层(Secure Sockets Layer)。

SSL 发展到 v3 时已经证明了它是一个非常好的安全通信协议,于是互联网工程组 IETF 在 1999 年把 SSL 改名为 TLS(传输层安全,Transport Layer Security),正式标准化,版本号从 1.0 重新算起,所以 TLS1.0 实际上就是 SSLv3.1。

至今,TLS 已经发展出了三个版本,分别是 2006 年的 1.1、2008 年的 1.2 和 2018 的 1.3,每个新版本都紧跟密码学的发展和互联网的现状,持续强化安全和性能。目前应用最广泛的 TLS 版本是 1.2,而之前的版本(TLS1.1 / 1.0、SSLv3 / v2)都已经被认为是不安全的。

TLS 综合使用了对称加密、非对称加密、身份认证等许多密码学前沿技术。非对称加密在这个场景中发挥的作用是 “密钥协商”,通信的双方协商得到会话密钥。会话密钥用于 HTTP 报文的加解密,以实现机密性。


TLS 由记录协议、握手协议、警报协议、变更密码规范协议、扩展协议等几个子协议组成:

  • **记录协议(Record Protocol)**规定了 TLS 收发数据的基本单位是:记录(record)。它有点像是 TCP 里的 segment,所有其他的子协议都需要通过记录协议发出。多个记录数据可以在一个 TCP 包里一次性发出。
  • **握手协议(Handshake Protocol)**是 TLS 里最复杂的子协议。通信的双方在 TLS 握手的过程中协商 TLS 的版本号、密码套件,交换随机数、数字证书和密钥参数,最终通信的双方协商得到会话密钥。
  • **警报协议(Alert Protocol)**的职责是向对方发出警报信息。收到警报的一方可以选择继续连接,也可以立即终止连接。它有点像是 HTTP 里的状态码,比如 protocol_version 就是不支持旧版本,bad_certificate 就是证书有问题。
  • **变更密码规范协议(Change Cipher Spec Protocol)**就是一个“通知”,告诉对方:后续传输的都是对称密钥加密的密文。也就是说,“Change Cipher Spec” 消息之前传输的都是明文,之后传输的都是对称密钥加密的密文。

TLS 的密钥套件

通信的双方在 TLS 握手的过程中会协商使用的密码套件(cipher suite,也被称为加密套件)。

TLS 的密码套件命名非常规范。固定的格式是:“密钥交换算法 + 签名算法 + 对称加密算法 + 分组模式 + 消息摘要算法”,例如 “ECDHE-RSA-AES256-GCM-SHA384” 密码套件的意思就是:

  • **密钥交换算法使用的是:ECDHE。**通信的双方在 TLS 握手的过程中协商 TLS 的版本号、密码套件,交换随机数、数字证书和密钥参数,通信的双方使用 ECDHE 算法算法 “Pre Master Secret”。

  • **签名算法使用的是:RSA。**TLS 握手的过程中,使用 RSA 签名算法进行数字签名。服务器给浏览器发送 “Server Key Exchange” 消息,服务器对密钥参数(消息中的 Public 参数)进行数字签名,然后把签名值一并发送给浏览器。浏览器收到 “Server Key Exchange” 消息后,使用数字证书中的公钥对密钥参数(消息中的 Public 参数)进行验签。

  • 对称加密算法使用的是:AES-256。TLS 握手后的通信使用 AES 对称加密算法进行加密,以实现机密性。对称密钥的长度 256 位

  • **分组模式使用的是:GCM。**加密明文的长度不固定,而一次对称加密只能处理特定长度的一块数据,这就需要进行迭代,以便将一段很长的数据全部加密,而迭代的方法就是分组模式。

  • **消息摘要算法使用的是:SHA-384。**TLS 握手的过程中,两次用到了该消息摘要算法。一次是:“PRF” 通过消息摘要算法,根据三个随机数(Client Random、Server Random 和 Pre Master Secret)计算主密钥 “Master Secret” 的值。另一次是:通信的双方给对方发送 “Finished” 消息。一方对之前发送的数据做摘要,再使用会话密钥对摘要进行对称加密,让对方进行验证(类似数字签名的验签)。TLS 握手后的通信使用该消息摘要算法进行消息认证,防止消息被篡改。

TLS1.2 握手的过程

使用 HTTPS 协议通信,通信的双方会先建立 TCP 连接,然后执行 TLS 握手,之后就可以在安全的通信环境里收发 HTTP 请求和响应了。

执行 TLS 握手的目的是:通信的双方安全的协商会话密钥。会话密钥用于 HTTP 报文的加解密,以实现机密性。


TLS1.2 握手可以划分为两种方式:使用 RSA 算法实现密钥交换 和 使用 ECDHE 算法实现密钥交换。

下面说的是使用 ECDHE 算法实现密钥交换的 TLS 握手过程。

TLS 握手过程的简要描述:通信的双方在 TLS 握手的过程中协商 TLS 的版本号、密码套件,交换随机数、数字证书和密钥参数,最终通信的双方协商得到会话密钥。“Hello” 消息交换随机数,“Key Exchange” 消息交换密钥参数。

  • 浏览器给服务器发送 “Client Hello” 消息,服务器给浏览器发送 “Server Hello” 消息。通信的双方协商 TLS 的版本号、密码套件,并交换随机数。
  • 交换数字证书:服务器为了向浏览器证明自己的身份,服务器给浏览器发送 “server Certificate” 消息,以发送数字证书链,其中包含了两个证书。一个是 CA 机构颁发的数字证书,另一个是 CA 机构的数字证书。
  • 服务器给浏览器发送 “Server Key Exchange” 消息,浏览器给服务器发送 “Client Key Exchange” 消息。通信的双方交换密钥参数(Client Params 和 Server Params),然后通信的双方使用 ECDHE 算法算出 “Pre Master Secret”。
  • 通信的双方根据自己已知的参数(Client Random、Server Random 和 Pre Master Secret)算出主密钥 “Master Secret”,并使用主密钥拓展出更多的密钥(会话密钥),避免只用一个密钥带来的安全隐患。
  • 浏览器给服务器发送 “Change Cipher Spec” 消息,服务器也给浏览器发送 “Change Cipher Spec” 消息。告诉对方:后续传输的都是对称密钥加密的密文。
  • 浏览器给服务器发送 “Finished” 消息,服务器也给浏览器发送 “Finished” 消息。通信的双方把之前发送的数据做摘要,再使用会话密钥对摘要进行对称加密,让对方进行验证(类似数字签名的验签)。
  • 双方都验证成功,握手正式结束,之后就可以正常收发被加密的 HTTP 请求和响应了。

TLS 握手的过程如下图所示,其中每一个框都是一个记录,多个记录组合成一个 TCP 包发送。所以,最多经过两次消息往返(4 个消息,或者说 4 个 TCP 包)就可以完成 TLS 握手。

69493b53f1b1d540acf886ebf021a26c.png

第一个消息往返

浏览器与服务器建立 TCP 连接之后,浏览器会首先给服务器发送 “Client Hello” 消息。“Client Hello” 消息携带几个参数:Version、Random、Cipher Suites。

  • Version:TLS 的版本号
  • Random:浏览器生成的随机数(Client Random)。随机数用于后续生成主密钥
  • Cipher Suites:浏览器支持的密码套件
Handshake Protocol: Client HelloVersion: TLS 1.2 (0x0303)Random: 1cbf803321fd2623408dfe…Cipher Suites (17 suites)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)

服务器收到浏览器发送的 “Client Hello” 消息后,服务器给浏览器发送 “Server Hello” 消息。“Server Hello” 消息携带几个参数:Version、Random、Cipher Suite。

  • Version:TLS 的版本号
  • Random:服务器生成的随机数(Server Random)。随机数用于后续生成主密钥
  • Cipher Suite:服务器选择使用的密码套件(服务器从浏览器发送的 “Client Hello” 消息的 Cipher Suites 参数中选)
Handshake Protocol: Server HelloVersion: TLS 1.2 (0x0303)Random: 0e6320f21bae50842e96…Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)

服务器为了向浏览器证明自己的身份,服务器给浏览器发送一个证书链,包含了两个证书。一个是 CA 机构颁发的数字证书,另一个是 CA 机构的数字证书。

通过引入数字证书,实现了服务器的身份认证功能,这样即便黑客伪造了服务器,但是由于数字证书是没有办法伪造的,所以黑客依然无法欺骗用户。

2e5095cb129d58b5bfa325c5e0d9b9a4.jpg


由于服务器选择了使用 ECDHE 密钥交换算法,因此服务器需要给浏览器发送【服务端的椭圆曲线的公钥】(Server Params)。为了防止公钥被第三方篡改、被黑客冒充,服务器会对公钥进行数字签名,然后把签名值一并发送给浏览器。浏览器收到后,使用数字证书中的公钥对密钥参数(消息中的 Public 参数)进行验签。

服务器给浏览器发送 “Server Key Exchange” 消息。“Server Key Exchange” 消息携带几个参数:Curve Type、Named Curve、Pubkey、Signature Algorithm、Signature。

  • Curve Type、Named Curve:使用的椭圆曲线的类型
  • Pubkey:根据【服务端的椭圆曲线的私钥】和 基点 G 计算出的【服务端的椭圆曲线的公钥】(Server Params),用于后续计算 “Pre Master Secret”
  • Signature Algorithm、Signature:使用的签名算法、签名值
Handshake Protocol: Server Key ExchangeEC Diffie-Hellman Server ParamsCurve Type: named_curve (0x03)Named Curve: x25519 (0x001d)Pubkey: 3b39deaf00217894e...Signature Algorithm: rsa_pkcs1_sha512 (0x0601)Signature: 37141adac38ea4...

服务器给浏览器发送 “Server Key Exchange” 消息之后,服务器发送信息完毕。服务器给浏览器发送 “Server Hello Done” 消息,服务器向浏览器说明:服务器发送信息完毕了。

ech_serverhellodone.png

至此,第一个消息往返就结束了(2 个消息,或者说 2 个 TCP 包)。结果是:通信的双方通过明文传输共享了如下信息:浏览器生成的随机数(Client Random)、服务器生成的随机数(Server Random)、使用的椭圆曲线的类型、服务端的椭圆曲线的公钥(Server Params)。

验证数字证书

浏览器收到服务器发送的数字证书之后,浏览器需要验证数字证书是否合法、有效。

浏览器验证完数字证书合法、有效后,浏览器再用数字证书中的公钥验证【服务器给浏览器发送的 “Server Key Exchange” 消息】的签名,以确认服务器的身份。

浏览器确认了服务器的身份之后,就开始了第二个消息往返。

第二个消息往返

由于通信的双方协商的使用 ECDHE 密钥交换算法。因此浏览器需要给服务器发送【客户端的椭圆曲线的公钥】(Client Params)。浏览器给服务器发送 “Client Key Exchange” 消息。

Handshake Protocol: Client Key ExchangeEC Diffie-Hellman Client ParamsPubkey: 8c674d0e08dc27b5eaa…

至此,通信的双方都获取到了 ECDHE 密钥交换算法需要的两个参数(Client Params、Server Params),于是通信的双方就使用 ECDHE 算法算出一个随机数,这个随机数被叫做 “Pre Master Secret”。

ECDHE 算法可以保证:即使黑客截获了之前的参数,黑客也绝对算不出这个 “Pre Master Secret” 随机数,因为 “Pre Master Secret” 的计算还使用了椭圆曲线的私钥。

目前,通信的双方已知三个随机数:Client Random、Server Random 和 Pre Master Secret。通信的双方使用这三个随机数作为原始信息,通过 PRF 算出主密钥(Master Secret)。因为黑客拿不到 “Pre Master Secret”,所以黑客也就无法得到主密钥。

主密钥 “Master Secret” 的计算:这里的 “PRF” 就是伪随机数函数,它基于密码套件里的最后一个参数(消息摘要算法),比如 SHA384。“PRF” 通过 SHA384 消息摘要算法再一次强化 “Master Secret” 的随机性。

master_secret = PRF(pre_master_secret, "master secret", ClientHello.random + ServerHello.random)

主密钥的长度为 48 字节,但是主密钥并不是最终用于通信的会话密钥,还会再用 PRF 扩展出更多的密钥,比如浏览器发送用的会话密钥(client_write_key)、服务器发送用的会话密钥(server_write_key)等,避免只用一个密钥带来的安全隐患。有了主密钥和派生的会话密钥,TLS 握手就快结束了。


浏览器给服务器发送 “Change Cipher Spec” 消息。浏览器告诉服务器:浏览器后续传输的都是对称密钥加密的密文。浏览器给服务器发送 “Finished” 消息。浏览器对之前发送的数据做摘要,再使用会话密钥对摘要进行对称加密,让服务器进行验证(类似数字签名的验签)。

服务器也进行和浏览器同样的操作。

  • 服务器给浏览器发送 “Change Cipher Spec” 消息。服务器告诉浏览器:服务器后续传输的都是对称密钥加密的密文。
  • 服务器给浏览器发送 “Finished” 消息。浏览器对之前发送的数据做摘要,再使用会话密钥对摘要进行对称加密,让浏览器进行验证。

双方都验证成功,握手正式结束,之后就可以正常收发被加密的 HTTP 请求和响应了。

使用 RSA 的 TLS 握手

TLS1.2 握手可以划分为两种方式:使用 RSA 算法实现钥交换 和 使用 ECDHE 算法实现密钥交换。

上面说了【使用 ECDHE 算法实现密钥交换的 TLS 握手过程】,下面说【使用 RSA 算法实现密钥交换的 TLS 握手过程】。

TLS 握手过程的简要描述:通信的双方在 TLS 握手的过程中协商 TLS 的版本号、密码套件,交换随机数、数字证书和密钥参数,最终通信的双方协商得到会话密钥。“Hello” 消息交换随机数,“Key Exchange” 消息交换 “Pre Master Secret”。

  • 浏览器给服务器发送 “Client Hello” 消息,服务器给浏览器发送 “Server Hello” 消息。通信的双方协商 TLS 的版本号、密码套件,并交换随机数。
  • 交换数字证书:服务器为了向浏览器证明自己的身份,服务器给浏览器发送 “server Certificate” 消息,以发送数字证书链,其中包含了两个证书。一个是 CA 机构颁发的数字证书,另一个是 CA 机构的数字证书。
  • 服务器给浏览器发送 “Server Hello Done” 消息,服务器向浏览器说明:服务器发送信息完毕了。
  • 浏览器验证数字证书合法、有效后,获取数字证书中【服务器的公钥】。浏览器生成随机数 “Pre Master Secret”,使用【服务器的公钥】对生成的 “Pre Master Secret” 进行加密。然后,浏览器给服务器发送 “Client Key Exchange” 消息,把加密后的 “Pre Master Secret” 发送给服务器。
  • 服务器收到浏览器发送的 “Client Key Exchange” 消息后,使用【服务器的私钥】解密出随机数 “Pre Master Secret”。
  • 通信的双方根据自己已知的参数(Client Random、Server Random 和 Pre Master Secret)算出主密钥 “Master Secret”,并使用主密钥拓展出更多的密钥(会话密钥),避免只用一个密钥带来的安全隐患。
  • 浏览器给服务器发送 “Change Cipher Spec” 消息,服务器也给浏览器发送 “Change Cipher Spec” 消息。告诉对方:后续传输的都是对称密钥加密的密文。
  • 浏览器给服务器发送 “Finished” 消息,服务器也给浏览器发送 “Finished” 消息。通信的双方把之前发送的数据做摘要,再使用会话密钥对摘要进行对称加密,让对方进行验证(类似数字签名的验签)。
  • 双方都验证成功,握手正式结束,之后就可以正常收发被加密的 HTTP 请求和响应了。

【使用 RSA 算法实现钥交换的 TLS 握手过程】的大体流程没有变,只是 “Pre Master Secret” 不再需要通信的双方根据密钥参数使用算法算出,而是由浏览器生成,浏览器再使用服务器的公钥对生成的 “Pre Master Secret” 进行加密。然后,浏览器给服务器发送 “Server Key Exchange” 消息,把加密后的 “Pre Master Secret” 发送给服务器。服务器收到浏览器发送的 “Server Key Exchange” 消息后,使用服务器的私钥解密出随机数 “Pre Master Secret”。

这样通信的双方也已知三个随机数:Client Random、Server Random 和 Pre Master Secret,就可以生成主密钥了。

tls握手.png

参考资料

23 | HTTPS是什么?SSL/TLS又是什么? (geekbang.org)

26 | 信任始于握手:TLS1.2连接过程解析 (geekbang.org)

3.4 HTTPS ECDHE 握手解析 | 小林coding (xiaolincoding.com)

相关文章:

传输安全HTTPS

为什么要有 HTTPS 为什么要有 HTTPS?简单的回答是:“因为 HTTP 不安全”。HTTP 怎么不安全呢? 通信的消息会被窃取,无法保证机密性(保密性):由于 HTTP 是 “明文” 传输,整个通信过…...

Docker--(六)--Docker资源限制

前言系统压力测试Cpu资源限制Mem资源限制IO 资源限制【扩展】 1.前言 在使用 Docker 运行容器时,一台主机上可能会运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU、内存和磁盘资源。如果不对容器使用的资源进行限制&#x…...

消息队列总结及案例

文章目录python内置队列先进先出的队列Queue分布式队列rabbitmqrocketmqredis list 队列python内置队列 标准库queue提供Queue队列、LifoQueue栈、PriorityQueue优先级队列用于单机的生产者、消费者缓冲队列; 生产者,生产消息的进程或线程&#xff1b…...

通过WiFi连接adb调试

通过WiFi连接adb调试 解决 cannot connect to 192.168.1.136:5555: 由于目标计算机积极拒绝,无法连接。 (10061) 解决办法1 (Windows下cmd环境执行) 1.连接USB数据线,打开USB调试 使用windows的“运行”命令行方式:&a…...

【蓝桥杯-筑基篇】常用API 运用(1)

🍓系列专栏:蓝桥杯 🍉个人主页:个人主页 目录 🍍1.输入身份证,判断性别🍍 🍍2.输入英语句子,统计单词个数🍍 🥝3.加密解密🥝 🌎4.相邻重复子串…...

想要成为高级网络工程师,只需要具备这几点

首先,成为高级网络工程师的目的,就是为了搞钱。高级网络工程师肯定是不缺钱的,但成为高级网络工程师你一定要具备以下几点:第一 心态作为一个高级网工,首先你必须情绪要稳定,在碰到重大故障的时候不慌&…...

c++ 每日十问3-处理数据

1.为什么 C有多种整型? 解析: C语言中包含多种整数类型,主要包括 short、int、long 和 long long 这4种,每一种还分别包含有符号类型和无符号类型(unsigned)。此外,char 类型也可以看作一种小整数类型。C语言中这些整数类型的主要区别在于存…...

【MySQL】实验一 数据定义

目录 1. 表定义:创建工程项目表 2. 表定义:创建供应商表 3. 表定义:创建供应情况表 4. 表定义:创建零件表 5. 表定义:创建student表 6. 表定义:创建course表 7. 表定义:创建sc表 8.…...

17.电话号码的字母组合(深度递归遍历解决经典老题)

前文C深度递归遍历解决"电话号码的字母组合问题",本题考察的比较全面,考察到vector的使用,深度遍历以及递归的熟练度,希望能对铁子们有所帮助一,题目链接:https://leetcode.cn/problems/letter-c…...

Python 基础教程【1】:Python介绍、变量和数据类型、输入输出、运算符

本文已收录于专栏🌻《Python 基础》文章目录1、Python 介绍2、变量和数据类型2.1 注释的使用2.2 变量以及数据类型2.2.1 什么是变量?2.2.2 怎么给变量起名?2.2.3 变量的类型🎨 整数 int🎨 浮点数(小数&…...

【RPC】Apache Thrift系列详解 - 概述与入门

文章目录前言正文Thrift的技术栈Thrift的特性(一) 开发速度快(二) 接口维护简单(三) 学习成本低(四) 多语言/跨语言支持(五) 稳定/广泛使用Thrift的数据类型Thrift的协议Thrift的传输层Thrift的服务端类型Thrift入门示例(一) 编写Thrift IDL文件(二) 新建Maven工程总结前言 Th…...

class03:MVVM模型与响应式原理

目录一、MVVM模型二、内在1. 深入响应式原理2. Object.entries3. 底层搭建一、MVVM模型 MVVM,即Model 、View、ViewModel。 Model > data数据 view > 视图(vue模板) ViewModel > vm > vue 返回的实例 > 控制中心, 负责监听…...

[Spring学习]08 @Resource和@Autowired注解的区别

目录前言一、Resource和Autowired注解的身世1、Resource注解2、Autowired注解3、常见的三种依赖注入方式及区别1. Filed注入2. Setter注入3. Constructor注入4. 三种依赖注入方式的区别二、Resource和Autowired注解的区别三、Resource和Autowired注解的推荐用法前言 当我们在属…...

前端开发神器VS Code安装教程

✅作者简介:CSDN一位小博主,正在学习前端 📃个人主页:白月光777的CSDN博客 💬个人格言:但行好事,莫问前程 安装VS CodeVS Code简介VS Code安装VS Code汉化结束语💡💡&…...

【Hive进阶】-- Hive SQL、Spark SQL和 Hive on Spark SQL

1.Hive SQL 1.1 基本介绍概念Hive由Facebook开发,用于解决海量结构化日志的数据统计,于2008年贡献给 Apache 基金会。Hive是基于Hadoop的数据仓库工具,可以将结构化数据映射为一张表,提供类似SQL语句查询功能本质:将Hi…...

搭建自己的直播流媒体服务器SRS,以及SRS+OBS直播推拉流使用及配置

一、前言 目前,全球直播带货什么的,成为主流,那如何自己搭建一个直播服务器呢。首先需要一个流媒体服务器,搭建流媒体有很多种方式,如下: 流媒体解决方案 Live555 (C)流媒体平台框…...

Node.js-----使用express写接口

使用express写接口 文章目录使用express写接口创建基本的服务器创建API路由模块编写GET接口编写POST接口CROS跨域资源共享1.接口的跨域问题2.使用cros中间件拒绝跨域问题3.什么是cros4.cros的注意事项5.cros请求的分类JSONP接口1.回顾jsonp的概念和特点2.创建jsonp接口的注意事…...

【Linux修炼】16.共享内存

每一个不曾起舞的日子,都是对生命的辜负。 共享内存一.共享内存的原理二.共享内存你的概念2.1 接口认识2.2演示生成key的唯一性2.3 再谈key三.共享资源的查看3.1 如何查看IPC资源3.2 IPC资源的特征3.3 进程之间通过共享内存进行关联四.共享内存的特点五.共享内存的内…...

JAVA进阶 —— Stream流

目录 一、 引言 二、 Stream流概述 三、Stream流的使用步骤 1. 获取Stream流 1.1 单列集合 1.2 双列集合 1.3 数组 1.4 零散数据 2. Stream流的中间方法 3. Stream流的终结方法 四、 练习 1. 数据过滤 2. 数据操作 - 按年龄筛选 3. 数据操作 - 演员信息要求…...

Linux基础命令大全(上)

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放&#xff0…...

嵌入式 串口通信

目录 1、通信的基本概念 1.1 串行通信 1.2 并行通信 2、串行通信的特点 2.1 单工 2.2 半双工 2.3 全双工 3、串口在STM32的引脚 4、STM32的串口的接线 4.1 STM32的串口1和电脑通信的接线方式 4.2 单片机和具备串口的设备连接图 5、串口通信协议 6、串口通信…...

C语言函数调用栈

栈溢出(stack overflow)是最常见的二进制漏洞,在介绍栈溢出之前,我们首先需要了解函数调用栈。 函数调用栈是一块连续的用来保存函数运行状态的内存区域,调用函数(caller)和被调用函数&#xf…...

【高阶数据结构】红黑树

文章目录1. 使用场景2. 性质3. 结点定义4. 结点旋转5. 结点插入1. 使用场景 Linux进程调度CFSNginx Timer事件管理Epoll事件块的管理 2. 性质 每一个节点是红色或者黑色根节点一定是黑色每个叶子节点是黑色如果一个节点是红色,那么它的两个儿子节点都是黑色从任意…...

网络协议分析期末复习(二)

目录 12. 端口的定义及常见应用对应的端口号 13. UDP协议概述 14.UDP数据报格式及各字段意义 15. UDP-Lite协议概述 16. TCP数据报格式及各字段意义 17. TCP连接建立及协商参数的过程 18. TCP连接释放过程 19. 路由协议分类及各类的具体协议 20. 路由算法常用的度量 2…...

【C++】STL简介 及 string的使用

文章目录1. STL简介1.1 什么是STL1.2 STL的版本1.3 STL的六大组件2. string类的使用2.1 C语言中的字符串2.2 标准库中的string类2.3 string类的常用接口说明1. string类对象的常见构造2. string类对象的容量操作3. string类对象的修改操作4. resize和reserve5. 认识迭代器&…...

MySQL事务详解

🏆今日学习目标: 🍀Spring事务和MySQL事务详解 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页 🍁林在闪闪发光的个人社区,欢迎你的加入: …...

ChatGPT背后的技术和多模态异构数据处理的未来展望——我与一位资深工程师的走心探讨

上周,我和一位从业三十余年的工程师聊到ChatGPT。 作为一名人工智能领域研究者,我也一直对对话式大型语言模型非常感兴趣,在讨论中,我向他解释这个技术时,他瞬间被其中惊人之处所吸引🙌,我们深…...

iOS-砸壳篇(两种砸壳方式)

CrackerXI砸壳呢,当时你要是使用 frida-ios-dump 也是可以的; https://github.com/AloneMonkey/frida-ios-dump frida-ios-dump: 代码中需要更改的:手机中的内网ip 密码 等 最后放到我的砸壳路径里: python dump.py -l查看应用…...

linux 基础

1.Shell 命令的格式如下:command -options [argument]command: Shell 命令名称。options: 选项,同一种命令可能有不同的选项,不同的选项其实现的功能不同。argument: Shell 命令是可以带参数的,也可以不带参…...

Java:SpringBoot给Controller添加统一路由前缀

网上的文章五花八门,不写SpringBoot的版本号,导致代码拿来主义不好使了。 本文采用的版本 SpringBoot 2.7.7 Java 1.8目录1、默认访问路径2、整个项目增加路由前缀3、通过注解方式增加路由前缀4、按照目录结构添加前缀参考文章1、默认访问路径 packag…...

哪些网站做推广性价比高/核心关键词

注释:锚的这两种类型都使用同样的标签;也许这就是它们拥有同样的名称的原因。但是我们发现,如果将它们区分开,把提供热点和超链接地址的锚看作“链接”,而用于标记文档的目标部分的锚称为“锚”,那么您将更…...

政协网站 两学一做专题研讨/中国营销网站

2019独角兽企业重金招聘Python工程师标准>>> 随着《愤怒的小鸟》的发布所受到了广大游戏爱好者的好评,从而大多数游戏开发者在看到《愤怒的小鸟》时,肯定非常想知道该游戏的开发技术,为了满足网友的需求,于是推出了《盛…...

化妆品 营销型网站/济南做网站比较好的公司

我是尾巴: 入职有一段时间了,现在结合工作后的经验来说一下面试时自己认为的重点吧。 首先我觉得一定要清晰的是业务准备一定是大于技术的。 要清楚数据分析特别是初级分析师是对技术要求不高的职位。如果你面试时公司表现出来的是技术要求高&#xff0c…...

网站备案费用多少/seo优化技术培训

在本学期开学初期,由于后续实验的需要,老师为我们配置了服务器,该服务器的型号为Dell Power R730。 由于我也是一个小白,在服务器安装系统的过程中,遇到了一些麻烦,在这里记录下来,希望自己能够…...

贵州省城乡建设局网签网站/天津短视频seo

最近比较用心的学习了 Redis 相关的知识,关于 Redis 的知识也是有不少收获的,因此打算把所学的内容逐步的进行整理并汇总起来,也算是一个阶段性的学习成果。整理的内容心里也有一个简单的打算,但是我也不确定是否有时间能够把它们…...

凡客诚品是什么模式/优化方案模板

工具 使用VS2013 进行页面展示的开发将数据库的内容进行用图表的形式展现 如图所示 将饼图上的数据全去掉 也就是变为透明就好了 直接修改series 运行结果如下: 这个在页面展示的时候碰到的bug。...