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

【计算机网络】网络层IP协议与子网划分详解:从主机通信到网络设计的底层逻辑

🔥个人主页🔥:孤寂大仙V
🌈收录专栏🌈:计算机网络
🌹往期回顾🌹: 【计算机网络】传输层TCP协议——协议段格式、三次握手四次挥手、超时重传、滑动窗口、流量控制、
🔖流水不争,争的是滔滔不息


  • 一、传输层和网络层
  • 二、IP协议
    • 协议头格式
  • 三、子网划分
    • 子网划分方式
  • 四、IP地址的数量限制
  • 五、私有IP地址公网IP地址
  • 六、路由
  • 七、分片与封装
    • 如何分片和组装

一、传输层和网络层

网络层主要负责主机之间的逻辑通信,处理数据包的寻址和路由。它的核心功能包括:定义IP地址,确保数据包能够从源主机传输到目标主机、通过路由算法选择最优路径,避免网络拥塞、处理分片和重组,以适应不同网络的最大传输单元(MTU)。

**传输层则专注于端到端的通信,确保数据可靠、有序地传输。**主要功能包括:提供进程间的通信,通过端口号区分不同的应用程序、实现流量控制和拥塞控制,优化数据传输效率、支持可靠传输(如TCP)或不可靠传输(如UDP)。

网络层的的ip协议通过源主机ip找到目的ip主机,更像是一种实现网络通信的能力。传输层的如tcp协议保证报文数据如不丢包实现可靠传输,更像是网络通信的策略。网络层的ip协议和传输层的TCP协议,把数据100%可靠的从主机A跨网络的送到了主机B。

二、IP协议

IP(Internet Protocol)是互联网的核心协议之一,属于网络层协议,负责将数据包从源主机路由到目标主机。它定义了数据包的格式、地址分配规则以及路由机制,但不保证可靠性(如丢包、乱序等问题由更高层协议处理)。IP协议分为IPv4和IPv6两个主要版本。

ip协议提供一种能力,把数据从A主机跨网络送到B主机。所以必须要有一种方式标识通信两端主机的唯一性。ip协议解决的是主机到主机的问题。ip=目标网络+目标主机。

主机: 配有 IP 地址, 但是不进行路由控制的设备。路由器: 即配有 IP 地址, 又能进行路由控制。节点: 主机和路由器的统称。路由的本质是,网络在从源主机发往目的主机的路途中,从一个子网进入另一个子网。

协议头格式

在这里插入图片描述

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

三、子网划分

引入子网划分的概念

网络发展到现在肯定是被设计过的,理解报文路由的时候是如何被设计的,下面举一个例子。

在学校中,分为很多个学院,有计算机学院、理学院、材料学院、化工学院、经管学院、每个学生都有学号,假设每个学院的学生开头学号都是一样的。比如计算机学院学生开头都是01,理学院学生开头都是02,化工学院学生开头是03,有了标识学院的开头数字,每个学院内部给每个学生标识的数字。假设每个学院内部都有个群聊,有一个大的群聊里面是每个学院的代表。有一个计算机学院的学生捡到了一个学生证(学生证只标识了学号),现在自己学院内部群聊问有没有是这个学生,发现不是,然后通过这个学生代表在学校大群问,找到了这个学生证所属的学院(比如是理学院),理学院的学生代表把这个学生证发到了理学院内部的群聊找丢学生证的人。

上面例子,学院就是子网,学生是主机号,学号是ip地址,学院前缀是网络号,学院代表是路由器,群聊是进行局部网络广播/子网通信,大群是核心网络公网。整个学校是运营商对网络进行设计。

划分学院,带上唯一编号的过程,就是子网划分。查找目标主机,必须查找目标网络,本质可以淘汰其他子网,可以是在全网中提高查找目标主机的效率。(内网是整体私有网络,子网是其细分网络段,子网的颗粒度更细)。


IP地址分为两个部分,网络号和主机号。
网络号:保证相互连接的两个网段具有不同的标识。
主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号。

在这里插入图片描述
不同的子网就是网络号相同的主机放到一起,如果子网中新增一台主机,则这台主机的网络号和这个子网的网络号一致,但是主机号不能和当前子网中的其他主机重复。
通过合理设置网络号和主机号,就可以保证在相互连接的网络中,每台主机的ip地址都不相同。一个子网内的一台主机的ip是路由器分配的,路由器有构建子网的功能,有一种技术叫做DHCP,能够自动给子网内新增的主机节点分配IP地址,避免手动管理IP的不便,一般路由器都带有DHCP的功能,因此路由器可以看做一个DHCP服务器。因为路由器是连接两个子网的桥梁,一个路由器至少要配置两套IP。

在这里插入图片描述
路由器一般都是这个子网的第一台主机。


子网划分方式

一种曾经的划分网络号和主机号的方案,把所有IP地址分为五类。

  • A 类 0.0.0.0 到 127.255.255.255
  • B 类 128.0.0.0 到 191.255.255.255
  • C 类 192.0.0.0 到 223.255.255.255
  • D 类 224.0.0.0 到 239.255.255.255
  • E 类 240.0.0.0 到 247.255.255.255
    A类用途是大型网络(如大型企业)主机数量多。B类中型网络(大学、公司)。C类小型企业(小型办公室)。
    但是这种分类方式,有很大的弊端。比如大多数企业都申请B类网络地址,B类很快就快用完了,A类就剩余了很多网络地址。另一个角度,A类网络地址主机数量大约是1677万台主机,在一个子网内如果没有这么多主机,造成大量地址都被浪费。

现代使用子网掩码的网络划分方案叫做 CIDR(无类域间路由,Classless Inter-Domain Routing)。
引入一个子网掩码的概念来区分网络号和主机号。子网掩码本质上是一个32位的“过滤器”,用来提取ip地址的“网络号”部分。将ip地址和子网掩码“按位与”操作,得到的结果就是网络号。掩码位为1的位,表示这部分就是网络号,掩码位为0的位,表示这部分就是主机号。
子网掩码是实现“动态划分”的核心。选了多少个掩码位是1,就代表用多少位来划分网络号,其他剩下的位就是主机号。也就是说子网掩码定义了网络的大小和主机数量。
为什么要动态划分呢?如果一个网络地址ip是有154台主机号,但是这个网络只用到了10台主机,那么这个网络下就会浪费主机号。运用子网掩码对ip网络灵活划分,需要多少台主机就划分多少子网,不浪费任何ip地址和主机号。这也就是说一个ip可以划分为多个ip这也就是子网划分最本质的特征。
在这里插入图片描述
例子一,ip地址和子网掩码按位与

ip地址 ->二进制1000 1100.1111 1100.0001 0100.0100 0100
子网掩码 ->二进制1111 1111.1111 1111.1111 1111 .0000 0000
网络号 ->二进制1000 1100.1111 1100.0001 0100.0000 ip地址和子网掩码按位与
子网地址范围->最大范围,看还剩多少个主机可以用,0000 0000 看子网掩码

例子二

ip地址 ->二进制1000 1100.1111 1100.0001 0100.0100 0100
子网掩码 ->二进制1111 1111.1111 1111.1111 1111 .1111 0000
网络号 ->二进制1000 1100.1111 1100.0001 0100.0100 0000
子网地址范围->最大范围,0000 转换为10进制就是15,64+15=79

将IP地址中的主机地址全部设为0,就得到了网络号,代表这个局域网。
将IP地址中的主机地址全部设为1,就成了广播地址,用于给同一个链路中相互连接的所有主机发送数据包。
127.0.0.0这个ip地址用于本机环回的测试。

四、IP地址的数量限制

我们知道, IP 地址(IPv4)是一个 4 字节 32 位的正整数.。那么一共只有 2 的 32 次方 个 IP地址, 大概是 43 亿左右。 而 TCP/IP 协议规定, 每个主机都需要有一个 IP 地址。
这意味着, 一共只有 43 亿台主机能接入网络么?
实际上, 由于一些特殊的 IP 地址的存在, 数量远不足 43 亿; 另外 IP 地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个 IP 地址.CIDR 在一定程度上缓解了 IP 地址不够用的问题(提高了利用率, 减少了浪费, 但是 IP地址的绝对上限并没有增加), 仍然不是很够用. 这时候有三种方式来解决:

  • 动态分配 IP 地址: 只给接入网络的设备分配 IP 地址. 因此同一个 MAC 地址的
    设备, 每次接入互联网中, 得到的 IP 地址不一定是相同的;
  • NAT 技术
  • IPv6: IPv6 并不是 IPv4 的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6 用 16 字节 128 位来表示一个 IP 地址; 但是目前 IPv6 还没有普及;

五、私有IP地址公网IP地址

如果一个组织内部组建局域网,IP 地址只用于局域网内的通信,而不直接连到 Internet (公网)上,理论上 使用任意的 IP 地址都可以,但是 RFC 1918 规定了用于组建局域网的私有 IP 地址

  • 10.*,前 8 位是网络号,共 16,777,216 个地址
  • 72.16.到 172.31.,前 12 位是网络号,共 1,048,576 个地址
  • 192.168.*,前 16 位是网络号,共 65,536 个地址
    包含在这个范围中的, 都成为私有 IP, 其余的则称为全局 IP(或公网 IP);

区分网络的概念,公网指全球可访问的互联网,通过公共IP地址实现设备间的通信。内网(子网,局域网)指在特定组织或机构内部建立的专用网络,不直接对外开放。通常用于企业内部通信、资源共享或数据交换。我们用到网络都是内网。公网:内网是1:n。
在网络通讯的过程中,私有ip不能出现在公网上。

运营商
运营商是网络通讯基础设施的建设和维护者,负责提供物理网络(如光纤、基站)和核心服务(如带宽分配、IP地址管理)。其职责包括骨干网运营、互联互通协调及服务质量保障。
我们支付费用给运营商,才能上网,比如路由器上面说过有构建子网的能力能给子网内的主机分配ip,这个功能是运营商维护的,所以上网肯定要钱。😄运营商可以控制我们的报完发到公网,所以“wall”技术就是运营商把我们的报完“卡住的”🤪
在这里插入图片描述
一个路由器可以配置两个 IP 地址, 一个是 WAN 口 IP, 一个是 LAN 口 IP(子网IP)。
路由器 LAN 口连接的主机, 都从属于当前这个路由器的子网中。不同的路由器, 子网 IP 其实都是一样的(通常都是 192.168.1.1). 子网内的主机IP 地址不能重复. 但是子网之间的 IP 地址就可以重复了。

如上图,我们访问公网上的服务器,从内网到公网,报完通过源ip地址目的ip地址和端口号,经过路由器的路由到达我们要访问的服务器。上面提到私有ip不能出现到公网上,为什么?内网中有多个子网,子网中可能会有IP地址重复。由子网到公网报文的转发需要经过路由器的路由一跳一跳的到达公网进而到达所要访问的服务器,当子网ip地址经过这个子网的路由器,会把原来的ip地址换为这个路由器的WAN口ip,一直到出内网,到达公网上的服务器。如果服务器有应答报文,也是可以把报文返回一开始发报文的主机的,这就用到了NAT技术。

公网
很多初学者会误以为“公网只有一个”,其实这是一个常见的误区。**公网并不是某一个具体的网络或 IP,而是指全球范围内唯一可达、不属于私有地址范围的 IP 地址空间。**只要是没有被划分为私有地址(如 192.168.x.x、10.x.x.x、172.16.x.x ~ 172.31.x.x),并且可以在 Internet 上直接通信的 IP,统称为“公网 IP”。全球的运营商、数据中心、服务器、家庭宽带用户等,都会使用到不同的公网地址段。因此,公网地址是巨大的,是互联网中“人人可见”的地址,而不是单一某个网段。

六、路由

在复杂的网络结构中, 找出一条通往终点的路线。
路由的过程, 就是这样一跳一跳(Hop by Hop) “问路” 的过程.
所谓 “一跳” 就是数据链路层中的一个区间。具体在以太网中指从源 MAC 地址到目的MAC 地址之间的帧传输区间。
在这里插入图片描述
IP 数据包的传输过程也和问路一样,当 IP 数据包, 到达路由器时, 路由器会先查看目的 IP。路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器。依次反复, 一直到达目标 IP 地址。
那么如何判定当前这个数据包该发送到哪里呢? 这个就依靠每个节点内部维护一个路由表。
在这里插入图片描述
路由表可以使用 route 命令查看。如果目的 IP 命中了路由表, 就直接转发即可。路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。

假设某主机上的网络接口配置和路由表如下:
在这里插入图片描述
这台主机有两个网络接口,一个网络接口连到 192.168.10.0/24 网络,另一个网络接口连到 192.168.56.0/24 网络。
路由表的 Destination 是目的网络地址,Genmask 是子网掩码,Gateway 是下一跳地址,Iface 是发送接口,Flags 中的 U 标志表示此条目有效(可以禁用某些 条目),G标志表示此条目的下一跳地址是某个路由器的地址,没有 G 标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发。

如果要发送的数据包的目的地址是 192.168.56.3
跟第一行的子网掩码做与运算得 到 192.168.56.0,与第一行的目的网络地址不符。
再跟第二行的子网掩码做与运算得 到 192.168.56.0,正是第二行的目的网络地址,因此从 eth1 接口发送出去。
由于 192.168.56.0/24 正 是与 eth1 接口直接相连的网络,因此可以直接发到目的主机,不需要经路由器转发。
如果要发送的数据包的目的地址是 202.10.1.2

依次和路由表前几项进行对比, 发现都不匹配。
按缺省路由条目, 从 eth0 接口发出去, 发往 192.168.10.1 路由器。
由 192.168.10.1 路由器根据它的路由表决定下一跳地址。


不知道大家有没有玩过死亡搁浅这款游戏,小岛秀夫把“连接”设计为游戏世界的主基调。
在这里插入图片描述
在网络世界中,路由器就像《死亡搁浅》里的“节点城市”。每个路由器都是一个信息孤岛,独立而又互联,负责连接前一个网络与下一个网络,就像连接着一座又一座被隔绝的城市。在广阔的互联网“荒野”中,数据包就是快递员山姆,一步步穿越子网、翻越协议层的高山,最终将信息送达目标设备。

在这个过程中,路由器不仅仅是转发者,更像是守卫边境的“守门人”——它通过路由表判断数据该走哪条路径,通过ARP协议(后面文章)解析下一跳的MAC地址,像一个智能导航器,指引数据在复杂的网络拓扑中找到最短的路。它不关心数据内容,只在乎数据该去哪里,像是城市之间的传送门,一头连着本地局域网,另一头通往下一个世界。

路由器的工作原理和地位——它们维系着整个互联网的运行秩序,是现实与虚拟之间的通信节点。

七、分片与封装

是什么分片?

分片就是把一个超出传输限制的大的IP数据包,切成多个小片,分别发送。每个片都有自己的ip头部最终由接收方在网络层重新拼装。

为什么要分片
在数据链路层,从上层接收的完整报文不能超过MTU。MTY是指某个链路一次最多传输的数据大小(以字节为单位)。最经典的以太网MTU=1500字节。
比如发了一个IP数据报,总长度4000字节,但是中途路由器发现数据链路层的MTU最大只能发1500字节,没办法只能把这4000字节的包分片成多个小包。


分片有很多问题,效率低——每个片都有头,开销大,容易丢包——只要丢一片整个包作废,重组复杂——接收方需要缓冲、等待、拼接碎片。

P 分片是因为链路层有 MTU 限制,为保证报文能顺利传输,IP 层会将超出限制的包“切片”,接收方再重组。但代价高,因此在实践中要尽量避免!

如何分片和组装

在这里插入图片描述
分片和组装和这三个字段有关。

  • 16 位标识(id): 唯一的标识主机发送的报文. 如果 IP 报文在数据链路层被分片了, 那么每一个片里面的这个 id 都是相同的。
  • 3 位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位置为 1 表示禁止分片, 这时候如果报文长度超过 MTU, IP 模块就会丢弃报文. 第三位表示"更多分片", 如果分片了的话, 最后一个分片置为 0, 其他是 1. 类似于一个结束标记。
  • 13 位分片偏移(framegament offset): 是分片相对于原始 IP 报文开始处的偏移.其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 除以 8 得到的. 因此, 除了最后一个报文之外(之前如果都是 8 的整数倍, 最后一片的偏移量也一定是 8 的整数倍), 其他报文的长度必须是 8 的整数倍(否则报文就不连续了)。注意: 片偏移(13 位)表示本片数据在它所属的原始数据报数据区中的偏移量(以 8 字节为单位)

如何判断特别报文是否被分片?
3位标志字段中第三位标识更多分片,a判断更多分片是否是1,是1就是分片。b如果一个报文中更多分片是1都丢了就剩下一个更多分片是0了,但是片偏移要大于0,那么也表示分片了。a和b就能判断报文分片了。
如何保证把分片全收完了?
a相同的标识的分片聚合在一起。b那就得收不全是怎么样的来解释,如果第一片丢失那么这里的片偏移就是0,如果结尾丢失了就是没有更多分片是0的分片,如果中间丢失了把收到的所有分片按照偏移进行升序排序,片偏移+自身报完长度=下一个分片的片偏移数字,通过这样的方式来判断中间是否丢失。来保证包分片全收全了。

组装
其实通过上述把收到的所有分片按照偏移进行升序排序也是组装的过程。

相关文章:

【计算机网络】网络层IP协议与子网划分详解:从主机通信到网络设计的底层逻辑

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:计算机网络 🌹往期回顾🌹: 【计算机网络】传输层TCP协议——协议段格式、三次握手四次挥手、超时重传、滑动窗口、流量控制、 &…...

基于WSL搭建Ubnutu 20.04.6 LTS(二)-部署Docker环境

Docker是一组平台即服务(PaaS)的产品。它基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器。托管容器的软件称为Docker引擎。Docker能够帮助开发者在轻量级容器中自动部署应用程序,并使得不同容器中的应用程序彼此隔离&a…...

【图像处理入门】6. 频域图像处理:傅里叶变换与滤波的奥秘

摘要 频域图像处理通过傅里叶变换将图像从空间域转换到频率域,为图像增强、去噪、压缩等任务提供全新视角。本文将深入解析傅里叶变换原理,介绍低通、高通滤波的实现方式,结合OpenCV和Python代码展示频域滤波在去除噪声、增强边缘中的应用,帮助读者掌握图像频域处理的核心…...

基于开源AI智能名片链动2+1模式S2B2C商城小程序的生态农庄留存运营策略研究

摘要:本文聚焦于生态农庄运营中的游客留存问题,以村长与乡亲们吸引游客进村为背景,深入探讨如何借助开源AI智能名片链动2 1模式S2B2C商城小程序实现游客的有效留存。通过分析该小程序在信息传递、服务整合、营销激励等方面的优势&#xff0c…...

Jenkins实现自动化部署Springboot项目到Docker容器(Jenkinsfile)

Jenkins实现自动化部署Springboot项目到Docker容器 引言:为什么需要自动化部署? 在软件开发中,频繁的手动部署既耗时又容易出错。通过 Docker + Jenkins + Git 的组合,您可以实现: ✅ 一键部署:代码推送后自动构建和部署🐳 环境一致性:Docker 确保开发、测试、生产环…...

【Linux】Git原理与使用

编程不仅是解决问题的艺术,更是对复杂性进行优雅管理的哲学。 前言 这是我自己学习Linux系统编程的第三篇笔记。后期我会继续把Linux系统编程笔记开源至博客上。 上一期笔记是关于Vim文本编辑器知识: 【Linux】Vim文本编辑器-CSDN博客https://blog.csdn…...

Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束前言项目简介技术栈…...

A*算法实现原理以及实现步骤(C++)

算法原理: A*算法是一种启发式搜索算法,用于在图中寻找最短路径。它结合了Dijkstra算法的确保最短路径的优点和贪心最佳优先搜索的高效性。其核心在于使用一个评估函数: f(n) g(n) h(n) 其中: - g(n) 表示从起点到节点n的实际代…...

Devops自动化运维---py基础篇一

python基础篇 1、基本数据类型 2、算术运算符 3、变量 变量:编程语言中能储存结果或能表示值的抽象概念 用途:用一段数据赋予一个简短、易于记忆的名字,方便重复使用3.1 格式转化变量 操作符号描述%s字符串%d整数%f浮点数 实例&#xff1…...

平安养老险蚌埠中心支公司开展金融宣教活动

近日,平安养老保险股份有限公司(以下简称“平安养老险”)蚌埠中心支公司,走进某合作企业开展金融教育宣传活动。 活动现场,平安养老险蚌埠中心支公司工作人员通过发放宣传手册和小礼品等方式,向企业员工普…...

游戏设计模式 - 子类沙箱

核心思想 子类沙箱模式(Subclass Sandbox)通过将核心逻辑封装在基类中,为子类提供安全的"沙箱"环境。子类通过组合或重写基类提供的预定义操作来实现行为,而非直接操作底层系统。 这种模式在游戏开发中常用于实现角色…...

java-springboot文件上传校验之只允许上传excel文件,且检查不能是脚本或者有害文件或可行性文件

四重验证机制: 文件扩展名检查(.xlsx/.xls)MIME类型检查文件魔数验证(真实文件类型)可执行文件特征检测 防御措施: 使用try-with-resources确保流关闭限制文件大小防止DoS攻击使用Apache POI的FileMagic进…...

openvino如何在c++中调用pytorch训练的模型

步骤1:将PyTorch模型转换为ONNX格式 转换代码示例(Python) import torch import torchvision1. 加载训练好的PyTorch模型 model torchvision.models.resnet18(pretrainedTrue) model.eval() # 设置为评估模式2. 创建虚拟输入&#xff08…...

Redisson简明教程—你家的锁芯该换了

1.简介 各位攻城狮们,你还在使用原生命令来上锁么?看来你还是不够懒,饺子都给你包好了,你非要吃大饼配炒韭菜,快点改善一下“伙食”吧,写代码也要来点幸福感。今天咱们就来聊聊Redisson提供的各种锁&#…...

48V带极性反接保护-差共模浪涌防护方案

在工业自动化(电动机驱动 / 工业机器人)、交通基础设施(充电桩 / 车载电子)、安防系统(监控摄像头 / 门禁)、储能设备(BMS / 离网控制器)等领域,DC48V 电源因安全特低电压…...

Python----目标检测(使用YOLO 模型进行线程安全推理和流媒体源)

一、线程安全推理 在多线程环境中运行YOLO 模型需要仔细考虑,以确保线程安全。Pythons threading 模块允许您同时运行多个线程,但在这些线程中使用YOLO 模型时,需要注意一些重要的安全问题。本页将指导您创建线程安全的YOLO 模型推理。 1.1、…...

jvm学习第1day jvm简介,栈溢出、堆溢出

jvm学习第1day jvm简介,栈溢出、堆溢出 jvm简介栈线程安全栈溢出线程运行诊断堆堆溢出 方法区方法区内存溢出常量池和运行时常量池 jvm简介 jvm 是编译后的字节码文件运行的环境, 因此各个平台有了jvm可以运行java.class文件,这是Java跨平台…...

用广告维持的免费 AI 图像生成工具(个人项目分享)

用广告维持的免费 AI 图像生成工具(个人项目分享) 免费 AI 图像生成工具网址:https://aiart.gcc.ac.cn/ 最近做了一个 AI 图像生成器,主要目标是“尽量简单”: 打开网页就能用不用注册、不用登录免费,不…...

分析Web3下数据保护的创新模式

在这个信息爆炸的时代,我们正站在 Web3 的门槛上,迎接一个以去中心化、用户主权和数据隐私为核心的新时代。Web3 不仅仅是技术的迭代,它更是一场关于数据权利和责任的结构性变革。本文将探讨 Web3 下数据保护的创新模式,以期为用户…...

​减少交通拥堵、提高效率、改善交通安全的智慧交通开源了。

智慧交通视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上…...

协议融合驱动效能跃升:Modbus转Ethernet IP的挤出吹塑机应用

在现代工业自动化领域,Modbus作为一种串行通信协议,其稳定性和简单性被广泛应用于各种工控设备中。但随着技术的进步,对于更高速、更远传输距离的需求日益增长,这就需要将Modbus协议通过以太网进行传输,即实现Modbus T…...

Hive的TextFile格式优化方法

Hive的TextFile格式是一种简单的行式存储格式,数据以文本行形式存储,每行包含多个字段,字段间通过分隔符(如逗号、制表符)分隔。尽管TextFile在性能上不如ORC、Parquet等列式存储格式,但在特定场景下仍有其优势。以下是TextFile格式的特点、优势、使用场景及优化方法: …...

bug 记录 - 使用 el-dialog 的 before-close 的坑

需求说明 弹窗中内嵌一个 form 表单 原始代码 <script setup lang"ts"> import { reactive, ref } from "vue" import type { FormRules } from element-plus const ruleFormRef ref() interface RuleForm {name: stringregion: number | null } …...

Next.js 中间件鉴权绕过漏洞 CVE-2025-29927

前言:CVE-2025-29927 是一个影响 Next.js 的严重漏洞&#xff0c;源于开发者信任了客户端请求中携带的 X-Middleware-Rewrite 头部字段。攻击者可以手动构造该头部&#xff0c;实现绕过中间件逻辑&#xff0c;访问本应受保护的资源或 API。 影响版本&#xff1a;Next.js < …...

基于YOLO-NAS-Pose的无人机象群姿态估计:群体行为分析的突破

【导读】 应对气候变化对非洲象的生存威胁&#xff0c;本研究创新采用无人机航拍结合AI姿态分析技术&#xff0c;突破传统观测局限。团队在肯尼亚桑布鲁保护区对比测试DeepLabCut与YOLO-NAS-Pose两种模型&#xff0c;首次将后者引入野生动物研究。通过检测象群头部、脊柱等关键…...

8天Python从入门到精通【itheima】-71~72(数据容器“序列”+案例练习)

目录 71节-数据容器“序列”的切片 1.学习目标 2.什么是序列 3.序列的常用操作——切片 4.小节总结 72节——案例练习&#xff1a;序列的切片实践 1.案例需求 2.代码实战 好了&#xff0c;又一篇博客和代码写完了&#xff0c;励志一下吧&#xff0c;下一小节等等继续&a…...

中达瑞和SHIS高光谱相机在黑色水彩笔墨迹鉴定中的应用

在文件检验与物证溯源领域&#xff0c;对书写材料&#xff08;如墨水&#xff09;进行快速、准确、无损的鉴别至关重要。由陈维娜等人撰写的《高光谱技术结合化学计量法鉴别黑色水彩笔墨迹》&#xff08;发表于《光谱学与光谱分析》2023年第7期&#xff09;利用中达瑞和SHIS凝采…...

dvwa10——XSS(DOM)

XSS攻击&#xff1a; DOM型XSS 只在浏览器前端攻击触发&#xff1a;修改url片段代码不存储 反射型XSS 经过服务器攻击触发&#xff1a;可能通过提交恶意表单&#xff0c;连接触发代码不存储 存储型XSS 经由服务器攻击触发&#xff1a;可能通过提交恶意表单&#xff0c;连…...

dvwa14——JavaScript

LOW 先按提示尝试输入success&#xff0c;提交失败 那用bp抓包一下 &#xff0c;抓到这些&#xff0c;发现有token验证&#xff0c;说明改对token才能过 返回页面f12看一下源码&#xff0c;发现value后面的值像密码&#xff0c;于是试一下md5和rot13的解密 ROT13加密/解密 - …...

外网访问内网服务器常用的三种简单操作步骤方法,本地搭建网址轻松让公网连接

当本地内网环境搭建部署好服务器后&#xff0c;怎么设置让外网公网上连接访问到呢&#xff1f;或本身处于不同局域网间的主机&#xff0c;需要进行数据交互通信&#xff0c;又应该如何实现操作&#xff1f;这些都离不开外网对内网的访问配置。 总的来说外网访问内网服务器主要…...