HCIP学习--MPLS

news2025/1/20 3:50:09

MPLS-多协议标签交换

标签交换

基于2.5层的标签号进行路由行为,开始传输数据包的时候需要查询两张表,一个路由表一个ARP表然后人们就想可不可以少查点表,然后MPLS就出现了,MPLS就是是在数据包的2.5层压入一个标签号,路由器基于2.5层标签号查询本地的一个LFIB表即可进行数据转发,第一个路由器压入标签,最后一个路由要弹出标签,中间的每个路由只查询一张表,如果A到B中间经过的路由很多,标签交换优势较大。

但是随着包交换的加速,使用标签交换失去了快速查表得优势

包交换发展

原始的包交换

传输数据包的时候需要查询两张表,一个路由表一个ARP表

数据包进入路由器后,路由器需要查询本地的路由表(RIB- 路由信息数据库).再基于下一跳或者目标ip查询本地的ARP表,才能进行数据的转发

快速包交换

(数据流:发包的时候一次性发多个,每次发包的时候连着的就是数据流,一般规定是10个)

现在来了一波数据流,数据流由10个包构成,数据流来到第一个路由器,路由器对第一个表进行原始包交换,然后产生一个缓冲,缓冲里记录了第一个包的转发规则,假设第二个数据流与第一个数据流的间隔很短吗,第二个包也可以按缓冲的转发规则进行转发

特快交换

思科发明,非思科设备都有相应的机制,无需路由,直接交换。

特快交换得过程是首先将路由表转换成一个FIB表(路由表和FIB表示共存的),FIB是完成了递归以后得路由表(当查表得时候不需要去按照对应得路由条目递归,直接就是目标然后对应得接口),FIB是一个纯二进制表,由于是纯二进制,所以可以被物理设备直接读取直接编译,省去了数据编译得过程

将ARP表转换成一个ADJ(邻接表)将从哪到哪的目标MAC和源MAC表记录下来

然后将FIB和ADJ合成一个表

特点:在将路由器表转换过程中,存储递归查询结果;同时将新封装的二层地址进行绑定

下面是一个表的例子

IP       fast0/0                   172.16.20.115(7)

       (递归后的出接口)           0 packets, 0 bytes

                                   epoch 0

                                   sourced in sev-epoch 357

                                   Encap length 14

                                   701CE7662A9768EFBD1D24C50800  新的二层封装

                                   目标MAC    源MAC      类型号

当代MPLS存在的意义

1、解决BGP的路由黑洞       2、MPLS  VPN         3、MPLS  TE 流量工程

注:随着包交换的加速,使得今天的MPLS技术也开始基于FIB表工作;来提高MPLS的工作效率

MPLS的工作过程

控制层面

1)在没有MPLS时控制层面仅生成RIB(路由表)和FIB(转发信息数据库);FIB是基于RIB生成;

2)MPLS协议会启动TDP(cisco私有)或LDP(公有),直连设备间将建立邻居关系(MPLS负责搞标签,然后之后就是TDP或者LDP工作了

LDP--  基于UDP和TCP的646端口工作;双方先使用udp发送组播hello包发现邻居,获取邻居ip地址(lsr-id,建议用环回),再和该直连邻居建立TCP的会话;邻居关系建立后;为了邻居关系间的稳定,一般使用设备的环回地址来建立tcp会话(为啥用环回原理和BGP的一样);建议设置环回地址为mpls协议的route-id,该id值将携带在组播收发的hello报文中,之后自动进行tcp会话建立;

总结:MPLS协议需要在直连邻居间使用router-id地址来进行TCP的会话;故前提条件为,route-id必须为设备真实使用的ip地址,建议为环回地址稳定; 组播hello包在直连的物理接口上收发,来获取对端的router-id,自然也要求router-id值间路由可达;

因此正常在建立LDP的邻居关系,路由协议已经收敛完成,RIB和FIB表已经生成;

3)MPLS在建立邻居关系后,生成邻居表;LDP协议再基于FIB表中学习到的路由条目生成标签号;

cisco设备默认基于FIB表中所有学习到的路由条目生成标签号,华为设备默认仅基于FIB表中32位掩码的主机路由生成标签号;原因在于正常32位主机路由为ospf学习的环回接口,正常工程中只有BGP和MPLS  VPN才会基于环回通讯,使用标签转发;其他普通流量还是基于特快包交换来进行;反观cisco在启动mpls以后,所有流量将基于标签转发,降低了转发效率(前提为默认)

4)标签号生成后,将存储于本地的LIB表-标签信息数据库;LIB表将在邻居间共享;LIB表中装载本地及邻居为每条路由分发的标签号;

5)运行MPLS协议的设备,将LIB和FIB进行结合,将标签号和最佳路径的关系映射生成LFIB表(标签转发信息数据库)

RIB—》FIB---》LIB---》LFIB   前两张表为路由协议工作后生成,后两张表为MPLS的LDP协议生成;

 数据层面

没有MPLS协议,基于FIB表正常转发即可

名词

MPLS domain

MPLS的工作半径    

edge LSR(PE)

边界标签交换路由器,第一跳和最后一跳也就是贴标签和弹出表签的路由器被称为PE,中间的被称为P

工作mpls域的边缘,连接域外设备

LSR (P)

标签交换路由器   整体工作MPLS域内  ,中间的路由被称为P

数据层面工作过程

当流量进入到第一台pe设备时, 在没有特快交换之前,路由器基于目标IP地址查询本地的RIB;之后还要在LIB表中对应才能确定流量是否应该压入标签,需要两张表的查询;在存在特快交换时,流量进入第一pe时,直接查询FIB表,表中关联标签号,将直接确定是否压入标签;流量再到P路由器,接收到流量中若存在标签基于LFIB表转发,若没有标签基于FIB表即可;流量从最后一台边界离开MPLS 域时将弹出标签;

存在标签号的流量,进入路由器时,入标签表应该为本地路由器分配的编号,出标签为本地的下游(下一跳)设备分配的标签号;  上下游的概念基于数据层面进行标定

来个例子理解一下

控制层面

假设现在使用LDP,这时LDP会为FIB的每一条路由分配一个标签号就以下图为例子

上图1有两个环回,且其他设备都通过某种路由协议学习到了两条环回的路由,然后都转换成了FIB表,然后LDP开始工作,LDP为每个设备去往1上环回的两条路由,都添加了一个标签号,然后这个号是要存到一个LIB表中,然后思考一下每个人是不是要将自己的LIB表中的标签号告诉别人一下,才可以让别人知道如何用标签到,所以LIB中也会装上下游邻居的号。然后LDP将FIB表和LIB表结合到一起生成了一个转发规则LFIB。

数据层面

假设现在在4号设备后面有一台电脑,要去ping1号设备的1.0环回,数据流量是不是来了,4号设备要为这个流量打一个标签号,标签号就是3号设备上1.0网段的标签号,就是18,然后当流量来到2上,标签号会替换成2号设备上的标签号(这个替换成前面设备的标签号的意思是可以借此来确定自己的路,比如说从4号设备的流量到了3号设备,3号设备一看标签号是不是就知道去1.0了,然后3及改成2的去往1.0网段标签)。

标签号

标签被压入在2层与3层之间,称为2.5层 (看下面图片的Label,就是标签号)

标签的格式---32位,4个字节

前20位为标签号,2^20个标签号;其中1-15号保留,作为特殊编号;

第21-23位exp,3位8个数,为优先级,用于QOS策略使用;(没有做策略是000)

第24位为栈底位,该位为1标识该标签为最后一层标签;MPLS最大可以在一个数据包中封装3次标签;(MPLS一层标签、MPLS VPN两层、MPLSTE3层)

当打上标签时,后面的路由就不会拆包拆到三层所以三层的ttl就不变,所以在这个标签号中TTL生存时间,(为啥要有这个TTL,在第一次压入标签时.将当前数据包中的3层TTL复制到标签中:之后查询一次标签TTL减一,在最后一跳设备弹出标签时将2.5层的TTL复制到3层报头中)

次末跳优化

举个例子理解一下

3这个号是很特使的编号,3号就是告诉上一台设备,上一台设备是倒数第二跳,然后倒数第二跳就会将标签号弹掉,比如下图第三台设备18去往的下一台就是3,然后18去往最后一台设备就会将标签号弹掉,然后最后一个设备不查LFIB,查一下FIB

 下一张图是查询LFIB然后19去往域外,然后再返回查FIB,一共查了两张表

总结

边界LSR将本地的直连网段传递给MPLS域内邻居后,LDP分配标签号为3,告知倒数第二跳设备它的身份;导致倒数第二跳设备在查询LFIB表后,已知转发路径的前提下提前弹出标签,使得最后一跳路由器均只需要查询FIB表; 否则最后一跳路由器在查询LFIB表后,弹出标签还需要查询FIB

配置 

MPLS – LDP配置

[r2]mpls lsr-id 2.2.2.2    必须先定义mpls的router-id,要为本地设备的真实ip地址且邻居可达,因为该地址将用于建立TCP会话,建议使用环回地址

[r2]mpls             再开启mpls协议

[r2-mpls]mpls ldp      再激活LDP协议

[r2-mpls-ldp]q

之后需要在所有标签经过的接口上开启协议

[r2]interface GigabitEthernet 0/0/1

[r2-GigabitEthernet0/0/1]mpls    先开启MPLS

[r2-GigabitEthernet0/0/1]mpls ldp   再激活LDP协议

当启动配置完成后,邻居间使用UDP报文组播收发hello包;之后基于hello包中的router-id地址进行TCP会话的建立;

查询

[r3]display tcp status

TCPCB    Tid/Soid Local Add:port        Foreign Add:port      VPNID  State

b4cf3d64 167/6    3.3.3.3:646           4.4.4.4:50858         0      Established

b4cf3adc 167/3    3.3.3.3:50806         2.2.2.2:646           0      Established

当tcp会话建立后,邻居间基于TCP会话再建立邻居关系,生成邻居表

[r3]display  mpls ldp peer

再然后基于本地的FIB表,默认华为仅针对32位的主机路由生成标签号;存储于LIB表中,之后邻居间共享LIB表;

[r3]display  fib  查看FIB表

[r4]display  mpls ldp  lsp    查看LIB表,装载本地和邻居为各条路由分配的标签号。最后路由器将LIB和FIB集合,生成最佳路径的标签转发规则—LFIB

[r4]display mpls lsp  查看LFIB表

注:默认华为仅针对32位主机路由分配标签(因为正常数据交换的时候是用包的特快交换)

首先查FIB看FIB的路由然后看Tunnel-id是不是0x0,如果不是,查这条FIB的详细信息

[r2]display fib verbose

 假设是去56.1.1.0网段的,找到56.1.1.0的信息看最后一行就会,发现一个标签号1029,来到下一个设备就会查询LFIB,1029相对应得,下一台设备得标签号

 

[r3]mpls

[r3-mpls]lsp-trigger all   开启功能,将针对fib表中所有路由进行标签号的分配

[r2]tracert -v -a 2.2.2.2 56.1.1.2

 使用mpls解决BGP的路由黑洞

 以上面这张图片为例子

3和4没有建立任何BGP邻居所以现在1去ping6时,会在3上出现路由黑洞,3会把1得数据包丢掉

这时在2345上配置MPLS

(MPLS协议并不会为通过BGP协议学习的路由条目分配标签号;而是在访问这些BGP路由目标网段时,在流量中压入到达这些网段的BGP下一跳设备地址的标签号;)

例:R2从BGP邻居5.5.5.5 学习到6.6.6.0 网段的路由;R2在访问6.6.6.0 时,将在数据包中压入到达5.5.5.5ip地址的标签号,来穿越中间没有运行BGP协议的设备;3和4中也有到达5得IP地址得标签号,实现打破路由黑洞。

注:华为设备默认不为BGP协议执行下一跳标签机制,cisco默认执行;

注:r2上配置r5上也要配置,流量能去能回

[r2 ]  route recursive-lookup tunnel   配置路由基于隧道进行递归查找  

想让里面访问外面,发布缺省

BGP在实际工程里的一个选路逻辑

用下面这张图来解释一下

 黑色的圈都是运行了BGP的路由蓝色的圈都是as内部的路由,然后黑色的通过bgp学习到里面的路由,里面的路由通过缺省去往外面,然后若AS内有个路由想访问另一个AS内的路由是首先经过缺省找到离自己最近的一个配置了BGP的路由,然后这个BGP通过MPLS找到另一个AS的运行BPG的路由

MPLS  VPN

并不是由客户自己配置

相当于公网(运营商配置,收费项目)做一个vpn然后帮你转发私有的流量,所以安全,模拟专线,不可以上网,上网自己拉宽带

配置逻辑

 以下图作为例子

控制层面

上面A和B是不同的公司A1和A2是相同公司,然后1和2的接口都是私网地址,要是配公网就成了宽带了,现在是要拉专线,1被称为CE端2被称为PE端。假设现在A有一个1./24的路由给了2,相当于人用户将自己的路由给运营商,然后6也有一条路由也是1.0也给了运营商,运营商如何区分两条路由,2号设备会往这个路由上赋值RD值(RD值格式X:X),赋值后就可以区分了,现在新的问题出现了,要把这两条路由放在那里,放在正常路由表示不对的,因为2的路由表示公网路由表,放私网路由就是有问题的,所以在2上要开两个VRF空间(1一个6一个)然后将路由放在这里,现在问题又出现了,如何传到右边,使用234上的路由协议是不可以的,234上的路由协议示传共有路由的,还有普通协议示传不了这个路由的,这个路由不是标准的IPv4路由,是VPNIPv4路由,里面带RD值和RT值。然后只有BGP可以传,原因BGP由社团属性可以带过去这个路由,然后BGP可以非直连建邻。现在2通过单播传私有路由到4上,到4上后如何把路由对端不同的空间里,1的路由要放到5的空间里,6的路由要放到7的空间里,这个区分要靠RT值,2上RT值要和4上RT值一样,然后4在传到5和7上。 

数据层面

首先5要ping1,然后4查自己的VRF空间的路由表,然后里面下一跳是2,然后MPLS开始起作用,贴了标签后到达2,然后2通过多层标签号来确定对应的空间(不可以使用RD和RT值,因为现在是数据层面的包,不是控制层面)

总结(可与上面例子对应一下)

CE将私有路由传递到PE端

PE端在收到不同CE发送过来的相同网段路由时,使用RD值进行区分---格式X:X  32位

PE端将附上RD的私有路由不能直接装载于本地公有路由表中,需要放置到对应的VRF(虚拟路由转发)空间内;之后再路由付RT值,用于传递到对端PE设备,对端区分信息;

VPNV4路由=普通IPV4路由+RD+RT

VPNV4路由需要MP-BGP来进行传递;对端基于RT值,将路由装载到对应的VRF空间内,再共享给对应的CE;

控制层面工作完成后,数据层面需要基于MPLS来工作,由于数据层面不能携带RD/RT值;故mpls将在数据包中压入两层标签,外层标签用于穿越中间设备,打破BGP路由黑洞;内层标签用于对应VRF空间;

配置命令

配置1和2的相连的接口IP 

先配置1,2等等再配置,因为2的接口一配置这条路由就宣告到了公网了,就不是私网路由

ISP部分

IGP路由   

MPLS域

配置MPLS VPN

[r2]ip vpn-instance a    创建名为a的vrf空间

[r2-vpn-instance-a]ipv4-family    进入IPV4的配置模式下

[r2-vpn-instance-a-af-ipv4]route-distinguisher 1:1   RD值

[r2-vpn-instance-a-af-ipv4]vpn-target 1:1   RT值 必须对端的PE端一致

[r2]interface GigabitEthernet 0/0/0    进入链接CE端的接口

[r2-GigabitEthernet0/0/0]ip binding vpn-instance a  关联到vrf空间

[r2-GigabitEthernet0/0/0]ip address 192.168.2.2 24   配置私有ip地址

注:在关联到vrf空间前不能配置接口ip,否则该地址的直连路由将进入公有路由表;

[r2]display  ip routing-table vpn-instance a    查看空间内的私有路由表

[r2]ping -vpn-instance  a  192.168.2.1   正常测试将在公有路由表中查询记录;该命令为基于VRF空间a进行路由查询

PE与PE间建立MP-BPG邻居关系

[r2]bgp 2

 [r2-bgp]router-id 2.2.2.2

先和对端建立正常BGP邻居关系,可用于传递正常的公网路由

 [r2-bgp]pe 4.4.4.4 as-number 2

 [r2-bgp]pe 4.4.4.4 connect-interface LoopBack 0

 [r2-bgp]pe 4.4.4.4 next-hop-local     

 同时还需要再在IPV4的家族模式中,与对端建立一个VPNV4的关系,用于传递VPNV4路由

 [r2-bgp]ipv4-family vpnv4

 [r2-bgp-af-vpnv4]peer 4.4.4.4 enable

[r2-bgp]display bgp vpnv4 all peer  查看mp-bgp邻居关系

CE端与PE端交互路由

静态

CE端直接编写静态路由即可;

PE端编写到VRF空间内的静态路由

[r2]ip route-static vpn-instance  a 192.168.1.0 24 192.168.2.1

将本地vrf空间内的静态和直连路由重发布到BGP协议传递到对端的PE

[r2]bgp 2

[r2-bgp]ipv4 vpn-instance a

 [r2-bgp-a]import-route direct

 [r2-bgp-a]import-route static

<r4>display  bgp vpnv4 vpn-instance a routing-table  查看mp-bpg的BGP表

OSPF

CE端正常启动OSPF即可

PE端,启动VPNV4专用的ospf协议

[r4]ospf 2 vpn-instance a

[r4-ospf-2]area  0

[r4-ospf-2-area-0.0.0.0]network 192.168.3.1 0.0.0.0

之后使用双向重发布,实现路由共享

[r4]bgp 2

[r4-bgp]ipv4-family vpn-instance a

[r4-bgp-a]import-route ospf  2

[r4]ospf 2 vpn-instance a

[r4-ospf-2]import-route bgp  

[r4]display  mpls lsp vpn-instance a  查看双层标记的内层标签号

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

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

相关文章

人大进仓数据库ksql命令基础

测试环境信息: 系统为银河麒麟V10 数据库为Kingbase ES V8 数据库安装目录为/opt/Kingbase/ES/V8 ksql命令位于/opt/Kingbase/ES/V8/Server/bin下 使用--help获取帮助 续上图 1.查看数据库列表 ./ksql -U system -l 2.查看数据库版本 ./ksql -V 3.连接指定的数据库tes…

计算机技术综合布线实训室建设方案

一、计算机技术综合布线系统概述 综合布线是指在建筑物或办公室内部&#xff0c;将各种通信设备&#xff08;如计算机、电话、视频监控、音频设备等&#xff09;通过统一的电缆系统连接起来的一种网络布线方式。它是构建局域网&#xff08;LAN&#xff09;和数据中心基础设施的…

Revit SDK 介绍:PanelSchedule 配电盘明细表

前言 这个例子介绍 Revit 的配电盘明细表&#xff0c;PanelSchedule。Revit 的电器专业在国内用的并不是十分广泛&#xff0c;但从功能上来说还是比较完整的。 内容 这个例子里有三个命令&#xff1a; PanelScheduleExport - 导出配电盘明细表InstanceViewCreation - 创建配…

HTML5的介绍和基本框架

目录 HTML5 HTML5介绍 HTML5的DOCTYPE声明 HTML5基本骨架 html标签 head标签 body标签 title标签 meta标签 在vscode中写出第一个小框架 HTML5 HTML5介绍 HTML5是用来描述网页的一种语言&#xff0c;被称为超文本标记语言。用HTML5编写的文件&#xff0c;后缀以.ht…

JVM编译优化

即时编译器 HotSpot虚拟机中内置了两个即时编译器,分别称为Client Compiler和Server Compiler,或者简称为C1编译器和C2编译器。Java8默认开启Server模式。用户可以使用“-client”或“-server”参数去指定编译模式。 C1编译器启动速度快,关注局部简单可靠的优化,比如方法…

【八大排序】-- 计数排序(动图演示)

计数排序介绍 计数排序是一个非基于比较的排序算法。它的优势在于在对一定范围内的整数排序时&#xff0c;它的复杂度为Ο(nk)&#xff08;其中k是整数的范围&#xff09;&#xff0c;快于任何比较排序算法。 当然这是一种牺牲空间换取时间的做法&#xff0c;而且当O(k)>O(n…

Java反序列化漏洞笔记

前言 作为Java安全方面的盲对Java反序列化各种链方面了解的并不多&#xff0c;但是这些链条又极为重要&#xff0c;有助于更好的理解各种漏洞的产出和原理&#xff0c;因此以下笔记开始从底慢慢学起。 为什么会产生安全问题&#xff1f; 服务器反序列化数据时&#xff0c;客…

OpenCV-Python中的图像处理-模板匹配

OpenCV-Python中的图像处理-模板匹配 模板匹配单对象的模板匹配多对象的模板匹配 模板匹配 使用模板匹配可以在一幅图像中查找目标函数&#xff1a; cv2.matchTemplate()&#xff0c; cv2.minMaxLoc()模板匹配是用来在一副大图中搜寻查找模版图像位置的方法。 OpenCV 为我们提…

行业追踪,2023-08-15

自动复盘 2023-08-15 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

3. 爬取自己CSDN博客列表(自动方式)(分页查询)(网站反爬虫策略,需要在代码中添加合适的请求头User-Agent,否则response返回空)

文章目录 步骤打开谷歌浏览器输入网址按F12进入调试界面点击网络&#xff0c;清除历史消息按F5刷新页面找到接口&#xff08;community/home-api/v1/get-business-list&#xff09;接口解读 撰写代码获取博客列表先明确返回信息格式json字段解读 Apipost测试接口编写python代码…

浅谈 EMP-SSL + 代码解读:自监督对比学习的一种极简主义风

论文链接&#xff1a;https://arxiv.org/pdf/2304.03977.pdf 代码&#xff1a;https://github.com/tsb0601/EMP-SSL 其他学习链接&#xff1a;突破自监督学习效率极限&#xff01;马毅、LeCun联合发布EMP-SSL&#xff1a;无需花哨trick&#xff0c;30个epoch即可实现SOTA 主要…

从0到1:通用后台管理系统 Vue3使用wangEditor

那么这一节我们在编辑公司信息的弹窗中使用富文本插件wangEditor官网 Vue3使用wangEditor 安装wangEditor在弹窗中引入wangEditor结构api接口部分editor组件script部分怎么去修改富文本的编辑器&#xff1f; 案例内效果&#xff1a; 安装wangEditor npm install wangeditor/…

【D3.js 01】

D3.js 01 说在前面1 概述2 配置Web环境3 HTML4 SVG5 DOM6 JS7 常用接口8 D3语法基础9 使用D3查询SVG10 使用D3设置SVG中属性11 修改整组属性12 使用D3添加与删除SVG元素13 数据读取 —— CSV数据14 D3.js的数值计算15 比例尺Scale - LinearScale - Band 16 引入坐标轴17 DATA-J…

通过网络和SD卡连接开发板

SD卡 有时候相关代码改动以后想验证能否正常工作&#xff0c;如果编译代码又需要好久&#xff0c;所以可以通过SD卡拷贝到板子里验证&#xff1a; 将SD卡插入读卡器&#xff0c;将读卡器插入ubuntu主机上&#xff0c;将相关带动的代码文件拷贝到SD卡中。假设你的板子已经具备…

LLMs大模型plugin开发实战

一、概述 ChatGPT是通用语言大模型&#xff0c;如果用户想要在与大模型进行交互时能够使用到企业私有的数据&#xff0c;那么可以通过开发plugin&#xff08;插件&#xff09;的方式来实现&#xff0c;另外GPT3.5模型的训练数据是截止到2021年9月&#xff0c;如果想让模型能够…

leetcode228. 汇总区间

题目 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,b]…

python矩阵形状和乘法

python矩阵的形状 A np.array([[[1],[2],[3]],[[4],[5],[6]]])AA np.array([[1,2,3],[4,5,6]])print(A) print(A.shape) print(AA) print(AA.shape)python矩阵的乘法 A np.array([[1, 2, 3, 4],[1, 2, 3, 4],[1, 1, 1, 1],[1, 1, 1, 1]]) B np.array([[1],[2],[1],[2]])C …

由主机的IP地址计算主机所在子网的广播地址(子网划分)

子网掩码是一个与IP地址相对应的、长32bit的二进制串&#xff0c;它由一串1和跟随的一串0组成。 其中&#xff0c;1对应于IP地址中的网络号及子网号&#xff0c;而0对应于主机号。计算机只需将IP地址和其对应的子网掩码逐位“与”&#xff08;逻辑AND运算&#xff09;&#xff…

新物联网卡智能管理系统源代码下载

新物联网卡智能管理系统源代码现已开放供大家使用。该系统具有强大的物联网卡管理功能&#xff0c;可以帮助您实现自动化管理&#xff0c;提高效率。 相比其他同类系统&#xff0c;本系统具有更高的灵活性和可定制性&#xff0c;能够满足您的各种需求。 授权机制已删除&#…

【C++11保姆级教程】delete和default关键字

文章目录 前言一、delete关键字1.1 什么是delete关键字&#xff1f;1.2delete关键字的语法和用法1.3delete关键字的作用和优势 二、default关键字2.1 什么是default关键字&#xff1f;2.2default关键字的语法和用法2.3 default关键字的作用和优势 总结 前言 欢迎来到本教程&am…