【网络】网络层——IP协议

 > 作者:დ旧言~
> 座右铭:松树千年终是朽,槿花一日自为荣。

> 目标:了解在网络层下的IP协议。

> 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安!

> 专栏选自:网络

> 望小伙伴们点赞👍收藏✨加关注哟💕💕

​​

 一、前言

前面我们已经学习了网络的基础知识,对网络的基本框架已有认识,算是初步认识到网络了,如果上期我们的学习网络是步入基础知识,那么这次学习的板块就是基础知识的实践,我们今天的板块是学习网络重要之一,学习完这个板块对虚幻的网络就不再迷茫!!!

 二主体

学习【网络】网络层——IP协议咱们按照下面的图解:

2.1 TCP和IP的关系

联系:

  • TCP提供了数据包跨网络发送的策略,比如超时重传,确认应答,流量控制,拥塞控制,滑动窗口,捎带应答,延时应答等等,这些都是数据包在网络发送时,如果出现了不可靠的问题,数据包应该怎么处理?这些都是由TCP来控制。
  • IP层提供了数据包跨网络发送的能力,比如IP层会通过报头中的目的IP来查路由表,确定数据包的下一跳位置,IP层只负责将数据包交付到下一跳,至于传输过程中出现了什么问题,这是TCP层提供策略来进行解决的,IP层不关心,也不会做什么。

总结:

TCP提供数据跨网络传输的策略,而IP提供数据跨网络传输的能力,两者合在一起就一定能够保证数据包可靠的跨网络从主机A发送到主机B,这也就是为什么很多人叫TCP/IP协议的原因,因为这两个协议可以可靠的保证数据包跨网络送到目标主机,而这正就是网络通信的本质。

2.2 IP协议报文

图解:

解析:

  • 4 位版本号(version):指定 IP 协议的版本,对于 IPv4 来说,就是 4。
  • 4 位首部长度(header length):表示IP报头的长度,以4字节为单位。
  • 8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要; 对于ftp这样的程序,最大吞吐量比较重要。
  • 16位总长度(total length): IP报文(IP报头+有效载荷) 的总长度,用于将各个IP报文进行分离。
  • 16位标识(id):唯一的标识主机发送的报文。如果 IP 报文在数据链路层被分片了,那么每一个片里面的这个 id 都是相同的。
  • 3位标志字段:第一位保留,表示暂时没有规定该字段的意义。第二位表示禁止分片,表示如果报文长度超过MTU,IP模块就会丢弃该报文。第三位表示“更多分片”,如果报文没有进行分片,则该字段设置为0,如果报文进行了分片,则除了最后一个分片报文设置为0以外,其余分片报文均设置为1。
  • 13位片偏移(framegament offset):分片相对于原始数据开始处的偏移,表示当前分片在原数据中的偏移位置,实际偏移的字节数是这个值× 8得到的。因此除了最后一个报文之外,其他报文的长度必须是8的整数倍,否则报文就不连续了。
  • 8位生存时间(Time To Live, TTL):数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路由, TTL -= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环。
  • 8位协议:表示上层协议的类型。
  • 16位头部校验和:使用CRC进行校验,来鉴别数据报首部是否损坏,但不检验数据部分。
  • 32位源IP地址和32位目的IP地址:表示发送端和接收端所对应的IP地址。
  • 选项字段:不定长,最多40字节。

IP报头在内核当中本质上就是一个位段类型,给数据封装IP报头时,实际上就是用该位段类型定义一个变量,然后填充IP报头当中的各个属性字段,最后将这个IP报头拷贝到数据的首部,至此便完成了IP报头的封装。

IP协议如何将报头和有效载荷分离:

IP 报文是由固定的 20 字节的报头、选项字段和数据组成的。当收到一个 IP 报文时,先读取 IP 报文的前 20 个字节,再根据 4 位首部长度来判断该报文是否有选项字段。如果有,则继续读取选项字段。读取完选项字段,这样就完成解包,即报头与有效载荷分离。

IP协议如何将有效载荷交付给上一层哪一个协议:

在IP报头当中有一个字段叫做8位协议,该字段表示的就是上层协议的类型,IP就是根据该字段判定应该将分离出来的有效载荷交付给上层的哪一个协议的,该字段是发送方的IP层从上层传输层获取到数据后填充的,比如是上层TCP交给IP层的数据,那么该数据在封装IP报头时的8位协议填充的就是TCP对应的编号。

32位源IP地址和32位目的IP地址:

  • 数据在网络传输过程中会遇到一个一个的路由器,这些路由器会帮助网络当中的数据进行路由转发,使得网络当中的数据慢慢趋近于目标主机,路由器在帮助数据进行路由转发时,会提取出该数据的IP报头当中的目的IP地址,并以此作为数据路由转发的重要依据。
  • 当接收方收到了发送端发送过来的数据是,接收方可能也想要给发送方发送数据,因此发送端在发送数据时,除了需要知名该数据的目的IP地址,还需要指明该数据的源IP地址,也就是发送端的IP地址,即使接收端收到数据后没有数据项要发送给发送端,但至少接收端需要向发送端发送一个响应报文,表明发送端发送的数据已经被接收端可靠的收到了,因此发送出去的数据除了需要指明该数据的目的IP地址,还需要指明该数据的源IP地址。
  • 这里我们需要注意的是,发送数据时我们不需要指明发送方的源IP地址和源端口号,因为传输层和网络层都是在操作系统内核当中实现的,数据在进行封装时,系统会自行填充上对应的源IP地址和源端口号。

2.3 IP地址的划分

2.3.1 旧版IP地址的划分

划分:

IP地址是由两部分组成的:目标网络+目标主机

任何主机都是在一个子网里面的,子网里面有多台主机。我们要跨网络发送给这个主机,我们就要先将消息发到该主机处于的子网,子网再将这个消息转发给主机。

为什么要进行网段划分:

其实就是为了方便互联网能够快速定位一台主机,因为每次确认主机时,排查的效率高,一次能够排除多个子网,这也是为什么IP要分为目标网络和目标主机的原因。

分类划分:

A 类地址:

  • 范围:1.0.0.0 到 126.0.0.0
  • 网络号:第一个字节(8位)用于网络标识,剩下的 24 位用于主机。
  • 最大主机数:约 16,777,214(2^24 - 2,减去两个保留地址:全0和全1)。
  • 适用场景:A 类地址通常分配给大型组织或互联网服务提供商,因为它们允许大量主机。

B 类地址:

  • 范围:128.0.0.0 到 191.255.0.0
  • 网络号:前两个字节(16位)用于网络标识,剩下的 16 位用于主机。
  • 最大主机数:约 65,534(2^16 - 2)。
  • 适用场景:B 类地址通常分配给中等规模的组织或网络。

C 类地址:

  • 范围:192.0.0.0 到 223.255.255.0
  • 网络号:前三个字节(24位)用于网络标识,剩下的 8 位用于主机。
  • 最大主机数:约 254(2^8 - 2)。
  • 适用场景:C 类地址通常分配给小型组织或私人网络。

D 类地址:

  • 范围:224.0.0.0 到 239.255.255.255
  • 特点:D 类地址用于多播(Multicast),不分配给单独的主机或网络。
  • 适用场景:用于一次向多个目标发送数据包,例如视频流或音频流。

E 类地址:

  • 范围:240.0.0.0 到 255.255.255.255
  • 特点:E 类地址是实验性地址,不常用,保留用于特定用途。
  • 适用场景:用于实验、研究或未来网络发展。

2.3.2 新版IP地址的划分

CIDR 它允许将IP地址按需分配给网络,而不受固定类别的限制。CIDR 地址由两部分组成:网络前缀和子网掩码:

  1. 网络前缀标识了网络的唯一标识符。
  2. 子网掩码指示了网络地址中哪部分是网络前缀,哪部分是主机地址。

CIDR中的关键概念包括:

  • 前缀表示法:CIDR使用前缀表示法来表示IP地址范围。这个前缀表示法包括IP地址,后面跟着一个斜线和一个数字,表示子网掩码的长度。例如,192.168.1.0/24表示一个具有24位子网掩码的子网,它包括192.168.1.0到192.168.1.255的所有IP地址。
  • 聚合:CIDR允许多个连续的IP地址范围被聚合成一个更大的范围。这有助于减小路由表的大小,提高路由效率。
  • 无类别路由:CIDR不再依赖于A、B、C类地址的划分,而是根据需要分配地址范围,这样可以更好地满足不同组织的需求。
  • 节省地址空间:CIDR允许更灵活地分配IP地址,减少了地址空间的浪费,因为每个组织只分配所需的地址范围。

IP地址本身就具有特殊用途:

  • 将IP地址中的主机号全部设为0,就称为网络号,代表这个局域网。比如192.168.0.0
  • 将IP地址中的主机号全设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包。比如192.168.255.255
  • 127.*的IP地址用于本地环回(loop back)测试,通常是127.0.0.1

2.4 私有IP和公网IP


2.4.1 IP地址不足

不足:

  • 给全世界的入网设备各分配一个ip地址的话,是不够的。
  • ip地址也不是按照入网主机来分的,而是按照入网主机上面的网卡来分的,每个网卡都至少要有一个ip地址,一般情况下一张网卡都只配有一个ip地址,但如果你想给网卡配置多个ip地址这也是可以的,比如你想让这块网卡与多个子网(网段)进行通信。
  • 市面现在主流的笔记本计算机,都会配有两张网卡集成在主板上,一张是有线网卡,一张是无线网卡,所以如果真要是给每个入网设备都分配一个全球唯一的ip地址,那绝对是远远不够的!

2.4.2 私有IP

概念:

  • 私有IP地址是在互联网上不被路由的IP地址,专门为组织内部网络(如企业内部、学校等)设计。这意味着这些地址只能在局域网(LAN)内部使用,不能直接用于互联网通信。然而,通过网络地址转换(NAT),它们可以用于互联网通信。
  • 局域网是不直接连接到公网上的,所以理论上局域网使用任意的ip地址都可以,但RFC1918规定了组建局域网时只能使用的ip地址,我们将这些ip地址称为私有ip,之前我们说ip地址具有唯一性,指的是公网ip具有唯一性,内网ip是可以重复的,这正好能解决ip地址不足的问题,因为大量的局域网主机都使用的是重复的内网ip地址。

内网ip地址可划分为三类:

  1. 10.* :也是10.0.0.0 - 10.255.255.255 (10.0.0.0/8),/8表示网络部分占据了前8位,剩下的24位用于主机部分。前8位为固定网络号用法,共1677,7216个地址,后面的24个比特位,可以通过子网掩码来划分出具体的网络号位数和主机号位数(公司内网的ip该类地址比较常见)
  2. 172.16. *到172.31. *:也是172.16.0.0 - 172.31.255.255 (172.16.0.0/12)。/12表示网络部分占据了前12位,剩下的20位用于主机部分。同样的,前12位为固定网络号用法,共104,8576个地址,后面的16个比特位,可以通过子网掩码来划分出具体的网络号位数和主机号位数(公司内网和学校中,该类ip地址比较常见)
  3. 192.168. *:也是192.168.0.0 - 192.168.255.255 (192.168.0.0/16)。/16表示网络部分占据了前16位,剩下的16位用于主机部分。同样的,前16位为固定网络号用法,共65536个地址,后面的16个比特位,可以通过子网掩码来划分出具体的网络号位数和主机号位数(家庭中的ip地址一般这类比较常见)

将局域网中的ip地址设为私有IP地址范围之外的地址,会有什么后果:

  • 如果在局域网内使用了一个已经在互联网上被分配的公共IP地址,那么局域网设备将无法访问该公共IP地址对应的互联网服务。
  • 如果局域网需要通过网络地址转换(NAT)与互联网通信,使用公共IP地址范围可能会导致NAT功能出现问题。
  • 使用公共IP地址范围可能会违反互联网服务提供商(ISP)的使用条款,甚至可能触犯相关法律。

2.4.3 公网IP

公网IP(Public IP):

  • 公网IP地址是可以在全球互联网上访问的IP地址,它们是唯一的,用于标识设备或服务器在互联网上的位置。
  • 当您通过互联网与外部资源通信时,通常使用公网IP地址。
  • 公网IP地址通常由互联网服务提供商(ISP)分配给您的路由器或服务器。
  • 每个互联网连接都需要至少一个公网IP地址,以便在全球互联网上进行通信。

2.5 理解运营商在上网中的作用

作用:

运营商通常是指提供移动通信、互联网、有线电视等通信服务的公司或组织。这些公司负责搭建和维护通信基础设施,例如移动电话网络、互联网网络和有线电视网络,使人们能够进行语音通话、数据传输和观看电视节目。

一个家庭想要能够上网,都需要做哪些准备工作:

  • 首先肯定是有运营商,在你家附近有网络覆盖。
  • 你这个家庭联系运营商进行光纤入户。
  • 工作人员上门安装调制解调器(就是我们平常所说的 “猫儿”)和 无线路由器。
  • 工作人员给你开户,配置路由器账号、密码(这套账号密码是运营商认证你们的账号密码)。
  • 配置你自己的账号、密码(这套账号密码是你登录路由器连接网络所需要使用的,账号通常可直接设置为你的手机号)。这套账号密码是用来认证连接的成员的。
  • 正常上网,正常按月按年交费。

2.6 路由器

路由过程:

是指在计算机网络中,数据包从源设备发送到目标设备的过程,其中涉及到多个网络设备(如路由器和交换机)的协作工作,以确保数据包能够正确地从源地址到目标地址进行传输。路由的过程,就是这样一跳一跳(Hop by Hop) “问路” 的过程。所谓 “一跳” 就是数据链路层中的一个区间,具体在以太网中指从源 MAC 地址到目的 MAC 地址之间的帧传输区间。

IP数据包的传输过程中会遇到很多路由器,当 IP 数据包到达路由器时,路由器会先查看目的 IP。然后路由器才会决定这个数据包是能直接发送给目标主机还是需要发送给下一个路由器,如此反复,一直达到目标 IP 所在的局域。

路由器的查找结果可能有以下三种:

  1. 路由器经过路由表查询后,得知该数据下一跳应该跳到哪一个子网。
  2. 路由器经过路由表查询后,没有发现匹配的子网,此时路由器就会将该数据转发给默认路由。
  3. 路由器经过路由表查询后,得知该数据的目标网络就是当前所在的网络,此时路由器就会将该数据转发给当前网络中对应的主机。

2.6.1 路由表查询的具体过程

每个路由器内部都会维护一个路由表,我们可以通过route命令查看云服务器上对应的路由表:

  • Destination代表的是目的网络地址。
  • Gateway代表的是下一跳地址。
  • Genmask代表的是子网掩码。
  • Flags中,U标志表示此条目有效(可以禁用某些条目)G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发。
  • Iface代表的是发送接口。

过程:

  • 当IP数据包到达路由器时,路由器就会用该数据的目的IP地址,依次与路由表中的子网掩码 Genmask进行“按位与”操作,然后将结果与子网掩码对应的目的网络地址Destination进行比对,如果匹配则说明该数据包下一跳就应该跳去这个子网,此时就会将该数据包通过对应的发送接口Iface发出。
  • 如果将该数据包的目的IP地址与子网掩码进行“按位与”后,没有找到匹配的目的网络地址,此时路由器就会将这个数据包发送到默认路由,也就是路由表中目标网络地址中的default。可以看到默认路由对应的Flags是UG,实际就是将该数据转给了另一台路由器,让该数据在另一台路由器继续进行路由。
  • 数据包不断经过路由器路由后,最终就能到达目标主机所在的目标网络,此时就不再根据该数据包目的IP地址当中的网络号进行路由了,而是根据目的IP地址当中的主机号进行路由,最终根据该数据包对应的主机号就能将数据发送给目标主机了。

2.6.2 路由表生成算法

路由表可以由网络管理员手动维护(静态路由),也可以通过一些算法自动生成(动态路由)。路由表相关的生成算法:距离向量算法、LS 算法、Dijkstra 算法等。

IP 协议只是依据目的 IP 地址、子网划分、路由表查找与路由算法提供了数据转发的策略,并没有实现设备转发的具体功能。具体的设备转发就是局域网内数据转发的问题,这是由下一层数据链路层来解决的。

2.7 IP协议的分片

概念剖析:

真正在路由器和之间传递的确实是IP报文,但在一个局域网内部,真正传输的是MAC帧,这也就意味着,真正在局域网内传输的是数据帧,也就是说每个局域网内都会按照数据帧的方式传输,到达局域网中的下一跳位置后,下一跳位置的网络层来决定下下一条的位置应该在哪,确定好之后,在下一个网段中继续用数据帧来传输,所以真正在网线上跑的是数据帧,而不是IP报文。

而数据链路层有MAC帧协议,常见的就是以太网协议,以太网有规定,MAC帧的有效载荷不能超过MTU(maximum transmisson unit 最大传输单元)1500字节,IP报文能够决定传输数据的大小吗?并不能,控制传输数据大小的是TCP,TCP是面向字节流的,它可以控制什么时候发送数据,发送的时候发送多少,这也就是为什么滑动窗口中有多个数据段,而不是一个数据段,因为MTU会限制单个数据包的有效载荷不能超过1500字节,所以TCP在通过滑动窗口发送数据段时,都是发送多个数据段,而不是将多个数据段合并成一个大数据段进行发送。

总结:

  • 链路层由于物理特征的缘故,无法一次转发过大的数据 。每个链路层协议有其最大传输单元(MTU),在以太网中通常为1500字节。因此,一次转发的报文大小受到MTU的限制。
  • 分片是在网络层(IP层)进行的 :当IP数据包大小超过某个链路或节点的最大传输单元(MTU)时,路由器或主机会将原始数据报进行分片,使其大小适合于网络上的传输。
  • 分片后的数据包会带有相同的源和目的地址 ,但是会有不同的标识符以及分片偏移字段,以便接收方能够将分片正确地重组成原始的数据报。

分片的缺点:

1、对UDP的影响

  • UDP没有发送缓冲区,应用层要发多少,到了网络层就是多少,这个时候就得老老实实分片。分片会增加丢包的概率,一旦某个分片报文丢了导致无法组装就会将相关的分片报文全部丢弃。(是否相关可以根据16位分片标识来判断)

2、对TCP的影响

  • 因为TCP有缓冲区的存在,想发多少、什么时候发都由TCP决定,TCP可以做到自己控制数据段的长度,然后再传到网络层,此时就无需网络层来分片了。
  • 但TCP每次可以发送的数据长度不是无限大,受制于MTU和对方主机的MSS(Max Segment Size),即最大消息长度。
  • 受制于MTU的意思是,为了不分片,TCP每次最多携带的数据是多少。不同系统的MTU可能有所不同,MTU减去TCP报头和IP报头的大小,就是TCP每次最多可以发送的数据量。
  • 受制于对方主机的MSS的意思是,对方每次最多可以接收多少。双方在发送SYN的时候会在TCP头部写入自己可以支持的MSS值,在得知对方的MSS以后,选取较小的作为最终MSS。MSS的值就是在TCP首部的40字节变长选项中(kind=2);

三、结束语 

       今天内容就到这里啦,时间过得很快,大家沉下心来好好学习,会有一定的收获的,大家多多坚持,嘻嘻,成功路上注定孤独,因为坚持的人不多。那请大家举起自己的小手给博主一键三连,有你们的支持是我最大的动力💞💞💞,回见。

​​ 

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

获取当前程序运行时的栈大小[C语言]

废话前言 一晃已经毕业了4年,也在某个时间点,从面试者转变成了面试官。 进行第一次面试的时候,我好像比候选人还慌张,压根不知道问什么,好在是同行业,看着简历问了一些协议内容以及模块设计思路&#xff0…

人工智能之数学基础:数学在人工智能领域中的地位

人工智能(AI)是一种新兴的技术,它的目标是构建能够像人类一样思考、学习、推理和解决问题的智能机器。AI已经成为了许多行业的重要组成部分,包括医疗、金融、交通、教育等。而数学则是AI领域中不可或缺的基础学科。本文将阐述数学…

UE5 第一人称射击项目学习(一)

因为工作需要,需要掌握ue5的操作。 选择了视频资料 UE5游戏制作教程Unreal Engine 5 C作为学习。 第一个目标是跟着视频制作出一款第一人称射击项目。 同时作为入门,这个项目不会涉及到C,而是一个纯蓝图的项目。 项目目标 这个项目将实…

图像分类之花卉识别实验验证

本实验基于37种主流的图像分类算法模型,对64种花卉进行识别。使用包括vgg、resnet、densenet、efficientnet、inception、mobilenet等37种图像分类模型进行实验,评估各种模型对花卉的识别准确度、计算量、参数量,对比不同模型的性能和优缺点。…

Linux基础开发工具使用

目录 1. 软件包管理器yum 1.1 概念介绍 1.2 更换镜像源(可选) 1.3 工具的搜索/查看/安装/卸载 1.4 优势 2. vim编辑器 2.1 vi和vim 2.2 三种常用模式和操作 2.3 配置vim 3. Linux编译器-gcc/g 4. Linux调试器-gdb 5. make和Makefile 6.…

电脑怎么自动切换IP地址

在现代网络环境中,电脑自动切换IP地址的需求日益增多。无论是出于网络安全、隐私保护,还是为了绕过地域限制,自动切换IP地址都成为了许多用户关注的焦点。本文将详细介绍几种实现电脑自动切换IP地址的方法,以满足不同用户的需求。…

PMBOK® 第六版 控制进度

目录 读后感—PMBOK第六版 目录 制定了明确的计划后,对计划的控制尤为重要。例如,经常提到的“累积效应”,如果某个阶段的评分仅为0.9分,那么五个得分为0.9分的阶段,最终结果可能只是一个0.5分。 特别是在当今这个时…

linux001.在Oracle VM VirtualBox中ubuntu虚拟系统扩容

1.打开终端切换到virtualBox安装目录 2.输入命令扩容 如上终端中的代码解释: D:\Program Files\Oracle\VirtualBox>.\VBoxManage modifyhd D:\ubuntu18.04\Ubuntu18.04\Ubuntu18.04.vdi --resize 40960如上代码说明:D:\Program Files\Oracle\Virtual…

Web导出Excel表格

背景: 1. 后端主导实现 流程:前端调用到导出excel接口 -> 后端返回excel文件流 -> 浏览器会识别并自动下载 场景:大部分场景都有后端来做 2. 前端主导实现 流程:前端获取要导出的数据 -> 常规数据用插件处理成一个e…

函数栈帧的创建与销毁

我是目录 环境理解栈帧函数栈帧图预备知识寄存器MOV 指令SUB 指令PUSH 指令POP 指令LEA 指令CALL 指令REP STOS 指令 一个简单的C程序栈帧创建栈帧销毁 如何传参数值参数变量参数 如何返回值数值返回变量返回 环境 集成环境:VS2022 x86 编辑语言:C 汇…

服务端高并发分布式结构进阶之路

序言 在技术求知的旅途中,鉴于多数读者缺乏在中大型系统实践中的亲身体验,难以从宏观角度把握某些概念,因此,本文特选取“电子商务应用”作为实例,详细阐述从百级至千万级并发场景下服务端架构的逐步演变历程。同时&am…

Linux:版本控制器git和调试工具cgdb

✨✨所属专栏:Linux✨✨ ✨✨作者主页:嶔某✨✨ 版本控制器 为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀…

【0x001C】HCI_Write_Page_Scan_Activity详解

目录 一、命令概述 二、命令格式和参数说明 2.1. HCI_Write_Page_Scan_Activity命令格式 2.2. Page_Scan_Interval 2.3. Page_Scan_Window 三、响应事件及参数说明 3.1. HCI_Command_Complete事件 3.2. Status 3.3. 示例 四、命令执行流程 4.1. 命令发起阶段(主机端…

云原生之运维监控实践-使用Prometheus与Grafana实现对Nginx和Nacos服务的监测

背景 如果你要为应用程序构建规范或用户故事,那么务必先把应用程序每个组件的监控指标考虑进来,千万不要等到项目结束或部署之前再做这件事情。——《Prometheus监控实战》 去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当…

突破工业管理新高度:AI多模态引擎赋能设备维护管理

结合AI技术,可以帮助企业提升设备维护效率和管理复杂信息的能力。以下是一个详细流程和思路: 1. 项目背景概述 在高端制造业领域,如飞机、轮船、光刻机等设备的操作手册及零件图纸涉及大量的零配件信息和操作维护流程。传统方式难以高效管理…

C++重写和重定义和重载

重写 概念: 重写发生在类的继承体系中,是指在派生类中重新定义基类中已声明为虚函数(使用 virtual 关键字修饰)的函数。其目的是让派生类根据自身的需求对基类的虚函数提供不同的具体实现,从而实现运行时多态。 规则及…

centos7在使用yum源安装依赖时报错

1.在centos7中使用yum命令时候报错如下类似信息: Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archx86_64&repoos&infrastock error was 14: curl#6 - "Could not resol…

小版本大不同 | Navicat 17 新增 TiDB 功能

近日,Navicat 17 迎来了小版本更新。此次版本新增了对 PingCap 公司的 TiDB 开源分布式关系型数据库的支持,进一步拓展了 Navicat 的兼容边界。即日起,Navicat 17 所有用户可免费升级至最新版本,通过 Navicat 工具实现 TiDB 数据库…

python 编程 在 Matplotlib 中 默认预定的所有颜色,可以使用多种方法来指定颜色,包括预定义的颜色名称、十六进制颜色代码、

在 Matplotlib 中,可以使用多种方法来指定颜色,包括预定义的颜色名称、十六进制颜色代码、RGB 元组等。如果你想要一个比较深的颜色,你可以选择一些预定义的深色名称,或者使用较低的亮度值来定义自己的颜色。 以下是一些预定义的…

【基于Java Springboot敬老院管理系统

一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据库…