本文结合所学的一些基础网络协议来完成一个综合性的实验(实验完整代码放在最后)

会先说明使用协议的原理,然后分析具体在拓补图中的应用过程,最后再给出配置

明确实验目标:拓扑分 核心层(R1)、汇聚层(SW3、SW4,需配置 SVI 实现三层转发)、接入层(SW1、SW2,纯二层) ,目标是让所有 PC 能互访,且核心路由器 R1 能与外网(Net)通信,同时内网流量按预期路径转发。

整体思路:静态路由手动配置、dhcp动态路由、vlan划分网络、mstp解决二层环路、vrrp保障网关冗余、ospf动态选路实现三层设备互联、nat内网访问外网、acl访问控制 

数据传输完整流程(以 PC1 访问公网为例 )

阶段 1:PC1 发起到网关的流量(二层 + VRRP )

1. PC1 封装帧:PC1 要访问公网(如  203.0.113.1  ),先判断目标 IP 是外网,需发往默认网关  192.168.2.254 (VRRP 虚拟 IP )。

- PC1 用 ARP 请求解析  192.168.2.254  的 MAC 地址。

- SW3 是 VLAN2 的 VRRP 主设备(优先级 120 ),会响应 ARP,告知 PC1: 192.168.2.254  的 MAC 是 SW3 的 VLAN2 SVI 接口 MAC。

2. 流量到汇聚层 SW3:PC1 封装以太网帧(源 MAC:PC1,目的 MAC:SW3 VLAN2 MAC;源 IP: 192.168.2.1 ,目的 IP: 203.0.113.1  ),通过接入层 SW1(Trunk 链路 )、MSTP 计算的最优路径,转发到 SW3。

阶段 2:汇聚层 SW3 转发到核心 R1(三层 + OSPF )

1. SW3 三层转发:SW3 收到帧后,解封装看目的 IP 是外网,查路由表(OSPF 学习的路由 ),发现需发往核心 R1。

 
 - OSPF 已在 SW3、R1 间建立邻居,传递了  192.168.10.0/30 (SW3 - R1 互联段 )、 192.168.2.0/24 (VLAN2 )等路由。

- SW3 路由表中,外网网段( 0.0.0.0/0  )的下一跳指向 R1 的  192.168.10.2 (OSPF 动态学习或静态路由 )。

2. 封装新帧转发:SW3 重新封装帧(源 MAC:SW3 互联口 MAC,目的 MAC:R1 互联口 MAC;源 IP: 192.168.2.1 ,目的 IP: 203.0.113.1  ),通过  G0/0  接口发往 R1。

阶段 3:核心 R1 做 NAT + 转发(NAT + 静态路由 + ACL )

1. NAT 转换:R1 收到帧,解封装后触发 NAT:

- 因 PC1 是静态 NAT( ip nat inside source static 192.168.2.1 192.0.2.10  ),R1 会把源 IP 替换为  192.0.2.10 ,同时记录转换表项(便于回包时还原 )。

2. ACL 过滤(可选):R1 外网口  f2/0  应用了  access-list 100 (假设允许 ICMP 等 ),检查流量是否符合规则。若符合,继续转发。

3. 静态路由转发:R1 查路由表,默认路由  ip route 0.0.0.0 0.0.0.0 f2/0  指导流量发往外网口  f2/0 ,封装新帧(源 MAC:R1  f2/0  MAC,目的 MAC:公网网关 MAC;源 IP: 192.0.2.10 ,目的 IP: 203.0.113.1  ),发往公网。

阶段 4:公网回包到 R1(反向路径 )

1. 公网路由:公网设备(如  203.0.113.1  )收到包,回包时目的 IP 是  192.0.2.10 ,根据公网路由(由 ISP 配置 ),发回 R1 的  f2/0  接口。

2. NAT 还原:R1 收到回包,查 NAT 表项,将目的 IP  192.0.2.10  还原为  192.168.2.1 ,然后查路由表(OSPF 学习的  192.168.2.0/24  路由 ),下一跳指向 SW3 的  192.168.10.1 。

3. 转发回 SW3:R1 封装帧(源 MAC:R1 互联口 MAC,目的 MAC:SW3 互联口 MAC;源 IP: 203.0.113.1 ,目的 IP: 192.168.2.1  ),发往 SW3。

阶段 5:SW3 转发回 PC1(OSPF + 二层 )

1. SW3 三层转发:SW3 收到回包,查路由表(OSPF 学习的  192.168.2.0/24  直连路由 ),目的 IP 是 PC1,需发往 VLAN2 SVI 接口。

2. ARP 解析 PC1 MAC:SW3 用 ARP 请求解析  192.168.2.1  的 MAC 地址,PC1 响应后,SW3 封装帧(源 MAC:SW3 VLAN2 MAC,目的 MAC:PC1 MAC;源 IP: 203.0.113.1 ,目的 IP: 192.168.2.1  ),通过 MSTP 最优路径,经 SW1 转发回 PC1

一.  静态路由的配置:(sw3、sw4、r1)

静态路由核心是 “告诉设备:到达某网段,下一跳给谁” ,需梳理每个设备的 “已知网段” 和 “需要转发的网段”。

定义:由管理员手工配置的,是单向的,拓扑关系缺乏灵活性
优点:配置灵活,管理员手工配置,节省链路开销。
缺点:当拓扑发生改变时,需要管理员去每台路由器上修改路由配置。

R1 作为核心层路由器,需连通内网(汇聚、接入层网段)和外网(假设  192.0.2.0/24  是公网或上级网络 ),同时汇聚层 SW3、SW4 也需通过它访问外网。假设内网主要需互通的网段有:- 接入层 VLAN 网段: 192.168.2.0/24 (VLAN2 )、 192.168.3.0/24 (VLAN3 )、 192.168.4.0/24 (VLAN4 )- 汇聚与核心互联网段: 192.168.10.0/30 (R1 - SW3 )、 192.168.10.4/30 (R1 - SW4 )等R1R1(config)# ip route 192.168.2.0 255.255.255.0 192.168.10.1  // 去往 VLAN2 网段,下一跳指向 SW3
R1(config)# ip route 192.168.3.0 255.255.255.0 192.168.10.1  // 去往 VLAN3 网段,下一跳指向 SW3
R1(config)# ip route 192.168.4.0 255.255.255.0 192.168.10.5  // 去往 VLAN4 网段,下一跳指向 SW4
R1(config)# ip route 0.0.0.0 0.0.0.0 192.0.2.2  // 默认路由,指向外网出口(假设对端是 192.0.2.2 )
SW3(config)# ip route 0.0.0.0 0.0.0.0 192.168.10.2  // 默认路由,指向核心 R1,让非直连网段走 R1
SW3(config)# ip route 192.168.4.0 255.255.255.0 192.168.10.10  // 去往 VLAN4(SW4 侧),下一跳指向 SW4
// 若需更精细控制,也可针对 R1 侧其他网段单独写,或依赖默认路由
SW4(config)# ip route 0.0.0.0 0.0.0.0 192.168.10.6  // 默认路由指向 R1,让非直连网段走核心
SW4(config)# ip route 192.168.3.0 255.255.255.0 192.168.10.9  // 去往 VLAN3(SW3 侧),下一跳指向 SW3
// 同理,可根据实际网段细化,或依赖默认路由覆盖

二.  DHCP 动态路由

工作过程:

四次会话

1)discover:客户端广播向DHCP服务器请求一个ip地址

2)offer:服务器收到后在地址池中寻找合适的IP地址,广播回复提供给客户端

3)request:客户端选择合适的ip地址并告知服务器

4)ack:服务器广播确认分配ip地址,向客户端告知信息

拓补图中,可以看到pc2和pc4都是由dhcp自动获取ip地址的

分析:以pc2为例:pc2广播发送dhcp请求,dhcp中继sw3收到广播请求后改为单播发往dhcp服务器r1,r1收到请求在地址池选择合适的ip地址单播回复给sw3,sw3收到后发给pc2,pc2选择ip地址并广播告知r1,sw3改为单播发给r1,r1收到win的选择信息单播发送确认信息给pc2

这里提到了dhcp中继 什么是中继

 Dhcp中继:当dhcp服务器与客户端不在同一网络的时候无法直接通信,这时需要一个代理者代为转发,这个代理者就是dhcp中继。

分析:图中pc2发起dhcp请求请求一个IP地址,因为与服务器r1不在同一网段,所以sw3充当中继接收到来之pc2的dhcp广播请求,把广播请求改为单播发送给服务器r1

dhcp配置:

// DHCP 地址池配置(给 192.168.3.0/24、192.168.4.0/24 网段分配 )
Router(config)#ip dhcp pool h
Router(dhcp-config)#network 192.168.3.0 255.255.255.0
Router(dhcp-config)#default-router 192.168.3.254
Router(dhcp-config)#dns-server 222.246.129.80
Router(dhcp-config)#exitRouter(config)#ip dhcp pool t
Router(dhcp-config)#network 192.168.4.0 255.255.255.0
Router(dhcp-config)#default-router 192.168.4.254
Router(dhcp-config)#dns-server 222.246.129.80
Router(dhcp-config)#exit// DHCP 中继相关(信任中继信息 )
Router(config)#ip dhcp relay information trust-all// 环回接口(OSPF RID 依赖 )
Router(config)#interface Loopback0
Router(config-if)#ip address 1.1.1.1 255.255.255.255
Router(config-if)#exit

注意这里配置了lookback地址,也就是回环接口地址,好处就是因为回环接口状态是稳定的,当链路损坏或原接口故障,管理者可以通过回环接口进入 

三.vlan划分网络

定义:虚拟局域网

作用:将网络划分成多个广播域

access:连接个1vlan,与终端相连

收报文

判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则直接

丢弃(缺省)

发报文将报文的VLAN信息剥离,直接发送出去

trunk:连接多个vlan,与交换机、路由器相连

收报文    
收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有判断该trunk端口是否允许该 VLAN的数据进入:如果可以则转发,否则丢弃

发报文    
比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,如果不相等则直接发送

sw1配置:

Switch(config)#vlan 2,3
Switch(config)#int e0/0
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 2
Switch(config-if)#spanning-tree portfast
Switch(config-if)#no shutdown
Switch(config)#int e0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 3
Switch(config-if)#spanning-tree portfast
Switch(config-if)#no shutdown
Switch(config)#int e0/2
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#no shutdown
Switch(config)#int e0/3
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#no shutdown

sw2配置: 

Switch(config)#vlan 2
Switch(config)#vlan 4
Switch(config)#int e0/0
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 2
Switch(config-if)#spanning-tree portfast
Switch(config-if)#no shutdown
Switch(config)#int e0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 4
Switch(config-if)#spanning-tree portfast
Switch(config-if)#no shutdown
Switch(config)#int e0/2
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#no shutdown
Switch(config)#int e0/3
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#no shutdown

sw3配置:

Switch(config)#vlan 2 - 4
Switch(config)#int g0/0
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#switchport mode trunk
Switch(config-if)#no shutdown
Switch(config)#int g0/2
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#switchport mode trunk
Switch(config-if)#no shutdown
Switch(config)#int g0/3
Switch(config-if)#no switchport
Switch(config-if)#no shutdown
Switch(config-if)#ip address 192.168.10.1 255.255.255.252
Switch(config)#int g0/1
Switch(config-if)#no switchport
Switch(config-if)#no shutdown
Switch(config-if)#ip address 192.168.10.9 255.255.255.252
Switch(config)#ip routing

sw4配置:

  
Switch(config)#vlan 2 - 4
Switch(config)#int g0/0
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#switchport mode trunk
Switch(config-if)#no shutdown
Switch(config)#int g0/2
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#switchport mode trunk
Switch(config-if)#no shutdown
Switch(config)#int g0/3
Switch(config-if)#no switchport
Switch(config-if)#no shutdown
Switch(config-if)#ip address 192.168.10.5 255.255.255.252
Switch(config)#int g0/1
Switch(config-if)#no switchport
Switch(config-if)#no shutdown
Switch(config-if)#ip address 192.168.10.10 255.255.255.252
Switch(config)#ip routing

r1配置

Router(config)#int f0/0
Router(config-if)#ip address 192.168.10.2 255.255.255.252
Router(config-if)#no shutdown
Router(config)#int f0/1
Router(config-if)#ip address 192.168.10.6 255.255.255.252
Router(config-if)#no shutdown
Router(config)#int fa2/0
Router(config-if)#ip address 192.0.2.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#ip nat outside

四.  MSTP解决二层环路 

首先了解二层环路

危害:

1)可能会造成广播风暴

广播风暴是指网络中出现大量无意义的广播帧,导致网络带宽被占满、设备处理能力耗尽
最终使网络瘫痪的现象。

2)数据在环路中循环传输,耗费资源

3)mac地址表紊乱:交换机是通过mac地址来转发数据的,但环路中同一mac地址会在不同端口频繁出现,导致mac表不断刷新,造成混乱

MSTP通过选择规则来防止环路:

选举报网桥
选举规则:
a. 先比较BID中的优先级,具有最小优先级的交换机定为根桥。
b. 如果优先级一样,再比较BID中的MAC地址,MAC地址最小的确定为跟桥。

选举根端口
选举规则:
a. 非根桥交换机上,到根桥的根路径开销最小的端口,即为该非根交换机的根端口
b. 如果根路径开销相同,则比较对端交换机的BID,越小越优
c. 如果对端交换机的BID相同,则比较对端的PID,越小越优
d. 如果对端的PID相同,则比较本端的PID,越小越优。

选举指定端口
选举规则:
a. 在各个链路上,到根桥的根路径开销最小的端口,即为指定端口
b. 如果根路径开销相同,则比较两端交换机的BID,越小越优
c. 如果对端交换机的BID相同,则比较两端交换机的PID,越小越优

阻塞其余端口选举规则:
至此,其余既不是根端口也不是指定端口的都是阻塞端口。

分析:拓补图中,可以看到二层的主要两个环路,分别是sw1、sw3、sw4形成的三角形环路和sw2、sw4、sw3的三角形环路 ,这里就需要用到mstp来解决这个环路问题

mstp配置:

sw1

// MSTP 配置
Switch(config)#spanning-tree mode mst
Switch(config)#spanning-tree mst configuration
Switch(config-mst)#name mst
Switch(config-mst)#revision 1
Switch(config-mst)#instance 2 vlan 2
Switch(config-mst)#instance 3 vlan 3
Switch(config-mst)#instance 4 vlan 4
Switch(config-mst)#exit

sw2

// MSTP 配置
Switch(config)#spanning-tree mode mst
Switch(config)#spanning-tree mst configuration
Switch(config-mst)#name mst
Switch(config-mst)#revision 1
Switch(config-mst)#instance 2 vlan 2
Switch(config-mst)#instance 3 vlan 3
Switch(config-mst)#instance 4 vlan 4
Switch(config-mst)#exit

sw3

// MSTP 配置
Switch(config)#spanning-tree mode mst
Switch(config)#spanning-tree mst configuration
Switch(config-mst)#name mst
Switch(config-mst)#revision 1
Switch(config-mst)#instance 2 vlan 2
Switch(config-mst)#instance 3 vlan 3
Switch(config-mst)#instance 4 vlan 4
Switch(config-mst)#exit
Switch(config)#spanning-tree mst 0 priority 0
Switch(config)#spanning-tree mst 2 priority 4096
Switch(config)#spanning-tree mst 3 priority 0
Switch(config)#spanning-tree mst 4 root primary

sw4

// MSTP 配置
Switch(config)#spanning-tree mode mst
Switch(config)#spanning-tree mst configuration
Switch(config-mst)#name mst
Switch(config-mst)#revision 1
Switch(config-mst)#instance 2 vlan 2
Switch(config-mst)#instance 3 vlan 3
Switch(config-mst)#instance 4 vlan 4
Switch(config-mst)#exit
Switch(config)#spanning-tree mst 0 priority 4096
Switch(config)#spanning-tree mst 2 priority 0
Switch(config)#spanning-tree mst 3 priority 4096
Switch(config)#spanning-tree mst 4 root secondary

 五.  vrrp保障网关冗余

工作过程:

优先级高的选举为主路由器,优先级相同时接口IP大的为主路由器。 主路由器激活虚拟IP地址,转发数据报文,并定期向广播域内发送VRRP组播报文通告自己的状态,定期通告间(Advertisement Interval)默认为1秒。 备份路由器不发送但接收VRRP报文,在MASTER_DOWN_TIMER(一般为3个通告周期)3s内没有收到主路由器的VRRP报文,则备份路由器将成为主路由器。 

分析:拓补图中sw3、sw4两台三层交换机满足等级保护要求中的设备冗余,需要使用vrrp协议来保障一台路由损坏后,其他路由仍然可以这次工作的作用,可以看到sw3、sw4之间有两根线,下面的线是二层线路,用来进行vrrp的主备路由器的状态通告

vrrp配置

sw3

// 逻辑接口(SVI) + VRRP 配置
Switch(config)#int vlan 2
Switch(config-if)#ip address 192.168.2.253 255.255.255.0
Switch(config-if)#ip helper-address 192.168.10.2
Switch(config-if)#no shutdown
Switch(config-if)#vrrp 2 ip 192.168.2.254
Switch(config-if)#vrrp 2 priority 120
Switch(config-if)#vrrp 2 preemptSwitch(config)#int vlan 3
Switch(config-if)#ip address 192.168.3.253 255.255.255.0
Switch(config-if)#ip helper-address 192.168.10.2
Switch(config-if)#no shutdown
Switch(config-if)#vrrp 3 ip 192.168.3.254
Switch(config-if)#vrrp 3 priority 100
Switch(config-if)#vrrp 3 preemptSwitch(config)#int vlan 4
Switch(config-if)#ip address 192.168.4.253 255.255.255.0
Switch(config-if)#ip helper-address 192.168.10.2
Switch(config-if)#no shutdown
Switch(config-if)#vrrp 4 ip 192.168.4.254
Switch(config-if)#vrrp 4 priority 100
Switch(config-if)#vrrp 4 preempt

sw4

Switch(config)#int vlan 2
Switch(config-if)#ip address 192.168.2.252 255.255.255.0
Switch(config-if)#ip helper-address 192.168.10.6
Switch(config-if)#no shutdown
Switch(config-if)#vrrp 2 ip 192.168.2.254
Switch(config-if)#vrrp 2 priority 100
Switch(config-if)#vrrp 2 preemptSwitch(config)#int vlan 3
Switch(config-if)#ip address 192.168.3.252 255.255.255.0
Switch(config-if)#ip helper-address 192.168.10.6
Switch(config-if)#no shutdown
Switch(config-if)#vrrp 3 ip 192.168.3.254
Switch(config-if)#vrrp 3 priority 120
Switch(config-if)#vrrp 3 preemptSwitch(config)#int vlan 4
Switch(config-if)#ip address 192.168.4.252 255.255.255.0
Switch(config-if)#ip helper-address 192.168.10.6
Switch(config-if)#no shutdown
Switch(config-if)#vrrp 4 ip 192.168.4.254
Switch(config-if)#vrrp 4 priority 120
Switch(config-if)#vrrp 4 preempt

六.OSPF动态路由选路 

工作过程:

五种报文:

ospf的种类以及作用:

拓补图中当数据传到核心层就需要ospf协议进行动态路由选路 

ospf配置

sw3

// OSPF 配置
Switch(config)#interface loopback 0
Switch(config-if)#ip address 3.3.3.3 255.255.255.255
Switch(config)#router ospf 1
Switch(config-router)#router-id 3.3.3.3
Switch(config-router)#network 3.3.3.3 0.0.0.0 area 0
Switch(config-router)#network 192.168.10.1 0.0.0.0 area 0
Switch(config-router)#network 192.168.10.9 0.0.0.0 area 0
Switch(config-router)#network 192.168.2.0 0.0.0.255 area 0
Switch(config-router)#network 192.168.3.0 0.0.0.255 area 0
Switch(config-router)#network 192.168.4.0 0.0.0.255 area 0
// 被动接口
Switch(config-router)#passive-interface g0/0
Switch(config-router)#passive-interface g0/2

sw4

// OSPF 配置
Switch(config)#interface loopback 0
Switch(config-if)#ip address 4.4.4.4 255.255.255.255
Switch(config)#router ospf 1
Switch(config-router)#router-id 4.4.4.4
Switch(config-router)#network 4.4.4.4 0.0.0.0 area 0
Switch(config-router)#network 192.168.10.5 0.0.0.0 area 0
Switch(config-router)#network 192.168.10.10 0.0.0.0 area 0
Switch(config-router)#network 192.168.2.0 0.0.0.255 area 0
Switch(config-router)#network 192.168.3.0 0.0.0.255 area 0
Switch(config-router)#network 192.168.4.0 0.0.0.255 area 0
// 被动接口
Switch(config-router)#passive-interface g0/0
Switch(config-router)#passive-interface g0/2

R1

// 静态路由 + OSPF
Router(config)#ip route 0.0.0.0 0.0.0.0 f0/0
Router(config)#interface loopback 0
Router(config-if)#ip address 1.1.1.1 255.255.255.255
Router(config)#router ospf 1
Router(config-router)#router-id 1.1.1.1
Router(config-router)#network 192.168.10.2 0.0.0.0 area 0
Router(config-router)#network 192.168.10.6 0.0.0.0 area 0
// 传递默认路由给 OSPF 邻居
Router(config-router)#default-information originate

七.  NAT 内网访问外网

NAT主要用于内网地址访问公网地址

静态NAT:内网地址与公网地址一对一映射,主要用于公网资源充足的场景或是特定的设备(摄像头等)

动态NAT:内网地址与公网地址是临时的动态映射,随机从公网地址池中分配一个公网地址。主要用于主机或服务器集群的地方

PAT:多对一映射,不同内网地址使用同一公网地址,但端口不同

NAT配置: 

// NAT 配置 
// 1. 静态 NAT:内网 192.168.2.1 → 外网 192.0.2.10
Router(config)#ip nat inside source static 192.168.2.1 192.0.2.10// 2. 动态 NAT(ACL 1 匹配 192.168.3.0/24 ,映射到 pool1 )
Router(config)#access-list 1 permit 192.168.3.0 0.0.0.255
Router(config)#ip nat pool 1 192.0.2.21 192.0.2.30 netmask 255.255.255.0
Router(config)#ip nat inside source list 1 pool 1// 3. 出接口 NAT(ACL 2 匹配 192.168.2.2/32 ,直接映射外网口 )
Router(config)#access-list 2 permit 192.168.2.2 0.0.0.0
Router(config)#ip nat inside source list 2 interface FastEthernet2/0// 4. NAPT(PAT,ACL 3 匹配 192.168.4.0/24 ,复用 pool3 地址 )
Router(config)#access-list 3 permit 192.168.4.0 0.0.0.255
Router(config)#ip nat pool 3 192.0.2.31 192.0.2.32 netmask 255.255.255.0
Router(config)#ip nat inside source list 3 pool 3 overload

 完整代码:(以图片展现)

 

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图机器学习(5)——无监督图学习与浅层嵌入方法

图机器学习(5)——无监督图学习0. 前言1. 无监督图嵌入2. 矩阵分解2.1 图分解2.2 高阶邻接保留嵌入2.3 带有全局结构信息的图表示3. skip-gram 模型3.1 DeepWalk3.2 Node2Vec3.3 Edge2Vec3.4 Graph2Vec0. 前言 无监督机器学习是指训练过程中不利用任何目…

lua中检查静态常量是否正确引用

lua中检查静态常量是否正确引用思路代码因在项目开发中会出现引用了不存在的常量,为了方便检查这种情况,所以想着添加针对性脚本check 思路 加载要检查的常量结构到KEYWORD通过gmatch匹配指定路径下的所有文件,依次检查引用到目标变量的key是…

考完数通,能转云计算/安全方向吗?转型路径与拓展路线分析

不少网工考完 HCIE数通 后,都会面临一个现实问题:“能不能往云计算、安全这些热门方向转?”可以,而且非常值得。但怎么转、学什么、有没有路线图,是关键。一、为什么考完HCIE数通后适合转方向?技术基础扎实…

2.逻辑回归、Softmax回归——鸢尾花大作战

逻辑回归 逻辑回归其实并不是回归,而是一个分类算法 分类问题:邮件分类、图像识别、疾病诊断、文字情感分析、金融欺诈检测 根据历史数据,预测样本是属于哪个类别,通过数据拟合分界 主要用于二分类任务 逻辑回归公式 事实上是在多…

【Lucene/Elasticsearch】**Query Rewrite** 机制

这段话描述的是 Lucene/Elasticsearch 的 **Query Rewrite** 机制,核心一句话:> **把“高级”或“逻辑”查询(如 PrefixQuery、WildcardQuery、RangeQuery)在真正执行前,拆成最底层的、可直接倒排索引查的“原子查询…

小智完整MCP交互流程(以调节音量为例)

1. 初始化阶段 - MCP工具注册 在 mcp_server.cc 中,音量控制工具在 AddCommonTools() 中注册: AddTool("self.audio_speaker.set_volume", "Set the volume of the audio speaker. If the current volume is unknown, you must call self…

极狐GitLab CEO 柳钢——极狐 GitLab 打造中国企业专属 AI 编程平台,引领编程新潮流

当下,AI 编程已成为人工智能大模型领域的耀眼明星,是公认的最好应用领域之一。其发展速度惊人,从最初简单的代码建议、代码补全等基础智能功能,一路高歌猛进,如今已涵盖智能单元测试、智能代码审核、智能体编程、代码仓…

tiktok 弹幕 逆向分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析部分python代码部分python代码…

Java学习打卡22(JAVA中的错误Error和异常Exception)

异常( Exception ):软件程序在运行过程中,出现的不期而至的各种情况,如:文件找不到、网络连接失败、非法参数等。要理解JAVA异常处理是如何工作的,需要掌握以下三种类型的异常:检查性…

AntV G6 基础元素详解(React版)

一、初识 AntV G6 AntV G6 是蚂蚁集团推出的专业级图可视化引擎,适合构建关系图谱、拓扑图、流程图等场景。相比其他图形库,G6 提供完整的布局算法 和交互体系 ,开发者在 10 分钟内即可搭建可交互的图应用。 技术特点速览: 支持 C…

【解决】联想电脑亮度调节

更新后图标变大调节分辨率然后亮度就不能调节了快捷键WindowsX打开设备管理器右键显卡更新驱动程序选择“浏览我的电脑以查找驱动程序(R)”选择“让我从计算机上的可驱动程序列表中选取(L)”点击下一步成功解决

将Blender、Three.js与Cesium集成构建物联网3D可视化系统

将Blender、Three.js与Cesium集成构建物联网3D可视化系统,可实现从精细设备建模到宏观地理空间展示的全栈能力。以下是技术整合方案及典型应用场景:一、技术栈分工与集成逻辑 #mermaid-svg-gCvcBVB9ebl092ap {font-family:"trebuchet ms",verd…

用TensorFlow进行逻辑回归(一)

这一节我们用TensorFlow定义简单的分类器。首先考虑分类器的方程式是什么是值得的。数学习的技巧是使用sigmoid函数。sigmoid函数绘制如图3-40, 通常标记为σ, 是实数域里的函数取值(0, 1)。这个特征很便利,因为我们可以将sigmoid的输出解释为事件发现的概率。 (转…

【Java代码审计(2)】MyBatis XML 注入审计

代码背景:某公司使用 MyBatis 作为持久层框架,登录功能如下: Java 接口代码: public interface UserMapper {User findByUsernameAndPassword(Param("username") String username,Param("password") String p…

Spring Boot目录变文件夹?3步解决!

在 Spring Boot 项目中,当你在 src/main/java 下看到目录结构而不是包结构时,这通常是 IDE(如 IntelliJ IDEA)的显示问题或项目配置问题。以下是原因和解决方案:问题原因IDE 未正确识别 Java 源代码根目录 src/main/ja…

Appium源码深度解析:从驱动到架构

Appium源码深度解析:从驱动到架构 Appium 源码概览 Appium 是一个开源的移动自动化测试框架,支持跨平台(iOS、Android)和多种编程语言(Java、Python 等)。其源码托管在 GitHub 上,主要由 JavaScript 和 Node.js 实现,核心逻辑围绕客户端-服务器架构设计。 GitHub 仓库…

给 Excel 整列空格文字内容加上前缀:像给文字穿衣服一样简单!

目录 步骤一:选中目标列 打开Excel表格并定位列点击列标题选中整列 步骤二:输入公式,变身“魔法” 在公式编辑栏输入公式按下回车键查看效果 步骤三:向下填充,批量处理 鼠标定位到单元格右下角按住鼠标左键向下拖动填充…

Spring Boot 启动原理揭秘:从 main 方法到自动装配

Spring Boot 启动原理揭秘:从 main 方法到自动装配 引言 Spring Boot 作为 Java 领域最流行的开发框架之一,凭借其“开箱即用”的特性极大地简化了 Spring 应用的搭建和部署。然而,尽管开发者在日常工作中频繁使用 Spring Boot 的启动类&…

OpenCV 与深度学习:从图像分类到目标检测技术

一、深度学习:从 “人工设计” 到 “自动学习”1.1 深度学习的定位:AI、机器学习与深度学习的关系人工智能(AI):是一个宽泛的领域,目标是构建能模拟人类智能的系统,涵盖推理、感知、决策等能力。…

Docker 镜像推送至 Coding 制品仓库超时问题排查与解决

Docker 镜像推送至 Coding 制品仓库超时问题排查与解决 在将 Docker 镜像推送至 Coding 的制品仓库时,可能会遇到 docker push 命令超时失败的问题。但使用 curl -i http://xxx.coding.xxxx.xx 测试时,连接却能成功建立。以下是排查过程及解决方案。 问题…