端口协商参数:
    speed - 速率;
    duplex - 双工模式
               半双工 - 同一时刻,只能收或者发;
               全双工 - 同一时刻,可以同时收和发;
建议:
    不同类型的设备之间进行互联链路时,需要手动指定速率和双工

========================================================

传统交换网络存在的问题:
       单点故障
       
解决方案:
       增加冗余链路
       增加冗余设备
           
           搞清楚环路是如何形成?

随之而来的问题:
       数据转发环路;
       产生环路的数据,会不断的在网络中进行传输,从而消耗
       网络中链路资源和设备资源;
解决方案:
    在交换机上运行 STP 协议;  
       
-------------------------------------------------------       
STP(生成树协议):
    树:只要有这个字的协议搭建的网络就不会存在环路问题。
    BID:网桥(交换机)的名字
    作用:
        存在冗余链路的情况下,实现环路的防护;
    实现:
        BPDU —— 桥接协议数据单元
            Root——ID    //表示根交换机是谁;
            cost         //表示发送该BPDU的交换机距离;
            BID        //表示发送该BODU的交换机的名字;
            prot——ID    //表示发送方交换机是在哪个端口发送出来的;
                        组成:
                            端口优先级,端口号(优先级默认值为128)
    分类:
        STP /PVST(30-50S收敛时间) / RSTP / MSTP


1、确定交换机角色
    根交换机    —— 一个vlan/lan 有且只有一个根
    非根交换机    —— 除了根,其他的都叫非根交换机
        选举原则:
            比较BID,越小越好;
            BID组成——优先级+MAC
            优先级 ——默认32768
            MAC —— 交换机基MAC
            show version

2、确定端口角色
   根端口 - 每一个非根交换机只有一个距离根交换机最近的口
   指定端口 - 每一个“冲突域”中都存在一个距离根交换机最近的口
   非指定端口- 其他所有端口,都叫做非指定端口    
    
    如何表示“距离” ?
        在 STP 中,通过 cost 表示一个路径的距离;
        对于某些链路,均有默认的 cost 值:
            10M - cost 100 ;
            100M - cost 19 ;
            1G - cost 4 ;
            10G - cost 2 ;
    BPDU -
      Root-ID   //表示根交换机是谁;
      Cost      //表示发送该BPDU的交换机到达 根交换机 的距离
      BID       //表示发送该BPDU的交换机的名字;
      Port-ID   //表示发送方交换机是在哪个端口发送出来的;
                   -组成:
                       端口优先级.端口号
                          -优先级默认值为 128 ;

    

3、确定端口状态
    disable            //相当于shutdown,此时端口不能使用;
    listening            //侦听,该状态侦听的是BPDU,用于确定端口角色;
    learning            //学习,该状态学习的是MAC,形成MAC地址表;
    fowarding            //转发,即端口的最终转发状态;
        根端口、指定端口
    block                //堵塞,此时的端口是不可以发送数据的;
        非指定端口

     
修改交换机的 STP 优先级:
     SW2(config)#spanning-tree vlan 1 priority 0        

     导致的结果,此时网络中的“根交换机”由 SW1 变成了 SW2 ;

     注意:
         当我们修改交换机的优先级的时候,发现问题:
        
SW2(config)#spanning-tree vlan 1 priority 1
% Bridge Priority must be in increments of 4096.
% Allowed values are:
  0     4096  8192  12288 16384 20480 24576 28672
  32768 36864 40960 45056 49152 53248 57344 61440        
        

    即:交换机的 STP 优先级必须得是 4096 的倍数;
 
开启一个 VLAN 的 STP 协议:
    默认情况下,交换机为每个 VLAN 打开了 STP ;
    想关闭:
         no spanning-tree vlan 200
    验证:
         show spanning-tree
    
    
    
交换机如何区分不同 VLAN 的 BPDU :
    我们使用 BID 中的 2 个字节的优先级中的 低12 bit 作为
    vlan 号 ;
    
    由此得出:
        前面2个字节的优先级字段,真正用来表示优先级的,仅有4bit ;
         所以呢优先级只能有 16 个 ;
        但是,在表示优先级数值的时候,后面的12bit,都必须算上
        同时,必须是0;
        即,每个交换机的 STP 的优先级,都是 2的12次方的 0-15
        倍数,即 4096的倍数;
=============================================================

STP收敛速度优化方案:
Port-fast特性:
    可以确保将 access 链路上连接的终端设备,直接从disale 状态变成转发状态
    端口状态转换时间,从原来的30S降低为0S;
        针对Access 链路——
        interface fas0/1            //连接的PC;
        switchport mode access
        swtichport access vlan 1
        spanning-tree portfast        //开启port-fast功能
    验证命令:
        show spanning-tree interface fas 0/1 portfast;

Uplink fast 特性:
    针对的是交换机之间的Trunk链路
    当交换机发现自己本身的链路出现故障以后,
    会快速的将备份链路转换为主链路进行使用,
    切换时间,从原来的30S,减为为0S,实现秒切,
    
    (该命令在模拟器上无法执行)
    配置命令:
        SW(config)#spanning-tree uplinkfast
    验证命令
        SW#show spanning-tree summary

    注意:
        1、仅针对设备发现的直连故障的链路切换;
        2、仅在本地设备开启即可,对端设备可以不开启;
        3、STP的优先级,必须是默认的32768;