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

网络安全通信架构图

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快

在安全通信里面我经常听到的2个东西就是SSL和TLS,这2个有什么区别呢?以及HTTPS是怎么通信的?包括对称加密、非对称加密、摘要、证书、CA、签名等这些都是什么东西,我们一次讲清楚。

安全通信

应用层协议大多数自己都没有实现加解密功能,比如http等。http就是直接把数据加载进来然后做简单编码(也就是流式化)然后响应客户端,然后数据在浏览器展示,这个数据在传输过程是明文的,你截获就可以直接查看。这显然不安全,要想做到安全那么就只能在发送端加密然后接收端还能把信息还原成原来的内容,这就是加密解密。其实这个事情很好理解,加密解密在古代就有也不是现代的概念。在安全通信里面我经常听到的2个东西就是SSL和TLS,这2个有什么区别呢?以及HTTPS是怎么通信的?

SSL和TLS

SSL

SSL是网景公司研发的一种功能模块这种模块或者叫库就在应用层和传输层之间又加了一层,而且不是一整层只是半层,这要做的好处是你调用这个库就可以使用这个功能如果不调用则还是按照之前的方式来使用,这个半层的库就是SSL,叫做安全套接字层。不过SSL只是一种规范和协议并不是具体实现。OpenSSL则是对SSL的实现而且众多实现中的一种。什么叫做一种实现呢?比如httpd和Nginx这两个应用都是http协议的实现或者说x86是一种标准那么DELL和HP都可以基于这种标准来设计自己的电脑。

如果你自己本身不具备开发这种加密解密的功能,那么你就可以使用SSL完成这个工作,不过无论你自己开发还是使用SSL,这些加密解密协议都需要具备2个基本功能:

  1. 加密和解密
  2. 秘钥分发

在Web应用方面,http调用了ssl就变成了https,虽然就是调用了ssl,但是http和https这两个在机制上有巨大的区别。

TLS

叫做传输层安全,为什么有了SSL还会有一个和SSL类似的TLS呢?因为SSL协议是发明者是网景公司,它拥有版权,而且互联网公司很多都需要使用安全通信,所以国际标准化机构就参照SSL弄了一个TLS协议。两者兼容。TLS由IETF在1999年发布。那么由于SSL的3个版本有漏洞所有很多不用了。现在主流都使用TLS。总之你可以把TLS当做SSL使用其原理都是一样的。

早期使用SSL较多后来大部分使用TLS,虽然我们平时会说ssl它可能指的是SSL也可以是TLS,所以你不用纠结它指的是什么你只要理解为一种安全通信机制就可以。所以我们后面会不加区分的统称SSL。

为什么现在都是全站启用SSL呢

之前很多网站都不是https,也只有某些特殊阶段才使用,比如支付阶段、登录验证阶段。那么后来为什么大家包括百度搜索首页这种都变成https了呢?

如果使用SSL加密那么服务端就需要解密,加解密其实非常消耗CPU资源,早期处于性能考虑不会大面积使用SSL,比如只是普通的浏览网页没必要进行安全通信。但是后来服务器性能越来越强而且大规模使用x86服务器以及有些网卡也支持SSL卸载,所以全站使用SSL也成为可能。

不过由于http是明文传输的,用户访问什么网页其实可以通过流量拦截,数据可以被修改,有些不法行为就可以利用这一点来实现广告投放,但是使用https通信则不会出现这种情况。

安全通信到底怎么安全呢?

基本概念

为了解决安全问题实现安全目标比如保密性、完整性、可用性等其解决方案有两类,就是技术和服务,技术指的是加密和解密;服务指的是认证机制和访问控制机制。
针对加密和解密以及实现服务功能的所用到的加密算法和协议就有如下几种:对称加密、非对称加密、单向加密和认证协议。

在Linux上实现上述算法和协议的工具有OpenSSL(ssl协议的实现)和GPG(pgp协议的实现)。

数字加密算法

先说一下算法,虽然加密用秘钥但是如何用这个秘钥来对数据加密或者解密这个是算法来决定的,但是通常算法是公开的比如RSA(个别安全公司有自己的独有的算法除外)所以是否安全不取决于算法而是秘钥。

什么叫密码,什么叫秘钥?我上面那段话肯定会有人迷糊,密码是编码和解码的规则你可以理解为加密和解密规则而秘钥则是改变密码行为的外在参数,也就是说相同的规则当你使用不同的秘钥加密相同内容时加密后的结果也是不同的。比如字母移位这就是密码,而移动N位的这个N则是秘钥。假设移动3位,那么ABC则变成DEF。所以这就是为什么上面那段话的结论是不取决于算法(密码)而是秘钥。

对称秘钥加密:对称加密算法有很多,但是无论什么算法加密解密都使用相同的秘钥,好处是简单计算量小也就是不会对CPU产生太大压力,缺点以及密码过多(你要和很多人通信就需要很多人的密码)、密码分发困难。因为你要让对方可以解密你就需要把密码先给对方,这个给密码的过程要不要加密呢?这就变成了先有鸡还是先有蛋的事情永远扯不清。常用算法DES(目前已经弃用)、AES等。

非对称秘钥加密:有公钥和私钥,使用公钥加密私钥解密。如果A和B通信每个人都有一对儿公钥和私钥,彼此还都有对方的公钥。A发信息给B则使用B的公钥加密,然后B收到后使用自己的私钥解密,然后B回复信息给A则使用A的公钥加密,A收到后使用自己的私钥解密。这个过程看似完美,可是由于公钥大家都能获取,B怎么知道信息是来自A而不是来自其他冒名A的人呢?这就是数字签名,这个后面再说。非对称加密主要用于数字签名和秘钥交换。加密数据虽然它也能做但是通常不这么用,你看后面的HTTPS通信过程就知道了。非对称加密主要用来做对称秘钥的交换,完成交换后大家其实就是使用对称密码来做数据加密和解密。常用算法RSA(加解密和签名)、DSA(仅能签名)等。

单向加密**:不可逆的,只能加密不能解密,比如MD5、SHA1等。其实主要用来提取数据摘要或者说指纹,所以并不能算作我们常规意义上的加密。它的特点是数据微小变化都会导致指纹的不同,所以主要用来做数据完整性验证。

特别注意:并不是说只能用公钥加密私钥解密,非对称加密方式的目的就是使用一种秘钥加密的数据必须能使用另外一种秘钥解密,所以无论是公钥还是私钥都可以加密,我们之所以说用公钥加密用私钥解密是首先是因为公钥是从私钥中提取出来的,其次公钥是公开的如果你用私钥加密那么任何拥有该私钥对应公钥的人都可以解密 。所以才有公钥发给其他人私钥自己留存且用公钥加密私钥解密,因为只有这样才能发挥这种非对称加密或者说公钥加密的主要作用也就是密码交换和数字签名。不过使用私钥加密数据可以证明一件事情就是如果用该私钥的公钥可以解密那就证明这个数据一定是私钥持有人发来的。

秘钥交换(IKE,互联网秘钥交换):IKE实现的方式有公钥加密和DH算法。这种标准主要用来做秘钥交换。不过对于秘钥交换来说更加安全的其实是DH算法,虽然常用的是公钥加密方式。

公钥加密最大的问题是密码是要从一方传送到一方,虽然使用对方的公钥加密了。但是DH的好处是双方不用发密码而且双方还可以得到密码。

数字签名

数字签名的主要作用是为了检查数据是否被篡改以及数据是谁发的(就是向对方证明此时他收到的消息是来自消息宣称的人本人而不是冒名顶替的第三人,当然真正验证对方身份的还不能仅仅靠数字签名这个后面再说)。

按照上面的例子A发消息给B,A使用B的公钥加密,B通过自己的私钥解密,可是公钥大家都可以获得那么B怎么知道这个消息是来自A呢?难道仅仅凭借消息内容说我是A就断定消息来自A么?另外B怎么确定信息在传递过程中没有被篡改呢?

为了解决这个问题A对消息做哈希摘要(MD5算法或者SHA1算法等)然后用A自己的私钥对摘要进行加密(数字签名),然后把加密后的摘要和消息本身一起使用B的公钥加密发送给B,这样B收到消息后用自己的私钥可以解密,然后用A的公钥可以解密签名(上面提到的摘要)如果成功就说明消息来自A。这就是签名和验证签名过程。消息来源确认了,此时就会担心消息传递过程中如果被篡改怎么办?这就是那段被加密的摘要的作用,如果B使用相同的算法来计算信息的摘要,如果B计算得到的值和解密签名后的得到的值一致说明信息没有被篡改。

上面的过程的确看起来很好但是有一个漏洞就是所有的公钥都要自己保存和管理万一被别人替换了呢,或者说A和B从未通信过现在要做第一次通信如何把公钥给对方呢?难道就不怕有人冒充A把自己的公钥给了B那么反过来也是一样,另外A对信息做哈希摘要的时候用的什么算法,万一B没有这个算法怎么办呢,所以这就引出了CA和证书的概念。

为什么需要CA、证书以及CA根证书

公钥加密私钥解密,私钥肯定是自己保存其实也就保存一份,如果我需要给很多人通信难道我要保存很多人的公钥么?如果这个数量达到一个量级在管理上也很困难另外就是如何防止公钥被篡改呢也就是如何验证这个公钥是不是我要通信的那个人的公钥而不是别人发来冒充他的。如果要是有一个第三方机构来统一管理就好了,这就是CA证书管理机构。CA的作用就是对申请人的公钥进行认证和加密,加密后的公钥就是数字证书,又称CA证书,证书中包含了很多重要信息比如申请人、用途、申请人支持的加密算法、申请人使用hash算法,证书有效期等其中最重要的就是证书申请人的公钥。当然前提是通信双方都要信任同一个CA机构。

那有了CA之后该怎么做呢?申请者需要自己生成自己的公钥和私钥,然后把公钥和其他申请信息发给证书颁发机构,证书颁发机构自己也有公钥和私钥,然后证书颁发机构提取申请者的公钥和其他信息的特征码,然后CA使用自己的私钥加密这个特征码也就是签名, 这样形成一个由CA签名的证书然后发送给申请者 。此时还是A和B通信且为第一次通信并且双方都信任同一CA颁发机构 。

  1. A把自己支持的对称加密算法、单向加密算法、公钥加密算法以及自己的证书发给B
  2. B拿到信息后需要对A的证书解密(这样才能获取A的公钥),但证书是CA用私钥加密的需要用CA的公钥解密这怎么办?这就是CA根证书(包含CA的公钥)的作用,B需要下载CA根证书并且安装到自己的电脑里通常只需要安装一次(通常现在操作系统 MacOX、Windows都已经内置了国际著名CA的根证书,因为全球著名CA都是有限的,Linux没有内置)。有了这个根证书也就有了CA的公钥,这样就可以解密A的证书来获取A的公钥。能解密成功说明A的证书是CA颁发的。然后使用证书中的单向加密算法来计算证书的特征码如果和解密签名得到的特征码一致则表明内容没有被篡改,所以这一步完成了对A的身份验证和证书信息的完整性验证。
  3. 验证完之后还要看该证书的有效期以及证书主体名称和该证书是否被吊销
  4. 验证都通过之后B选择自己支持的对称加密算法、单向加密算法、公钥加密算法以及自己的证书发送给A
  5. A采用相同的步骤来验证B,如果验证通过,这时候大家就确定了使用哪种对称加密算法、单向加密算法、公钥加密算法并且完成了双方的公钥交换以及身份验证
  6. A使用对称加密算法生成一个密码,然后对密码计算摘要,然后用自己的私钥对摘要进行签名,之后用B的公钥进行加密发送给B
  7. B收到信息后使用自己的私钥解密,然后使用A的公钥解密签名得到摘要,如果解密成功则说明是A发来的,然后对密码提取摘要并和解密签名得到的摘要对比,如果一直则说明信息完整,这时候就完成了密码交换,从此双发就可以使用对称加密方式来通信。

上述这个过程就是大家通过CA来间接获取通信双方公钥的过程。如果B使用CA的根证书无法解密A发来的证书说明就说明A的证书不是该CA签发的,由于世界上公认的CA也就那么几个所以如果B用这些CA的根证书都解密不了A的证书,那么就会提示风险,很有可能A这个证书就是一个自签名的证书。

这里我们只是阐明概念,在实际应用中上述过程还有些不同,比如上面A发给B的包括签名和证书以及信息,难道信息不加密么?如果加密用什么加密等。这些东西都会在具体应用场景中再说明。

既然明白了CA那么我们就说一下PKI。

PKI

公钥基础设施,以CA为中心所生成的一套体系就是PKI。它有四个重要组件:

  • 签证机构,就是CA,这个是负责生成证书的
  • 注册机构,就是RA,这个是负责接收证书申请的
  • 证书吊销列表,就是CRL,这个是标记哪些证书已经不可用或者不可信了,相当于证书黑名单,这里的证书都不能被信任了。
  • 证书存取库,就是CB,这里存放的是CA发的证书可以供其他人下载和使用

证书常用字段和格式

首先要说一下X.509,它就是证书标准,也叫做证书格式。所有证书都要符合这个标准,它定义了证书中包含那些内容。比如版本号、序列号(CA发的第几个证书)、签名算法ID(这个证书用什么算法做的签名)、CA颁发机构名称、证书有效期、申请者名称、申请者公钥、CA颁发机构的唯一标识、申请者的唯一标识、CA对该证书的签名(用CA自己的私钥对所有信息的摘要做签名)等扩展信息。下面就看看证书中常见的字段:

字段

含义

Common Name

简称CN,对于SSL证书来说一般为网站域名;而对于代码签名证书则为申请单位名称;而对于客户端证书来说则是申请者名称也可以当做用户账号名称

Organization Name

简称O,对于SSL证书来说一般为网站域名;而对于代码签名证书则为申请单位名称;而对于客户端证书来说则是申请者名称也可当做用户账号所属的组

Locality

简称L,表示城市

State/Provice

简称ST,表示省份

Country

简称C,表示国家,比如中国为CN,美国为US

浏览器使用HTTPS访问时它是怎么检查证书和地址栏中的名称呢?有下面三种方式

  1. 主机名(地址栏中的域名)与证书Subject中的CN字段完全匹配
  2. 主机名称与通配符通用名称相匹配,比如www.abc.com匹配通用名称*.abc.co
  3. 主机名在主题备用名称(Subject Alternative Name检查sans)字段中列出

我们知道了X.509是证书格式,可是很多时候看到的.pem、.key都什么呢?,这里就要做一些区分,证书编码格式和证书扩展名。

证书编码格式

所有的证书都是通过X.509标准生成的证书,但是有2中编码格式:

  • PEM(Privacy Enhanced Mail),它是基于X.509标准生成的,文件可读可以直接打开查看,它是以"-----BEGIN CERTIFICATE-----" 和 "-----END CERTIFICATE-----"开头和结尾且用Base64编码的证书,这种编码格式的证书通常是.pem扩展名。
    使用命令 openssl x509 -in XXX.pem -text -noout 来查看证书内容。
  • DER(Distinguished Encoding Rules),二进制格式的,无法直接读取。
    使用命令 openssl x509 -in XXX.der -inform der -noout 来查看证书内容。
证书扩展名

虽然证书编码格式有2种,但是扩展名有很多:

扩展名

说明

.der

用于DER编码的证书

.pem

它是基于X.509标准生成的,它是以"-----BEGIN CERTIFICATE-----" 和 "-----END CERTIFICATE-----"开头和结尾且用Base64编码的证书

.crt

这种扩展名的证书可以是DER编码也可以是PEM编码,在Unix系统中常见。

.cer

微软系统常见,在微软系统中可以将.crt转换为.cer。同样可以是DER编码也可以是PEM编码。

.key

用于存储公钥和私钥,同样可以使用DER或者PEM编码。

.csr

这个不是证书文件,而是证书签名请求文件,向CA申请获得签名证书时需要提供的申请文件。

HTTPS通信过程

双向认证

网络安全通信架构图_网络安全通信架构图

上图为SSL的双向验证过程

  1. 浏览器发起https请求,生成随机数(用于稍后生成会话秘钥),并发送client_hello信息里面将自己支持的加密协议版本、加密算法、压缩算法和生成的随机数发送给服务端。
  2. 服务端收到信息以后,也生成随机数(用于稍后生成会话秘钥),并发送server_hello信确认自己客户端发送来的协议版本、算法等。如果不支持那么就无法通信了。
  3. 服务端发送服务器证书给客户端,并且要求客户端也发送证书过来
  4. 客户端检查服务端证书合法性和有效性,通过以后,发送客户端证书给服务端
  5. 服务器检查客户端的证书合法
  6. 客户端把所有之前收到的信息做HASH,然后使用自己私钥做签名,发送给服务器端
  7. 服务端检查哈希值和签名
  8. 客户端使用对称加密算法生成一个加密密码,然后使用客户端公钥进行加密发送给服务端
  9. 服务端收到以后就可以使用对称加密密码和客户端通信
  10. 断开连接

单向认证

HTTPS访问通常使用单向认证,比如你访问百度、淘宝、京东等虽然是https通信但是它们不会去验证客户端证书,客户端只会去验证服务端证书。为什么呢?因为证书花钱啊,哪个网站要是需要做客户端证书认证那么估计就没有人去访问了,再有对于服务端来说它不在乎你是谁来的人越多越好。当然也有通信双方要求做双向认证的比如登录网银的U盾就是客户端证书。

  1. 浏览器发起https请求,生成随机数将自己支持的一套加密规则、协议版本发送给服务端。
  2. 服务端从中选出一组加密算法与HASH算法,服务端也生成一个随机数并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了服务端地址,加密公钥,以及证书的颁发机构等信息。
  3. 客户端获得服务端证书之后浏览器要做以下工作:(验证我访问的www.abc.com是不是真正的那个www.abc.com,这个验证过程就通过服务端证书和自己的CA根证书来完成)
  • 验证证书的合法性和有效性(使用客户端保存的CA根证书的公钥解密服务端发来的证书的签名,解密成功说明服务端证书可以信任,然后使用HASH算法计算证书摘要然后对比解密签名后得到的摘要,如果一致则说明内容没有篡改,然后 检查证书中的其他信息,可以检查证书中的域名和我访问的域名是否一致 (这里防止钓鱼网站)、检查是否过期、检查是否被吊销等,如果检查都通过则证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
  • 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数,然后把随机数、编码变更通知(表示随后的通信都使用双方商定的协议版本以及加密算法)和客户端握手结束通知发送给服务器
  1. 服务端接收浏览器发来的数据之后要做以下的操作:
  • 这时候服务端会有3个随机数,2个是客户端发来的,一个是服务端自己产生的,用着三个随机数并结合对称加密算法生成“会话密码”
  • 生成编码变更通知、服务端握手结束通知
  • 使用商定好的HASH算法对会话密码、编码变更通知、握手结束通知计算摘要,然后使用自己的私钥进行对摘要进行签名,最后使用客户端公钥加密信息并发送给客户端
  1. 浏览器解密,然后得到消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据都使用得到的“会话密码” 加密。

这里为什么在认证通过后的数据传输使用认证过程产生的随机密码呢?这是因为使用对称加密解密性能要比非对称的高,尤其是对服务端的CPU压力比较小,但是如果使用一个长期固定的对称密码就很不安全而随机生成的就会有一个如何告诉通信双方且传递过程中不被窃取的问题所以就使用非对称加密方式这样不但保证了随机密码的安全同时也可以验证服务端身份的真实性。

为什么会产生这么多随机数呢?为了避免计算机上产生的随机数不是真的随机数,所以双方都产生随机数然后使用大家的随机数来生成密码。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

上述所有都有配套的资料,这些资料,对于做【网络安全】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

相关文章:

网络安全通信架构图

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 在安全通信里面我经常听到的2个东西就是SSL和TLS,这2个有什么区别呢?以及HTTPS是怎么通信的?包括对称加密、非对称加密、摘要、…...

AMD(xilinx) FPGA书籍推荐

理论到实践,五年磨一剑 以应用为主,书中全部例程均来自工程实践;目的在于培养FPGA工程师良好的代码编写习惯,掌握vivado常用高级技巧。本书详细讲解了: (0)vivado操作基础从工程建立到bit/mcs文…...

考前冲刺,消防设施操作员考试最后一击

考前冲刺,消防设施操作员考试最后一击 考前冲刺阶段至关重要。首先要回归教材,快速浏览重点知识点,强化记忆。同时,对之前做过的错题进行集中复习,分析错误原因,避免在考试中再次犯错。进行全真模拟考试&a…...

【GoTeams】-3:构建api、重构错误码

本文目录 1. 构建api梳理调用关系api包的作用路由梳理注册Register代码语法 2. 重构错误码 1. 构建api 首先复制project-user,改名为project-api,放在总的路径下,然后在工作区中进行导入。 运行命令go work use .\project-api\新建工作区之…...

MuBlE:为机器人操作任务规划提供了逼真的视觉观察和精确的物理建模

2025-03-05,由华为诺亚方舟实验室、捷克技术大学和帝国理工学院联合开发的MuBlE(MuJoCo and Blender simulation Environment)模拟环境和基准测试。通过结合MuJoCo物理引擎和Blender高质量渲染,为机器人操作任务规划提供了逼真的视…...

基于STC89C52的4x4矩阵键盘对应键值显示测试

引言 在众多单片机应用系统中,用户输入功能至关重要。4x4 矩阵键盘因其布局紧凑、按键数量适中,能有效节省 I/O 口资源,成为常用的输入设备。STC89C52 作为一款经典的 8 位单片机,以其丰富的外设资源和简易的开发流程,为矩阵键盘的应用提供了良好平台。同时,LCD1602 作为…...

android13打基础: timepicker控件

public class Ch4_TimePickerActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener {private TextView tv_time; // 声明一个文本视图对象private TimePicker tp_time; // 声明一个时间选择器对象Overrideprotected void onCreate(Nullable Bund…...

【虚拟仿真】Unity3D中实现激光/射线的发射/折射/反射的效果(3D版)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群:398291828小红书小破站大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。...

【预测】-双注意LSTM自动编码器记录

预测-双注意LSTM自动编码器 1 预测-双注意LSTM自动编码器1.1 复现环境配置1.2 数据流记录1.2.1 **构建Dataset**(1) **X 的取数**(2) **y 的取数**(3) **target 的取数** 1.2.2 **举例说明**(1)**X 的取数**(2)**y 的取数**(3)**target 的取数** 1.2.3 **y 取数的问题****修正后…...

S32K3 MCU时钟部分

S32K3 MCU时钟部分 1.系统时钟发生器SCG 系统时钟发生器SCG模块提供MCU的系统时钟,SCG包含一个系统锁相环SPLL,一个慢速的内部参考时钟SIRC,一个快速内部参考时钟FIRC和系统振荡时钟SOSC. 时钟生成的电路提供了多个时钟分频器和选择器允许为不同的模块提供以特定于该模块的频率…...

java开发常用注解

在Java开发中,注解(Annotation)广泛用于简化代码、配置元数据、框架集成等场景。以下是不同场景下常用的注解分类整理: 一、核心Java注解(内置) Override 表示方法重写父类或接口的方法,编译器会…...

Doris vs ClickHouse 企业级实时分析引擎怎么选?

Apache Doris 与 ClickHouse 同作为OLAP领域的佼佼者,在企业级实时分析引擎该如何选择呢。本文将详细介绍 Doris 的优势,并通过直观对比展示两者的关键差异,同时分享一个企业成功用 Doris 替换 ClickHouse 的实践案例,帮助您做出明…...

解锁Egg.js:从Node.js小白到Web开发高手的进阶之路

一、Egg.js 是什么 在当今的 Web 开发领域,Node.js 凭借其事件驱动、非阻塞 I/O 的模型,在构建高性能、可扩展的网络应用方面展现出独特的优势 ,受到了广大开发者的青睐。它让 JavaScript 不仅局限于前端,还能在服务器端大展身手&…...

学习前端前需要了解的一些概念(详细版)

网站的定义与概述 网站(Website)是一个由网络服务器托管的、通过网络访问的、由相关网页和资源组成的集合。它为用户提供信息、服务或娱乐平台,是现代互联网的重要组成部分。网站的基本功能是展示信息和提供服务,用户可以通过浏览…...

分布式数据库中的四种透明性:逻辑透明、位置透明、分片透明和复制透明

四种透明性 1. 逻辑透明(Logical Transparency)2. 位置透明(Location Transparency)3. 分片透明(Fragmentation Transparency)4. 复制透明(Replication Transparency)注意点&#xf…...

SSM架构 +java后台 实现rtsp流转hls流,在前端html上实现视频播放

序言:书接上文,我们继续 SSM架构 NginxFFmpeg实现rtsp流转hls流,在前端html上实现视频播放 步骤一:把rtsp流转化为hls流,用Java代码进行转换 package com.tools;import java.io.BufferedReader; import java.io.IOExc…...

时序数据库 TDengine 化工新签约:存储降本一半,查询提速十倍

化工行业在数字化转型过程中面临数据接入复杂、实时性要求高、系统集成难度大等诸多挑战。福州力川数码科技有限公司科技依托深厚的行业积累,精准聚焦行业痛点,并携手 TDengine 提供高效解决方案。通过应用 TDengine,力川科技助力化工企业实现…...

信号完整性基础:高速信号的扩频时钟SSC测试

扩频时钟 SSC 是 Spread Spectrum Clock 的英文缩写,目前很多数字电路芯片都支持 SSC 功能,如:PCIE、USB3.0、SATA 等等。那么扩频时钟是用来做什么的呢? SSC背景: 扩频时钟是出于解决电磁干扰(EMI&#…...

深入理解与配置 Nginx TCP 日志输出

一、背景介绍 在现代网络架构中,Nginx 作为一款高性能的 Web 服务器和反向代理服务器,广泛应用于各种场景。除了对 HTTP/HTTPS 协议的出色支持,Nginx 从 1.9.0 版本开始引入了对 TCP 和 UDP 协议的代理功能,这使得它在处理数据库…...

Java为什么是跨平台的

一、Java虚拟机(JVM)的抽象层作用 JVAM是Java跨平台的核心技术。Java代码编译后生成字节码(.class文件),这些字节码并非直接由操作系统执行,而是由JVM解释或编译为特定平台的机器码。 屏蔽底层差异:JVM为不同操作系统提供统一的运行时环境,开…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

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

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

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...