计算机网络常见协议
目录
OSPF(Open Shortest Path First)
NAT(Network Address Translation)
ICMP (Internet Control Message Protocol)
HTTPS(SSL/TLS加密)
HTTPS协议
1. 对称加密
2. 非对称加密
3. 证书验证
4. 回顾https协议传输流程
HTTP TCP UDP
1. TCP:建立可靠的连接
2.UDP:快速但不可靠的传输
3.HTTP:Web应用的通信语言
工作原理
QUIC(了解下 HTTP3 用的)
ARP
DNS(了解他的递归解析流程)
域名解析过程
RTP RTSP RTCP(这三个一般用流媒体了解就行)
RTP(Real-time Transport Protocol)
RTSP(Real-Time Streaming Protocol)
.RTCP(Real-time Transport Control Protocol)
一个远程客户端通过域名向某个子网内的一台电脑里虚拟机请求http接口的全链路
1. 域名解析(DNS)
2. ARP(地址解析协议)
3. 建立TCP连接(TCP三次握手)
4. NAT(网络地址转换)
5. 路由(OSPF或其他路由协议)
6. ARP(子网内地址解析)
7. 虚拟机网络转发
8. HTTP请求处理
9. HTTPS加密(如果使用HTTPS)
10. 响应返回
11. 连接关闭(TCP四次挥手)
12. 流媒体相关(如果涉及RTP/RTSP/RTCP)
总结
OSPF(Open Shortest Path First)
OSPF(开放最短路径优先)协议是一种内部网关协议(IGP),用于在单个自治系统(AS)内部分发IP路由信息。它使用链路状态路由算法,确保每个路由器都有整个网络拓扑的完整视图。OSPF协议是基于IP协议的,使用协议号89。它支持无类别域间路由(CIDR)和变长子网掩码(VLSM),允许网络管理员更有效地使用IP地址空间。
OSPF通过发送Hello包来发现和维护邻居路由器关系,并使用链路状态通告(LSA)来交换链路状态信息。路由器根据这些信息构建链路状态数据库(LSDB),然后使用迪杰斯特拉(Dijkstra)算法计算到达网络中每个目的地的最短路径。
NAT(Network Address Translation)
NAT协议是将IP数据报头中的IP地址转换为另外一个IP地址的过程,主要用于实现私有网络访问公有网络的功能。这种通过使用少量的IP地址代表较多的私有IP地址的方式,将有助于减少IP地址空间的枯竭。
IPv4地址随着用户的增多压力不断增大,但是每一个路由器的IP地址下面都有很多的私有地址,外部消息只需要找到这个路由器,这个路由器把消息找到真正目的主机传递给它即可。
每一个路由器都可以分配很多私有地址,并且不同路由器的私有地址可以重复,通过这种地址转换,能够大大增加地址的容量。
私有地址有三种:
①10.0.0.0~10.255.255.255/8
②172.16.0.0~172.31.255.255/12
③192.168.0.0~192.168.255.255/16
这些地址可以在任何组织或企业内部使用,和其他Internet地址的区别就是,仅能在内部使用,不能作为全球路由地址
对于有Internet访问需求而内部又使用私有地址的网络,就要在组织的出口位置部署NAT网关,在报文离开私网进入Internet时,将源IP替换为公网地址,通常是出口设备的接口地址
一个对外的访问请求在到达目标以后,表现为由本组织出口设备发起,因此被请求的服务端可将响应由Internet发回出口网关
网关再将目的地址替换为私网的源主机地址,发回内部。这样一次由私网主机向公网服务端的请求和响应就在通信两端均无感知的情况下完成了。
依据这种模型,数量庞大的内网主机就不再需要公有IP地址了。NAT的转换示意图如下所示:
ICMP (Internet Control Message Protocol)
ICMP协议简介ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。
HTTPS(SSL/TLS加密)
HTTP 之所以被 HTTPS 取代,最大的原因就是不安全,至于为什么不安全,看了下面这张图就一目了然了
HTTP 在传输数据的过程中,所有的数据都是明文传输,自然没有安全性可言,特别是一些敏感数据,比如用户密码和信用卡信息等,一旦被第三方获取,后果不堪设想。为了解决这问题,需要对数据进行加密。https就是在这种场景下产生的
HTTPS协议
HTTPS 并非独立的通信协议,而是对 HTTP 的扩展,两者关系如下图。也就是说 HTTPS = HTTP + SSL / TLS
HTTPS 的整个通信过程如下图,可以分为两大阶段:证书验证和数据传输阶段,数据传输阶段又可以分为非对称加密和对称加密两个阶段
针对HTTPS的传输过程,下面分别对对称加密,非对称,证书验证进行详细介绍
1. 对称加密
1.1 对称加密传输过程
对称加密,顾名思义就是加密和解密都是使用同一个密钥,常见的对称加密算法有 DES、3DES 和 AES 等。在https协议中,对称加密用于对真正的业务数据进行加密解密,对应图《HTTPS加密、解密、验证及数据传输过程》中步骤7,8。
1.2 对称加密优缺点
优点:算法公开、计算量小、加密速度快、加密效率高,适合加密比较大的数据。
缺点:
- 交易双方需要使用相同的密钥,也就无法避免密钥的传输,而密钥在传输过程中无法保证不被截获,因此对称加密的安全性得不到保证。
- 每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一密钥,这会使得发收信双方所拥有的钥匙数量急剧增长,密钥管理成为双方的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。
1.3 使用对称加密数据传输的问题
客户端和服务器端需要使用相同的密钥,也就无法避免密钥的传输,而密钥在传输过程中无法保证不被截获,因此对称加密的安全性得不到保证。当黑客获取到对称加密的密钥后,可以在网络传输中任意获取用户信息,且可以对用户信息进行篡改。
如上图所示,黑客在网络中获取用户发送的加密数据后,用密钥进行解密后,得到用户信息,并修改了用户的密码password=abcd123。在这种情况下,服务器对获取到的数据进行解密后,得到的用户密码为abcd123。可以想象,如果这个操作是用来配置银行卡密码的,该有多恐怖。
2. 非对称加密
非对称加密,顾名思义,就是加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公钥对外公开;得到该公钥的乙方使用公钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的私钥对加密后的信息进行解密。如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。常用的非对称加密算法是 RSA 算法。
在HTTPS协议中,使用公钥进行加密,私钥进行解密。
2.1 非对称加密传输过程
在https协议中,客户端通过非对称加密把密钥 KEY 发送给服务器。客户端在拿到服务器的公钥后,会生成一个随机码 (用 KEY 表示,这个 KEY 就是后续双方用于对称加密的密钥),然后客户端使用公钥把 KEY 加密后再发送给服务器,服务器使用私钥将其解密,这样双方就有了同一个密钥 KEY,然后双方再使用 KEY 进行对称加密交互数据。在非对称加密传输 KEY 的过程中,即便第三方获取了公钥和加密后的 KEY,在没有私钥的情况下也无法破解 KEY (私钥存在服务器,泄露风险极小),也就保证了接下来对称加密的数据安全。而上面这个流程图正是 HTTPS 的雏形,HTTPS 正好综合了这两种加密算法的优点,不仅保证了通信安全,还保证了数据传输效率。
2.2 非对称加密优缺点:
优点:算法公开,加密和解密使用不同的钥匙,私钥不需要通过网络进行传输,安全性很高。
缺点:计算量比较大,加密和解密速度相比对称加密慢很多。
2.3 非对称加密存在的问题
公开密钥加密方式还是存在一些问题的。那就是无法证明公开密钥本身就是货真价实的公开密钥。比如,正准备和某台服务器建立公开密钥加密方式下的通信时,如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许在公开密钥传输途中,真正的公开密钥已经被攻击者替换掉了。
为了解决上述问题,可以使用由数字证书认证机构(CA,CertificateAuthority)和其相关机关颁发的公开密钥证书。
3. 证书验证
数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上。作为交互中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。它负责产生、分配并管理所有 参与网上交易的个体所需的数字证书,因此是安全电子交易的核心环节。
4. 回顾https协议传输流程
让我们再回顾一遍整个HTTPS数据传输流程:
1) 客户端请求 HTTPS 网址,然后连接到 server 的 443 端口 (HTTPS 默认端口,类似于 HTTP 的80端口)。
2)采用 HTTPS 协议的服务器必须要有一套数字 CA (Certification Authority)证书,证书是需要申请的,并由专门的数字证书认证机构(CA)通过非常严格的审核之后颁发的电子证书 (当然了是要钱的,安全级别越高价格越贵)。颁发证书的同时会产生一个私钥和公钥。私钥由服务端自己保存,不可泄漏。公钥则是附带在证书的信息中,可以公开的。证书本身也附带一个证书电子签名,这个签名用来验证证书的完整性和真实性,可以防止证书被篡改。
3)服务器响应客户端请求,将证书传递给客户端,证书包含公钥和大量其他信息,比如证书颁发机构信息,公司信息和证书有效期等。Chrome 浏览器点击地址栏的锁标志再点击证书就可以看到证书详细信息。
4)客户端解析证书并对其进行验证。如果证书不是可信机构颁布,或者证书中的域名与实际域名不一致,或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。就像下面这样:
如果证书没有问题,客户端就会从服务器证书中取出服务器的公钥A。然后客户端还会生成一个随机码 KEY,并使用公钥A将其加密。
5)客户端把加密后的随机码 KEY 发送给服务器,作为后面对称加密的密钥。
6)服务器在收到随机码 KEY 之后会使用私钥B将其解密。经过以上这些步骤,客户端和服务器终于建立了安全连接,完美解决了对称加密的密钥泄露问题,接下来就可以用对称加密愉快地进行通信了。
7)服务器使用密钥 (随机码 KEY)对数据进行对称加密并发送给客户端,客户端使用相同的密钥 (随机码 KEY)解密数据。
8)双方使用对称加密愉快地传输所有数据。
HTTP TCP UDP
TCP和UDP都是传输层协议,它们的主要区别在于TCP提供可靠的数据传输,而UDP提供快速但不可靠的传输。HTTP则是一个应用层协议,通常运行在TCP之上,用于Web浏览器和服务器之间的通信(也是前后端交互使用最多的通信)。
对比表格(面试从这几个方面说就行)
TCP、UDP和 HTTP 的详细介绍
1. TCP:建立可靠的连接
工作原理
TCP(传输控制协议)是一种面向连接、可靠的协议。它的工作过程可以比作打电话:首先,拨号(建立连接);然后,进行通话(数据传输);最后,挂断电话(断开连接)。
建立连接(三次握手):
客户端发送一个SYN(同步序列编号)包到服务器以开启一个连接。
服务器响应以SYN-ACK(同步确认)包确认收到。
客户端回送一个ACK(确认)包,完成连接建立。
简易速记版
真实版
第一次握手:客户端将请求报文标志位SYN置为1,请求报文的Sequence Number字段(简称seq)中填入一个随机值J,并将该数据包发送给服务器端,客户端进入SYN_SENT状态,等待服务器端确认。
第二次握手:服务器端收到数据包后由请求报文标志位SYN=1知道客户端请求建立连接,服务器端将应答报文标志位SYN和ACK都置为1,应答报文的Acknowledgment Number字段(简称ack)中填入ack=J+1,应答报文的seq中填入一个随机值K,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态。
第三次握手:客户端收到应答报文后,检查ack是否为J+1,ACK是否为1,如果正确则将第三个报文标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。
数据传输:一旦连接建立,数据可以双向传输。TCP保证数据按序到达,没有丢失或错误。
断开连接(四次挥手):通信结束后,双方各自发送FIN(结束)包和ACK包来关闭连接。
2.UDP:快速但不可靠的传输
工作原理
UDP(用户数据报协议)是一种无连接、不可靠的协议。它就像寄信,你把信件投入邮筒,但不保证信件能够到达目的地。
无连接:UDP不需要建立和断开连接,数据可以直接发送给接收者。
不可靠性:UDP不保证数据的顺序、完整性或安全性。如果数据在传输过程中丢失,UDP不会尝试重新发送。
3.HTTP:Web应用的通信语言
工作原理
HTTP(超文本传输协议)是一种无
状态的应用层协议,它基于TCP协议。每次HTTP请求都是独立的,服务器不会记住之前的请求。
- 无状态:每个请求都包含了完成操作所需的全部信息。
- 基于请求/响应:客户端发送一个请求到服务器,服务器返回一个响应。
QUIC(了解下 HTTP3 用的)
基于UDP的传输协议,用于HTTP/3。
-
特点:
-
内置TLS加密,减少握手延迟。
-
支持多路复用,避免队头阻塞。
-
快速连接迁移(切换网络时无需重新握手)。
-
-
适用场景:高延迟、不稳定网络环境。
ARP
ARP(地址解析协议,Address Resolution Protocol) 是一种网络层协议,用于将IP地址映射到MAC地址。ARP通常用于局域网(LAN)中,帮助设备找到通过IPv4网络通信时的硬件地址。
在局域网内,当一台设备(例如计算机)需要与另一台设备通信时,网络协议栈首先根据目标设备的IP地址来查找目标设备的MAC地址。ARP就是用来解决这个问题的协议,它允许一个设备通过广播的方式在局域网内查询某个IP地址对应的MAC地址。
DNS(了解他的递归解析流程)
DNS即域名系统(Domain Name System)是用来将域名与IP地址建议映射的协议。
DNS服务器是高可用、高并发和分布式的树桩层次结构
- 根DNS服务器:返回顶级域DNS的服务器IP地址
- 顶级域DNS服务器:返回权威DNS服务器IP地址
- 权威DNS服务器:返回相应主机的IP地址
- 本地域名服务器:如果设计通过DHCP配置,本地DNS由你的网络服务商(ISP),如电信移动等自动分配,它通常就在你的网络服务商的某个机房。
域名解析过程
域名的解析总体可以分为两大步骤。
1.本级向本地域名服务器(本地DNS)发送DNS请求报文,报文里携带需要查询的域名如www.163.com。
2.本地DNS收到来自客户端的请求。如果能找到www.163.com,它就直接返回IP地址。如果没有,本地DNS去问它的根域名服务器。
3.根域名服务器收到来自本地DNS的请求,发现后缀是.com,然后发送顶级域名服务器的地址
4.本地DNS向顶级DNS请求,顶级域名服务器返回www.163.com区域的权威DNS服务器的地址。
5.本地DNS转向问权威DNS服务器,权限DNS服务器查询后将对应IP地址告诉本地DNS。
6.本地DNS将IP地址返给客户端,客户端和目标建立连接。
RTP RTSP RTCP(这三个一般用流媒体了解就行)
-
RTP(Real-time Transport Protocol)
-
作用:用于实时传输音视频数据。
-
特点:
-
基于UDP,支持时间戳和序列号。
-
通常与RTCP配合使用。
-
-
适用场景:视频会议、流媒体。
RTSP(Real-Time Streaming Protocol)
-
作用:用于控制流媒体服务器(如播放、暂停)。
-
特点:
-
类似HTTP的文本协议。
-
通常与RTP配合使用。
-
-
适用场景:视频点播、直播。
.RTCP(Real-time Transport Control Protocol)
-
作用:监控RTP传输质量,提供反馈信息。
-
特点:
-
发送接收报告、丢包率、延迟等统计信息。
-
与RTP共用端口号。
-
-
适用场景:实时音视频传输的质量控制。
一个远程客户端通过域名向某个子网内的一台电脑里虚拟机请求http接口的全链路
1. 域名解析(DNS)
-
客户端行为:
-
客户端输入目标域名(如
example.com
)。 -
客户端检查本地DNS缓存,如果没有缓存,向本地DNS服务器发送DNS查询请求。
-
-
DNS解析过程:
-
本地DNS服务器向根DNS服务器查询。
-
根DNS服务器返回顶级域(TLD)服务器地址。
-
本地DNS服务器向TLD服务器查询。
-
TLD服务器返回权威DNS服务器地址。
-
本地DNS服务器向权威DNS服务器查询,获得目标域名的IP地址(如
203.0.113.1
)。
-
-
结果:客户端获得目标服务器的IP地址。
2. ARP(地址解析协议)
-
客户端行为:
-
客户端需要将数据包发送到网关(默认路由)。
-
客户端通过ARP协议获取网关的MAC地址。
-
-
ARP过程:
-
客户端发送ARP请求广播,询问网关的MAC地址。
-
网关回复ARP响应,包含自己的MAC地址。
-
-
结果:客户端知道网关的MAC地址,可以将数据包发送到网关。
3. 建立TCP连接(TCP三次握手)
-
客户端行为:
-
客户端向目标IP地址(
203.0.113.1
)和端口(HTTP默认80或HTTPS默认443)发起TCP连接请求。 -
发送SYN包,开始三次握手。
-
-
TCP三次握手:
-
客户端发送SYN包到服务器。
-
服务器回复SYN-ACK包。
-
客户端发送ACK包,连接建立。
-
-
结果:客户端和服务器之间建立了一条可靠的TCP连接。
4. NAT(网络地址转换)
-
子网网关行为:
-
客户端的数据包到达子网网关。
-
网关检查目标IP地址(
203.0.113.1
)。 -
如果目标IP是公网IP,网关将数据包的源IP地址(客户端的私有IP)转换为网关的公网IP,并记录NAT表项。
-
-
结果:数据包被正确转发到目标服务器。
5. 路由(OSPF或其他路由协议)
-
网络行为:
-
数据包经过多个路由器,路由器根据OSPF等路由协议选择最优路径。
-
数据包最终到达目标子网的网关。
-
-
结果:数据包被路由到目标子网。
6. ARP(子网内地址解析)
-
目标子网网关行为:
-
目标子网网关接收到数据包,检查目标IP地址(
192.168.1.100
,假设是虚拟机所在主机的IP)。 -
网关通过ARP协议获取目标主机的MAC地址。
-
-
ARP过程:
-
网关发送ARP请求广播,询问目标主机的MAC地址。
-
目标主机回复ARP响应,包含自己的MAC地址。
-
-
结果:网关知道目标主机的MAC地址,可以将数据包发送到目标主机。
7. 虚拟机网络转发
-
主机行为:
-
目标主机接收到数据包,检查目标端口。
-
如果虚拟机是通过端口映射或桥接网络配置的,主机会将数据包转发到虚拟机。
-
-
虚拟机行为:
-
虚拟机接收到数据包,检查目标端口和HTTP请求。
-
虚拟机内的Web服务器(如Nginx、Apache)处理请求。
-
8. HTTP请求处理
-
Web服务器行为:
-
Web服务器解析HTTP请求(如GET或POST)。
-
根据请求路径和参数,执行相应的业务逻辑。
-
生成HTTP响应(如返回JSON数据或HTML页面)。
-
-
结果:Web服务器将响应数据发送回客户端。
9. HTTPS加密(如果使用HTTPS)
-
TLS/SSL握手:
-
客户端发送ClientHello,支持加密套件列表。
-
服务器返回ServerHello,选择加密套件并发送证书。
-
客户端验证证书,生成预主密钥并用服务器公钥加密发送。
-
双方通过预主密钥生成会话密钥,用于对称加密通信。
-
-
结果:HTTP数据通过TLS加密传输,确保安全性。
10. 响应返回
-
虚拟机行为:虚拟机将HTTP响应数据封装成TCP数据包,发送回主机。
-
主机行为:主机将数据包转发到子网网关。
-
网关行为:网关根据NAT表项将数据包的目标IP地址转换为客户端的私有IP地址。
-
客户端行为:客户端接收到HTTP响应,解析并显示结果(如渲染网页或处理数据)。
11. 连接关闭(TCP四次挥手)
-
TCP四次挥手:
-
客户端发送FIN包,请求关闭连接。
-
服务器回复ACK包,确认关闭请求。
-
服务器发送FIN包,请求关闭连接。
-
客户端回复ACK包,确认关闭请求。
-
-
结果:TCP连接关闭。
12. 流媒体相关(如果涉及RTP/RTSP/RTCP)
-
RTP:用于传输音视频数据。
-
RTSP:用于控制流媒体服务器(如播放、暂停)。
-
RTCP:用于监控RTP传输质量。
-
适用场景:如果HTTP接口涉及流媒体传输,这些协议会被使用。
总结
在整个链路中,以下协议被使用:
-
DNS:域名解析。
-
ARP:获取MAC地址。
-
TCP:建立可靠连接。
-
NAT:地址转换。
-
OSPF:路由选择。
-
HTTP/HTTPS:应用层通信。
-
TLS/SSL:加密通信(如果使用HTTPS)。
-
RTP/RTSP/RTCP:流媒体传输(如果涉及)。
通过梳理这些协议的作用和交互过程,可以清晰地理解远程客户端访问子网内虚拟机HTTP接口的全链路。
相关文章:

计算机网络常见协议
目录 OSPF(Open Shortest Path First) NAT(Network Address Translation) ICMP (Internet Control Message Protocol) HTTPS(SSL/TLS加密) HTTPS协议 1. 对称加密 2. 非对称加密 3. 证书验证 4. 回顾https协议传输流程 HTTP TCP UDP 1. TCP&a…...

SCSSA-BiLSTM基于改进麻雀搜索算法优化双向长短期记忆网络多特征分类预测Matlab实现
SCSSA-BiLSTM基于改进麻雀搜索算法优化双向长短期记忆网络多特征分类预测Matlab实现 目录 SCSSA-BiLSTM基于改进麻雀搜索算法优化双向长短期记忆网络多特征分类预测Matlab实现分类效果基本描述程序设计参考资料 分类效果 基本描述 SCSSA-BiLSTM基于改进麻雀搜索算法优化双向长…...

基于Java+SpringBoot+Vue的前后端分离的体质测试数据分析及可视化设计
基于JavaSpringBootVue的前后端分离的体质测试数据分析及可视化设计 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码…...

Ansible实战:如何正确选择 command 和shell模块?
在使用Ansible进行自动化运维时,command 和 shell 模块是我们执行命令的好帮手。虽然它们看起来很相似,但在功能特性和适用场景上其实有着明显的不同。正确选择合适的模块不仅能够提高任务的效率,还能帮助我们规避一些潜在的风险。在这篇文章…...

机器学习:监督学习与非监督学习
监督学习是利用带有标签的数据进行训练,模型通过学习输入和输出之间的关系来进行预测。也就是说,数据集中既有输入特征,也有对应的输出标签,模型的目标是找到从输入到输出的映射关系。 而无监督学习则使用没有标签的数据进行训练,模型的任务是发现数据中的内在结构或模式…...

近红外简单ROI分析matlab(NIRS_SPM)
本次笔记主要想验证上篇近红外分析是否正确,因为叠加平均有不同的计算方法,一种是直接将每个通道的5分钟实时长单独进行叠加平均,另一种是将通道划分为1分钟的片段,将感兴趣的通道数据进行对应叠加平均,得到一个总平均…...

运输层安全协议SSL
安全套接字层 SSL (Secure Socket Layer) SSL 作用在端系统应用层的 HTTP 和运输层之间,在 TCP 之上建立起一个安全通道,为通过 TCP 传输的应用层数据提供安全保障。 应用层使用 SSL 最多的就是 HTTP,但 SSL 并非仅用于 HTTP,而是…...
“扣子”开发之四:与千帆AppBuilder比较
上一个专题——“扣子”开发——未能落地,开始抱着极大的热情进入,但迅速被稚嫩的架构模型折磨打击,硬着头皮坚持了两周,终究还是感觉不实用不趁手放弃了。今天询问了下豆包,看看还有哪些比较好的AI开发平台࿰…...

Asp .Net Core 实现微服务:集成 Ocelot+Nacos+Swagger+Cors实现网关、服务注册、服务发现
什么是 Ocelot ? Ocelot是一个开源的ASP.NET Core微服务网关,它提供了API网关所需的所有功能,如路由、认证、限流、监控等。 Ocelot是一个简单、灵活且功能强大的API网关,它可以与现有的服务集成,并帮助您保护、监控和扩展您的…...
62_Redis服务器集群优化
Redis集群虽然具备高可用特性,且能实现自动故障恢复,但是如果使用不当,也会存在一些问题,总结如下。 集群完整性问题集群带宽问题数据倾斜问题客户端性能问题命令的集群兼容性问题Lua和事务问题1.集群完整性问题 在 Redis 集群的默认配置下,当节点检测到存在至少一个哈希…...

【React】静态组件动态组件
目录 静态组件动态组件创建一个构造函数(类)使用 class 实现组件**使用 function 实现类组件** 静态组件 函数组件是静态组件: 组件第一次渲染完毕后,无法基于内部的某些操作让组件更新「无法实现自更新」;但是,如果调用它的父组…...

深度学习中的卷积和反卷积(四)——卷积和反卷积的梯度
本系列已完结,全部文章地址为: 深度学习中的卷积和反卷积(一)——卷积的介绍 深度学习中的卷积和反卷积(二)——反卷积的介绍 深度学习中的卷积和反卷积(三)——卷积和反卷积的计算 …...

ASP.NET Core - IStartupFilter 与 IHostingStartup
ASP.NET Core - IStartupFilter 与 IHostingStartup 1. IStartupFilter2 IHostingStartup2.5.1 创建外部程序集2.5.2 激活外部程序集 1. IStartupFilter 上面讲到的方式虽然能够根据不同环境将Startup中的启动逻辑进行分离,但是有些时候我们还会可以根据应用中的功能…...

【零基础租赁实惠GPU推荐及大语言模型部署教程01】
租赁GPU推荐及大语言模型部署简易教程 1 官网地址2 注册账号及登录3 租用GPU3.1 充值(不限制充值最低金额,1元亦可)3.2 容器实例(实际就是你租用的GPU电脑)3.3 选择镜像(选择基础环境:框架版本和…...
接口传参 data格式和json格式区别是什么
接口传参 data格式和json格式区别是什么 以下是接口传参 data 格式和 JSON 格式的区别: 定义和范围 Data 格式: 是一个较为宽泛的概念,它可以指代接口传递参数时所使用的任何数据的组织形式。包括但不限于 JSON、XML、Form 数据、纯文本、二进…...
踏上 C++ 编程之旅:开篇之作
踏上 C 编程之旅:开篇之作 在计算机编程的广袤天地中,C 宛如一座巍峨的高峰,吸引着无数开发者攀登探索。今天,就让我们一同开启这段充满挑战与惊喜的 C 编程之旅,在代码的世界里开辟属于自己的道路。 一、为什么选择…...

docker在不删除容器的情况下修改端口映射
注意:必须先停止docker服务!!!! 1) 停止容器 2) 停止docker服务(systemctl stop docker) 3) 修改这个容器的hostconfig.json和config.v2.json文件中的端口 先查看容器id docker inspect jenkins 进入该目录 hostcon…...
Mysql tinyint与Java的数据类型的对应关系
参考资料 理解误区——mysql中tinyint与Java的数据类型的对应关系;tinyint(1) 与tinyint(4)的区别 1.1 tinyint字段取值 数据库字段类型为 tinyint,值为0或1,直接通过SQL语句查询的话,0会取出false;1会取出true目前就想取出的结果为 0 或 1 selectpg_id ,pg_name…...

mac intel芯片下载安卓模拟器
一、调研 目前主流两个模拟器: 雷神模拟器 不支持macosmumu模拟器pro版 不支持macos intel芯片 搜索到mumu的Q&A中有 “Intel芯片Mac如何安装MuMu?” q&a🔗:https://mumu.163.com/mac/faq/install-on-intel-mac.html 提…...

掌握 Ubuntu 终端 mv 与 rename 命令的高效重命名使用方法
在日常的计算任务中,文件重命名是一个经常性的需求。对于熟悉图形用户界面(GUI)的人来说,通过右键点击并选择“重命名”选项,这个过程简单直接。然而,当涉及到大量文件或需要自动化流程时,命令行…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...