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

网络基础协议综合实验

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

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

明确实验目标:拓扑分 核心层(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://bowels.elldm.cn
http://buxom.elldm.cn
http://aor.elldm.cn
http://ballade.elldm.cn
http://bak.elldm.cn
http://araeostyle.elldm.cn
http://bumpity.elldm.cn
http://chartbuster.elldm.cn
http://adventurously.elldm.cn
http://beslaver.elldm.cn
http://appendices.elldm.cn
http://capelin.elldm.cn
http://agadir.elldm.cn
http://carborne.elldm.cn
http://agitator.elldm.cn
http://broomcorn.elldm.cn
http://aegean.elldm.cn
http://arabic.elldm.cn
http://bacillicide.elldm.cn
http://chorine.elldm.cn
http://aerodyne.elldm.cn
http://amiantus.elldm.cn
http://baldachin.elldm.cn
http://antiperspirant.elldm.cn
http://anterolateral.elldm.cn
http://caravaggesque.elldm.cn
http://casuistics.elldm.cn
http://amoroso.elldm.cn
http://acetanilid.elldm.cn
http://ahab.elldm.cn
http://www.dtcms.com/a/280600.html

相关文章:

  • GNU Radio连接X310运行报错
  • 【赵渝强老师】大数据交换引擎Sqoop
  • 实测两款效率工具:驾考刷题和证件照处理的免费方案
  • 【历史人物】【李白】生平事迹
  • deepseekAI对接大模型的网页PHP源码带管理后台(可实现上传分析文件)
  • 非对称加密:RSA
  • 一维泊松方程的有限元方法实现与理论分析
  • Student后台管理系统查询接口
  • 无人机GPS定位系统核心技术解析
  • Java :List,LinkedList,ArrayList
  • ov5640,ov2640,ov7670摄像头比较
  • OSPF过滤
  • 在百亿流量面前,让“不存在”无处遁形——Redis 缓存穿透的极限攻防实录
  • uniapp 微信小程序Vue3项目使用内置组件movable-area封装悬浮可拖拽按钮(拖拽结束时自动吸附到最近的屏幕边缘)
  • 解锁Python爬虫:数据获取与清洗的进阶指南
  • 运维技术教程之Jenkins的秘钥设置
  • TP商城登录系统测试报告
  • Python Fabric库详解:从入门到自动化运维实战
  • C++ Boost Aiso TCP 网络聊天(服务端客户端一体化)
  • 【论文阅读 | PR 2024 |ITFuse:一种用于红外与可见光图像融合的交互式 Transformer】
  • 第三章 OB SQL 引擎高级技术
  • 【网络安全】大型语言模型(LLMs)及其应用的红队演练指南
  • 【Git】详解git commit --amend用法以及使用遇到的问题
  • Vue 2 和 Vue 3 中,组件的封装、二次开发和优化
  • Sersync和Rsync部署
  • Keil 5下载的时候提示“No J-Link found”
  • 《恋与深空》中龙和蛇分别是谁的代表
  • 25、企业能源管理(Energy):锚定双碳目标,从分类管控到智能优化的数字化转型之路
  • flutter弹窗:fluttertoast
  • HTTP 性能优化实战:突破高并发瓶颈的工业级方案