1.STP定义:

STP(Spanning Tree Protocol)是生成树协议的英文缩写。STP在IEEE 802.1D文档中定义,该协议的原理是按照树的结构来构造网络拓扑,消除网络中的环路,避免由于环路的存在而造成广播风暴问题。

生成树协议适合所有厂商的网络设备,在配置上和体现功能强度上有所差别,但是在原理和应用效果是一致的。STP可以增强网络健壮性,避免单点故障,单链路故障。

2.STP的基本原理

1)冗余链路会产生的问题:

1.广播风暴;2.帧的多重复制;3.MAC地址表不稳定;4.多个回路。

解决办法是选择生成树协议,阻塞多余的冗余端口。生成树协议的目的是维持一个无回路的网络。

如果一个设备在拓扑中发现一个回路,它将阻塞一个或多个冗余的端口。当网络拓扑发生变化时,生成树协议将重新配置交换机的各个端口以避免链接丢失或者出现新的回路。

在二层网络中,运行生成树协议(STP/RSTP/MSTP/VBST)的交换机之间通过交互BPDU(网桥协议数据单元)报文进行生成树计算,将环形网络修剪成无环路的树形拓扑。

2)生成树协议的基本规则:

三要素:根桥、根端口、指定端口

1.选择一个根桥:一个网段(物理网段)只能有一个根桥,根桥上的所有端口都是"指定端口",可以转发数据。

2.非根桥只有"根端口"可以转发数据,用来和根桥相连的"根端口"只能有一个。其余端口不是"根端口",将被阻塞。只有"指定端口"和"根端口"可以转发数据。

3)根桥的选择方法:

采用生成树算法的交换机通过BPDU 的数据包定期交换配置信息,其中包括桥ID(Bridge ID)信息。 [桥ID=优先级+交换机MAC] 桥ID小的交换机将成为根桥。优先级可以指定,默认为32768.

非根桥上的根端口选择方法:

非根桥到达根桥只需要一个端口(根端口),选择的时候会选择到达根桥路径代价最低的端口,这个端口就叫做根端口。如果到达根桥的路径代价相等则比较端口的MAC,最低的选择为"根端口".

到达路径的代价一般以带宽为依据,IEEE802.1d规定的路径的代价既开销(cost)如下:

10Gbps=2       1Gbps=4       100Mbps=19  10Mbps=100

开销小的将被选择为根端口。

非根桥上的非根端口在阻塞状态下也能够监听BPDU数据包,如果20秒收不到根桥的信息则开始转换自己的状态:

blocking(阻塞/只能接收BPDU)——20秒——>listening(监听/接收并发送BPDU)——15秒——>learning(学习/接收、发送BPDU并学习MAC地)——15秒——>forwarding(转发)

这样大约50秒的时间非根端口转变成为"根端口"或者变为"指定端口"开始转发数据。

4)端口状态

   1. Blocking State
    Discards frames received on the port(不收数据帧)
    Discards frames switched from another interface for forwarding(不转发从其它端口接收的数据帧)
    Does not learn addresses(不学习MAC地址)
    Receives BPDUs(接收BPDU)
    2. Listening State
    Discards frames received on the port(不收数据帧)

Discards frames switched from another interface for forwarding(不转发从其它端口接收的数据帧)

Does not learn addresses(不学习MAC地址)

Receives BPDUs(接收BPDU)

3. Learning State

Discards frames received on the port(不收数据帧)

Discards frames switched from another interface for forwarding(不转发从其它端口接收的数据帧)

Learns addresses(学习MAC地址)

Receives BPDUs (接收BPDU)

4. Forwarding State

Receives and forwards frames received on the port(接收并且转发数据帧)

Forwards frames switched from another port(转发从其它端口接收的数据帧)

Learns addresses(学习MAC地址)

Receives BPDUs(接收BPDU)

5.Disabled State

Discards frames received on the port(不收数据帧)

Discards frames switched from another interface for forwarding(不转发从其它端口接收的数据帧)

Does not learn addresses(不学习MAC地址)

Does not receive BPDUs(不接收BPDU)

Blocking(阻塞状态):此时,二层端口为非指定端口,也不会参与数据帧的转发。该端口通过接收BPDU来判断根交换机的位置和根ID,以及在STP拓扑收敛结束之后,各交换机端口应该处于什么状态。

在默认情况下,端口会在这种状态下停留20秒钟时间。

被阻塞的端口将不能转发帧,它只监听BPDU。设置阻塞状态的意图是防止使用有环路的路径。当交换机加电时,默认情况下所有的端口都处于阻塞状态。

尽管阻塞端口不能转发帧,但它仍然可以接收帧,包括BPDU。

Listening(侦听状态):生成树此时已经根据交换机所接收到的BPDU而判断出了这个端口应该参与数据帧的转发。于是交换机端口就将不再满足于接收BPDU,而同时也开始发送自己的BPDU,

并以此通告邻接的交换机该端口会在活动拓扑中,参与转发数据帧的工作。在默认情况下,该端口会在这种状态下停留15秒钟的时间。

端口都侦听BPDU,以确信在传送数据帧之前,在网络上没有环路产生。处在侦听状态的端口,在没有形成MAC地址表时,就准备转发数据帧。

Learning(学习状态):这个二层端口准备参与数据帧的转发,并开始填写MAC表。在默认情况下,端口会在这种状态下停留15秒钟时间。

交换机端口侦听BPDU,并学习交换式网络中的所有路径。处在学习状态的端口形成了MAC地址表,但不能转发数据帧。转发延迟意味着将端口从侦听状态转换到学习状态所花费的时间,

默认时设置为15秒,可以用命令show spanning-tree显示出来。

Forwarding(转发状态):这个二层端口已经成为了活动拓扑的一个组成部分,它会转发数据帧,并同时收发BPDU。

在桥接的端口上,处在转发状态的端口发送并接收所有的数据帧。 如果在学习状态结束时,端口仍然是指定端口或根端口,它就进入转发状态。

Disabled(禁用状态):此二层端口不会参与生成树,也不会转发数据帧。

从管理上讲,处于禁用状态的端口不能参与帧的转发或形成STP。处于禁用状态下,端口实质上是不工作的。

注:只有在学习状态或转发状态下,交换机才能填写MAC地址表。

当首次将交换机的端口连接在一起时,链路灯是橙色的,然后变绿,表示操作正常了。这就是生成树的收敛。在没有启用生成树扩展时,这个过程需要50秒。

当连接到交换机端口时,如果交换机端口的LED在绿色和琥珀色之间交替变化,就说明端口不正常。

如果出现了这种情况,可以检查一下网卡(NIC)或电缆。

5)如果有冗余链路的存在并且关闭了交换机上的生存树协议的话网络将很容易瘫痪。

生成树协议是通过在网络中选举根交换机,并在其他非根交换机上指定接收BPDU的端口来避免广播风暴的产生的。

6)收敛:当网桥或交换机上的所有端口都转变到转发或阻塞状态时,就产生了收敛。在收敛完成之前,交换机不能转发任何数据。在重新转发数据之前,所有的设备都必须更新。是的,STP正在收敛时,所有主机的数据都会停止发送!

因此,如果你想让网络中的用户能够继续发送数据(或者保持他们在任何时候都有可用链路),就必须保证交换式网络的实际设计确实很好,以便STP能够快速收敛。

从阻塞状态转变到转发状态通常要花50秒,建议不要改变默认的STP定时器时间(但如果需要的话,可以调整这些定时器)。     在交换机端口上,生成树拓扑从阻塞到转发的典型收敛时间为50秒,在服务器或主机上,

这会引起超时问题—比如当你重新引导它们时。要解决这个问题,可以使用端口加速(PortFast)在某个端口上禁用生成树。

2.工作过程:运行生成树算法(STA)的交换机定期发送BPDU;选取唯一一个根网桥;在每个非根网桥选取唯一一个根端口;在每网段选取唯一一个标志端口。

1)选取唯一一个根网桥:BPDU中包含Bridge ID;Bridge ID(8B)=优先级(2B)+交换机MAC地址(6B);一些交换机的优先级默认为32768,可以修改;

优先级值最小的成为根网桥;优先级值相同,MAC地址最小的成为根网桥;

Bridge ID值最小的成为根网桥;

根网桥默认每2秒发送一次BPDU;

2)在每个非根网桥选取唯一一个根端口:根网桥上没有根端口;端口代价最小的成为根端口;端口代价相同,Port ID最小端口的成为端口;Port ID通常为端口的MAC地址;MAC地址最小的端口成为根端口;

所谓的根端口即用来向根桥发送数据的端口。

3)在每网段选取唯一一个标志端口:端口代价最小的成为标识端口;根网桥端口到各网段的代价最小;通常只有根网桥端口成为标识端口;被选定为根端口和标识端口的进行转发状态;落选端口进入阻塞状态,只侦听BPDU;

4)阻塞端口在指定的时间间隔(默认20秒)收不到BPDU时,会重新运行生成树算法进行选举;缺点:在运行生成树算法的过程中,网络处理阻断状态,所有端口都不进行转发。计算过程默认为50秒。

交换网络里根端口和指定端口以外称为非指定端口,非指定端口在网络里面被生成树协议设为阻塞状态。每个交换机只能有一个根端口,一个物理网段只能有一个指定端口,一个交换网络里面只能有一个根交换机。

建议把大楼的汇聚层的交换机作为大楼里面的根交换机。

3.负载均衡的生成树协议

在生成树协议中每个vlan形成一个树。如果网络中的vlan个数比较多的话,会导致网络中的固定链路的流量很大,其余链路的流量相对较小。在生成树协议中可以采用多个vlan共用一个生成树协议的办法来实现负载均衡。

假如网络中存在10个vlan的话,可以5个vlan共用一个生成树协议的方法把十个vlan的BPDU数据流量分散在两个固定的链路中。

生成树的计时器(都是从根交换机上学来的):

1. Hello time 多长时间发送一次BPDU的数据包

2.Forward Delay 转发时延,指交换机的端口状态在过渡状态下(listening和learning)下维持一个forward delay的时间

3.Maximum Time 最大老化时间,指一个交换机从其它交换机收到一个BPDU数据包以后,这个数据包有效期多长

4.配置及验证STP生成树协议:

Spanning-tree vlan 200 激活生成树协议

Spanning-tree vlan 200 priority 4096 配置优先级

Spanning-tree cost 18 配置端口开销(对于所有VLAN起作用)

Spanning-tree vlan 200 cost 17 (对指定VLAN起作用)

Show spanning-tree vlan 200 查看Vlan的生成树

Show spanning-tree bridge查看交换机的所有生成树信息

5.生成树协议运行生成树算法(STA)。生成树算法很复杂,但是其过程可以归纳为以下3个步骤:

1)选择根网桥:选择根网桥的依据是网桥ID,网桥ID由网桥优先级和网桥MAC地址组成。网桥的默认优先级是32768.使用show mac-address-table时,显示在最前面的MAC地址就是计算时所使用的MAC地址。

网桥ID值小的为根网桥,当优先级相同时,MAC地址小的为根网桥。

2)关于选择根端口:每个非根交换机选择一个根端口。选择顺序为:到根网桥最低的根路径成本→发送BPDU的网桥ID较小→端口ID较小的。端口ID由端口优先级与端口编号组成。默认的端口优先级为128。

3)关于选择指定端口:每个网段上选择一个指定端口。选择顺序为:根路径成本较低→发送BPDU的交换机的网桥ID值较小→本端口的ID值较小。另外,根网桥的接口皆为指定端口,因为根网桥上端口的根路径成本为0。

6.协议不足

1)拓扑收敛慢,当网络拓扑发生改变的时候,生成树协议需要50-52秒的时间才能完成拓扑收敛。

2)不能提供负载均衡的功能。当网络中出现环路的时候,生成树协议简单的将环路进行Block,这样该链路就不能进行数据包的转发,浪费网络资源。

7.STP潜在故障

1)双工不匹配:在点到点链路上,双工不匹配是一种常见的配置错误。当链路的一段采用手工的方式配置为了全双工模式,而另一侧却使用自动协商的默认配置的时候,那么就可能发生双工不匹配的情况。

2)单向链路失效:单向链路是产生桥接环路的一个非常常见的原因。如果光纤链路存在没有检测出来的故障或收发器故障,通常导致单向链路。在启用STP来提供网络冗余的情况下,对于两个链路伙伴之间所连接的物理链路,

如果由于某种原因导致这条链路工作在单向通信的状态下,那么就可能导致桥接环路或路由选择黑洞,进而对维护网络稳定非常有害。

3)帧破坏:帧破坏是导致STP故障的另外一种原因。如果接口正在经受高速的物理错误,其结果有可能就会导致BPDU丢失,而这会使处于阻塞状态的接口过渡到转发状态。

虽然如此,但因为STP默认参数是非常保守的,所以很少会发生上述情况。

4)资源错误:即使在通过专门的ASIC硬件执行大部分交换功能的高端交换机中,STP仍然由CPU来执行。这就意味着:如果处于某种原因而过度使用了网桥的CPU,那么就可能导致CPU没有足够的资源来发出BPDU。通常情况下,

STP不是一种密集调用处理器的应用,而且STP的优先级高于其他进程。因此,出现资源问题的可能性并不大。

5)PortFast配置错误:如果管理员在端口上启用了PortFast特性,那么当链路启动的时候,端口就会绕过STP的监听和学习状态,并且直接过渡到转发状态。但是如果在错误的端口上配置了PortFast特性,那么这种快速过渡就有可能导致桥接环路。

RSTP

1.STP协议由IEEE802.1D定义,RSTP由IEEE802.1W定义。802.1W由802.1D发展而成,这种协议在网络结构发生变化时,能更快的收敛网络。它比802.1D多了一种端口类型:备份端口(backup port)类型,用来做指定端口的备份。

2.RSTP是从STP发展过来的,其实现基本思想一致,但它更进一步的处理了网络临时失去连通性的问题。RSTP规定在某些情况下,处于Blocking状态的端口不必经历2倍的Forward Delay时延而可以直接进入转发状态。如网络边缘端口(即直接与终端相连的端口),

可以直接进入转发状态,不需要任何时延。或者是网桥旧的根端口已经进入Blocking状态,并且新的根端口所连接的对端网桥的指定端口仍处于Forwarding状态,那么新的根端口可以立即进入Forwarding状态。

即使是非边缘的指定端口,也可以通过与相连的网桥进行一次握手,等待对端网桥的赞同报文而快速进入Forwarding状态。当然,这有可能导致进一步的握手,但握手次数会受到网络直径的限制。

3.STP定义了5种不同的端口状态,关闭(disable),监听(Listening),学习(Learning),阻断(Blocking)和转发(Forwarding),其端口状态表现为在网络拓扑中端口状态混合(阻断或转发),

在拓扑中的角色(根端口、指定端口等等)。在操作上看,阻断状态和监听装啊提没有区别,都是丢弃数据帧而且不学习MAC地址,在转发状态下,无法知道该端口是根端口还是指定端口。

  在RSTP中只有三种端口状态,Discarding、Learning和Forwarding。802.1D中的禁止端口,监听端口,阻塞端口在802.1W中统一合并为禁止端口。RSTP根据端口在活动拓扑中的作用,定义了3种端口角色(STP有5种角色):
  禁用端口(Disabled Port)、根端口(Root Port)、指定端口(Designated Port)、为支持RSTP的快速特性规定的替代端口(Alternate Port)和备份端口(Backup Port)。

  

配置生成树模式

  Switch(config)#spanning-tree mode { mstp | rstp | stp }

4.改进

  1)STP没有明确区分端口状态与端口角色,收敛时主要依赖于端口状态的切换。RSTP比较明确的区分了端口状态与端口角色,且其收敛时更多的是依赖于端口角色的切换。
  2)STP端口状态的切换必须被动的等待时间的超时。而RSTP端口状态的切换却是一种主动的协商。
  3)STP中的非根网桥只能被动的中继BPDU。而RSTP中的非根网桥对BPDU的中继具有一定的主动性。
 
PVST

每个VLAN生成树(PVST)为每个在网络中配置的VLAN维护一个生成树实例。它使用ISL中继和允许一个VLAN中继当被其它VLANs的阻塞时将一些VLANs转发。尽管PVST对待每个VLAN作为一个单独的网络,

它有能力(在第2层)通过一些在主干和其它在另一个主干中的不引起生成树循环的Vlans中的一些VLANs来负载均衡通信。

CST成为公共生成树,在生成树收敛的时候,不考虑网络中vlan的存在,只在网络中生成和维护单个生成树;还有一个要注意的是:所有CST的BPDU作为不带标记的帧通过本地vlan进行传输。

PVST是CISCO私有的技术,只能通过cisco的中继链路ISL中继封装发送。per-vlan即给网络中的每个vlan都创建一棵生成树,这样可以解决CTP的问题,为不同vlan通过冗余连接进行负载均衡。

MSTP

1.概念

MST(Multiple Spanning Tree,多生成树)是把IEEE802.1w 的快速生成树(RST)算法扩展而得到的。

  采用多生成树(MST),能够通过干道(trunks)建立多个生成树,关联VLANs到相关的生成树进程,每个生成树进程具备单独于其他进程的拓扑结构;MST提供了多个数据转发路径和负载均衡,提高了网络容错能力,
  因为一个进程(转发路径)的故障不会影响其他进程(转发路径)。
  一个生成树进程只能存在于具备一致的VLAN进程分配的桥中,必须用同样的MST配置信息来配置一组桥,这使得这些桥能参和到一组生成树进程中,具备同样的MST配置信息的互连的桥构成多生成树区(MST Region )

将环路网络修剪成为一个无环的树形网络,避免报文在环路网络中的增生和无限循环,同时还提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN 数据的负载均衡。MSTP 兼容STP 和RSTP,并且可以弥补STP 和RSTP 的缺陷。

它既可以快读收敛,也能使不同VLAN 的流量沿各自的路径分发,从而为冗余链路提供了更好的负载分担机制。

2.MSTP的特点

1)MSTP设置VLAN映射表(即VLAN和生成树的对应关系表),把VLAN和生成树联系起来;通过增加“实例”(将多个VLAN整合到一个集合中)这个概念,将多个VLAN捆绑到一个实例中,以节省通信开销和资源占用率。

  2)MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。
  3)MSTP将环路网络修剪成为一个无环的树型网络,避免报文在环路网络中的增生和无限循环,同时还提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载分担。
  4)MSTP兼容STP和RSTP

随着layer 3技术的进步,spanning-tree已经开始逐步失去自己仅存的接入网市场,更别说Metro的distribution或是core了,因而建议大家如果从研究协议本身出发,可以学习它的设计理念,但最好就不要有其它想法了。

配置实例 1

1.条件:如图

2.1)查看2台交换机的STP配置

Role,角色分5种:

Root Bridge: 根网桥 Root port 根端口

Designated Switch: 指定交换机   Designated port 指定端口

Alternate:替代端口,要注意替代端口和备份端口是不一样的概念。这样理解,替代端口是根端口的"后备".

Backup port 备份端口(阻塞端口)

undesignated port

prio是Priority,就是端口优先级.貌似以太端口的优先级都是128

交换机0:

  

【此交换机为根交换机,端口状态均为转发】

交换机1

【非根交换机,其中1、2、3端口为转发状态,3为根端口,4为替代根端口并处于阻塞状态】

2)修改Brigde ID,重新选根网桥

交换机1:

switch(config)#spanning-tree vlan 1 priority 4096

  

经过50s后:

交换机0:

交换机1:

3)

switch#show spanning-tree

switch#show spanning-tree active

switch#show spanning-tree detail

switch#show spanning-tree interface XX

switch#show spanning-tree vlan XX

1.二层常用技术-STP的更多相关文章

  1. 2.二层常用技术-Portfast和BPDU Guard、BPDU Filter

    PortFast (生成树端口加速) 1.在交换机上使用portfast命令,可以防止出现由于STP的收敛时间太长,导致主机的DHCP请求超时,从而使主机不能接收到DHCP地址的问题. 确保有一台服务 ...

  2. Android无线开发的几种常用技术(阿里巴巴资深工程师原创分享)

    完整的开发一个android移动App需要经过从分解需求.架构设计到开发调试.测试.上线发布等多个阶段,在发布后还会有产品功能上的迭代演进,此外还会面对性能.安全.无线网络质量等多方面的问题. 移动A ...

  3. React.js 常用技术要点

    最近在公司的一个移动端WEB产品中使用了React这个框架(并不是React-Native),记录一下在开发过程中遇到的各种问题以及对应的解决方法,希望能对读者有所帮助. React原则 React不 ...

  4. OC中另外的一个常用技术:通知(Notification)

    OC中另外的一个常用技术:通知(Nofitication)其实这里的通知和之前说到的KVO功能很想,也是用于监听操作的,但是和KVO不同的是,KVO只用来监听属性值的变化,这个发送监听的操作是系统控制 ...

  5. Struts 2 常用技术

    目录  Struts 2 常用技术  1. 常用类和接口  1.1 getter 和 setter 方法  1.2 Action 接口  1.3 ActionSupport 类  1.4 通过 Act ...

  6. 必知干货:Web前端应用十种常用技术你全都知道吗?

    Web前端应用十种常用技术,随着JS与XHTML的应用普及,越来越多的web界面应用技术出现在网站上,比如我们常见的日历控件,搜索下拉框等,这些web界面应用技术大大的丰富了网站的表现形式,本文将为您 ...

  7. 可伸缩性架构常用技术——之数据切分 Data Sharding/Partition

    1. 简介 本来想写一篇可伸缩性架构方面的文章,发现东西太多了,久久未能下笔,这里首先把大家最关注的数据切分(Partition/Sharding)方面的内容先写完,给大家参考. 我们知道,为了应对不 ...

  8. 介绍web开发中实现会话跟踪的常用技术方法

    由于http是无状态的协议,这种特性严重阻碍了客户端与服务器进行动态交互,例如购物车程序,客户在购物车中添加了商品,服务器如何知道购物车已有的物品呢?为了支持客户端与服务器之间的交互,为了弥补http ...

  9. 分布式锁1 Java常用技术方案

    前言:       由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题.所以自己结合实际工作中的一些经验和网上看到的一些资 ...

随机推荐

  1. 使用Modbus4J进行RTU模式串口通信

    Modus协议是由MODICON(现为施耐德电气公司的一个品牌)在1979年开发的,是全球第一个真正用于工业现场的总线协议,应用非常广泛,可谓大名鼎鼎. 理论性的东西就不多介绍了,推荐一本书<M ...

  2. 上传功能-弹窗实现-vue

    -引入弹窗页面 import fileUpload from 'src/page/cuApplyManage/fileUpload.vue'; -页面布局 <div> <fileUp ...

  3. ES6 proxy代理详解及用法

    proxy官方的详细解释为代理器,个人理解为相当于一个拦截器,外部的所有访问必须先通过这层拦截,监视到对象的读写过程,因此提供了这 种机制对外部的访问进行过滤和修改. 上述例子为proxy new一个 ...

  4. linq to entity不识别方法"System.String ToString()"

    将班级id以字符串形式输入如:"1111,1112,1113".数据库里的id为int型,在数据路里找到匹配的相应班级转换成列表.在这里爆出问题:不识别方法"System ...

  5. nacos统一配置中心源码解析

    配置文件想必大家都很熟悉,无论什么架构 都离不开配置,虽然spring boot已经大大简化了配置,但如果服务很多 环境也好几个,管理配置起来还是很麻烦,并且每次改完配置都需要重启服务,nacos c ...

  6. exchangeNetwork

    泛洪(Flooding) 转发(Forwarding) 丢弃(Discarding) 交换机中有一个MAC地址表,里面存放了MAC地址与交换机的映射关系.MAC地址表也称为CAM(Content Ad ...

  7. zabbix 4.X 版本 web字体显示方块

    先看看问题长啥样...... Zabbix 字体乱码(显示呈现方块) 第一种解决方法: # 1) 进入代码存放目录的字体目录: cd /data/www/zabbix/assets/fonts # 2 ...

  8. 【Software Test】Basic Of ST

    文章目录 Learning Objective Introduction Software Applications Before Software Testing What is testing? ...

  9. ctfhub技能树—web前置技能—http协议—Cookie

    打开靶机环境 查看显示内容 根据提示,需要admin登录才能得到flag 题目介绍为Cookie欺骗.认证.伪造 介绍一下cookie和session 一.cookie: 在网站中,http请求是无状 ...

  10. Kioptrix Level 2

    简介 Vulnhub是一个提供各种漏洞环境的靶场平台. 个人学习目的:1,方便学习更多类型漏洞.2,为OSCP做打基础. 下载链接 https://www.vulnhub.com/entry/kiop ...