概述
基础知识
局域网交换机的基本功能
-
交换机的基本概念
局域网交换机(switch)是一种工作在数据链路层的网络设备。
交换机根据进入端口数据帧中的MAC地址,过滤、转发数据帧。
交换式局域网具有独占传输通道、独享信道带宽,同时允许多对站点进行通信、系统带宽等于所有端口带宽之和等特性。
-
局域网交换机的功能
-
建立和维护一个表示MAC地址与交换机端口对应关系的交换表
-
在发送结点和接收结点之间建立一个虚连接
-
完成数据帧的转发和过滤
交换机分析每一个进来的数据帧,根据帧中的目的MAC地址,通过查询交换表,确定是丢弃还是转发帧,数据帧应该转发到交换机的哪一个端口。
-
局域网交换机的工作原理
- 交换机的工作原理与网桥十分相似,它通过自学习的方式建立起一个记录着MAC与交换机端口的映射关系,交换机通过获得数据帧的目的MAC地址和对交换表的查询,确定目的端口后建立连接并实现数据帧的交换。
交换表内容的建立和维护
-
交换表的内容
交换表的内容包括:目的MAC地址、该地址所对应的交换机端口号以及所在的虚拟子网。
-
一个大型交换机的交换表
VLAN Dest MAC/Route Des [Cos] Destination Ports or VCs / [Protocol Type]
VLAN的ID号 目的MAC地址 该地址相对应的交换机的端口号
-
一个小型交换机的交换表
Destination Address Address Type VLAN Destination Ports
目的MAC地址 地址类型 VLAN的ID号 该目的MAC地址所对应的交换机的端口号
-
-
交换表的建立
交换机在初始开机的时候,交换表是空的,使用时,慢慢"学习"建立起它的交换表
-
交换表的维护
由于高速缓存的空间是有限的。
交换机每次查询交换表时所使用到的表项,都盖上一个时间戳;同时交换机每存入一个新的表项时,也给它盖上一个时间戳。
经过长时间没有被使用到的表项,即被删除,以便交换表有足够的空间来加入新的表项。
-
交换表的保存
在中高端交换机中,通常交换表保存在可编址内容存储器(CAM)中,可以通过命令(show cam)显示交换表内容
-
显示交换表命令的使用方法
-
大中型交换机(cisco-4000及以上型号)
在交换机的超级用户模式下,输入命令“show cam dynamic”
-
小型交换机(cisco-3XXX及以下型号)
在交换机的超级用户模式下,输入命令“show mac-address-table”
-
交换机的交换结构
-
软件执行交换结构
交换机接收到数据帧后
先将其由串行代码转化为并行代码,
暂时存储在交换机的快速缓存RAM中
交换机的CPU开始根据数据帧中的目的MAC地址进行查询交换表
确定了目的端口后,交换机在源端口与目的端口之间建立起虚连接
然后将以并行代码形式存储在RAM中的数据帧转化为串行代码
发送到目的端口
上述的步骤都是由软件控制完成的
-
矩阵交换结构
在矩阵交换结构中,交换机确定了目的端口后,根据源端口与目的端口打开交换矩阵中相应的开关,在两个端口之间建立连接,通过建立的这个传输通道来完成数据帧的传输。
- 优点是交换速率快、时延小、易于实现
- 缺点是扩展与可管理性较差
-
总线交换结构
总线交换结构的交换机拥有一条很高带宽的背部总线
交换机的所有的端口都挂接在这条背部总线上,总线按时隙分为多条逻辑通道,各个端口都可以往该总线上发送数据帧,这些数据帧都按时隙在总线上传输,并从各自的目的端口中输出数据帧。
总线交换结构对总线的带宽有较高的要求,设交换机的端口数为M,每个端口的带宽为N,则总线的带宽应为M×N
总线交换结构扩展性和管理性好,易实现帧的广播和多个输入对一个输出的帧传送
-
共享存储器交换结构
共享存储交换结构将共享存储RAM代替了总线交换结构中的总线
数据帧通过共享存储器实现从源端口直接传送到目的端口,它是总线交换结构的改进。
- 优点是结构简单、易于实现
- 缺点是当交换机的端口数量不断增加,存储容量不断扩大的同时,数据交换的时延也会越来越大。而且共享存储交换结构的成本比较高
适合小型交换机采用
交换机的交换模式
-
交换机的交换方式包括
-
静态交换
静态交换是由人工来完成端口之间传输通道的建立,如果没有人工的更改,这些通道是固定不变的
-
动态交换(最常用的交换方式)
动态交换是通过对目的MAC地址的查询而得到的输出端口来临时建立传输通道的,这个传输通道在数据帧传送完成后自动断开
主要的交换模式
-
快速转发(直通转发)
交换机在接收数据帧时,一旦检测到14个字节,目的地址就立即进行转发操作
由于数据帧在进行转发处理仅是帧中的MAC地址部被复制到缓冲区,这时它并不是一个完整的帧,因此这个数据帧将无法经过校验、纠错,即被直接转发,即使是有错误的数据帧,仍然被转发到网络上
优点 : 端口交换时延小,交换速度快
缺点 : 可靠性较差,因此它适合于小型的交换机
-
碎片丢弃(自由分段)(碎片隔离交换)
交换机接收到数据帧时,先检测该数据帧是不是冲突碎片
如果不是冲突碎片,也不保存整个数据帧,而是在接收了它的目的地址就直接进行转发操作
如果该数据帧是冲突碎片,则直接将该帧丢弃
冲突碎片是因为网络冲突而受损的数据帧碎片,其特征是长度小于64字节,它不是有效的数据帧,应该被丢弃。
交换机检测该数据帧是否冲突碎片,是通过判断这个数据帧的长度是否达到64字节
小于64字节的数据帧都将被视为冲突碎片
等于或大于64字节的数据帧都被视为有效帧
碎片丢弃交换模式过滤掉了冲突碎片,提高了网络传速的效率和带宽的利用率
-
存储转发(应用最为广泛)
与前两种转发模式与最大的不同在于:它将接收到的整个数据帧保存在缓冲区中。它把数据帧先存储起来,然后进行循环冗余码校验检查,在对错误帧进行处理后,才取出数据帧的目的地址,进行转发操作
缺点 : 数据处理的延时大
优点 :
- 对进行交换机的数据帧进行错误检测, 有效的改善网络性能
- 同时可以支持不同速度的端口间的转换,保持高速端口与低速端口间的协同工作
-
-
交换机的分类
-
根据交换机支持的局域网标准分类
-
Ethernet交换机
根据传输速率和介质分类
- 一般Ethernet交换机
- 快速Ethernet交换机
- 千兆Ethernet交换机
- 万兆Ethernet交换机
-
FDDI交换机
-
ATM交换机
-
令牌交换机
-
-
根据交换机的构架分类
- 单台交换机
- 堆叠交换机
- 模块化交换机
-
按OSI参考模型的层次分类
- 第二层交换机
- 第三层交换机
- 第四层交换机
- 多层交换机
虚拟局域网VLAN技术
-
VLAN的基本概念
VLAN是以交换式网络为基础,把网络上的用户终端被划分为多个逻辑工作组,每一个逻辑工作组即为一个VLAN
该逻辑组都是一个独立的逻辑网段和广播域
这个逻辑组的设定不受实际交换机区段的限制,也不受用户所在的物理位置和物理网段的限制
逻辑组的设定在交换机中是通过软件完成的
-
VLAN的技术特点
-
VLAN工作在OSI参考模型的第2层数据链路层
-
每一个VLAN都是一个独立的逻辑网段和广播域,其广播的信息只发送给该VLAN中的节点
-
每一个VLAN都是一个独立的网络,各自有唯一不同的子网号,VLAN只能通过第3层路由才能进行通信而不能直接完成通信
-
-
VLAN的标识
-
VLAN通常用VLAN ID或是VLAN name来标识
-
VLAN ID由IEEE 802.1Q标准规定由12位二进制数,则它可以标识4096个VLAN。
其中,ID=1~1005是标准范围;其中1~1000用于以太网,2002~1005是FDDI和Token Ring使用,ID=1025~4096是扩展范围
-
VLAN name由32位字符表示,可以是字母或数字。
如果建立一个VLAN时没有给该VLAN一个名字,则系统会自动为它分配一个名字。
如VLAN ID是111,则其缺省VLAN名为VLAN00111
-
-
VLAN Trunk
VLAN Trunk(虚拟网中继)技术即是实现在多个交换机之间或是在交换机与路由器之间进行多个VLA信息传输的技术。Trunk是一种封装技术,它是一条点到点的链路,主要功能就是仅通过一条链路就可以连接多个交换机从而扩展已配置的多个VLAN。
VLAN Trunk的标准机制是帧标签。帧标签卫每一个数据帧指定一个唯一的VLAN ID,这样即可表示该数据帧是属于哪一个VLAN的
- 在主干线路上要传输多个VLAN(VLAN1、VLAN2、VLAN3)的信息,则连接主干线路的两台交换机端口应具有Trunk功能。
-
划分VLAN的方法
-
基于端口划分VLAN交换机
由网络管理员根据交换机端口进行静态的VALN 分配,每个端口属于一个VLAN。
当在交换机上将其某一个端口分配给一个VLAN 时,将一直保持不变直到网络管理员改变这种配置。
-
基于MAC地址
-
基于第三层协议类型或地址
按照网络层协议类型(TCP/IP、IPX、DECNET等)或按网络地址定义VLAN成员
-
生成树协议STP
-
生成树协议STP是一个二层的链路管理协议,它的功能是保证在网络中没有回路的前提下,为第二层提供冗余路径
-
在一个安全性比较高的网络中,都应该有链路冗余。它可以为两个站点之间提供多条传输路径,防止网络中的单点失效,提高了网络的可靠性。
当然链路冗余也会导致一定的弊端,多链路多路径有可能会形成回路,这样数据在环路无限循环,或者使站点重复接收同一数据;或者使交换机在多个端口上得到同一个终端站点的MAC地址,以致数据不能准确地被发送到目的地址。另外,回路还可能产生广播风暴,影响整个网络的正常运行
-
为了解决这一问题,提出了生成树协议STP,并制定出了相关的IEEE 802.1D标准
-
STP的基本工作原理是
通过交换机之间传递网桥协议数据单元(BPDU),并用生成树算法(STA)对其进行计算。
首先选定一个根网桥,然后确定交换机冗余链路端口的工作状态,让一些端口进入阻塞(blocking)工作模式,另一些端口进入转发模式。其中阻塞端口仍然是以个激活的端口,但它只能接收和读取BPDU,不能接收和转发数据帧
如果网络拓扑发生变化或是生成树中的一个路径因故障而失效时,生成树就会重新计算,激活其他的备份链路,生成新的树拓扑,并强制将原来的故障链路变为备份链路,这时端口状态也会随之改变,以保证数据的传输路径是唯一的
交换机与网桥在STP的工作过程中是有区别的。交换机要对VLAN进行处理,它指定一个根交换机,并为每一个VLAN选择一个根网络,然后再确定各个冗余端口的阻塞或转发状态,保证唯一的传输路径,并将其他的冗余链路作为备份链路,生成无回路的拓扑结构。
BPDU为STP的根网络确定乃至整个树状结构的生成提供必要的信息。 每2s或是在网络发生故障、网络拓扑变化时,便发送新的BPDU,以维护生成树树状结构
BPDU中的信息包括Root ID、Root Path Cost、Bridge ID、Port ID、Hello time、Max Age
BPDU数据包有两种类型
- 一种是包含配置信息的配置BPDU(不超过35字节)
- 另一种是包含拓扑变化信息的拓扑变化通知BPDU(不超过4字节)
Root ID和Bridge ID用8字节表示,2个字节的优先级和6个字节的MAC地址。优先级默认为32768,取值范围0~61440,增量值是4096,以小为优。当优先级相同时,那么就要根据MAC地址决定根网桥,MAC地址小的路由器就是根网桥
交换机的配置
交换机的配置方式
-
使用Console端口配置
使用控制端口(Console)配置交换机
Console是一个用来连接配置终端的异步串行口,接口标准为RJ-45。
是交换机刚出厂时,第一次对其进行配置所用的方法。
使用Console端口配置交换机时,需要准备一台已经安装了超级终端软件的计算机作为配置终端,同时还需要一条由厂家提供的RJ-45到9针或25针异步串行接口的信号电缆。
使用超级终端软件对异步串行口进行参数配置:传输速率9600,数据位8位,停止位1位
-
使用telnet命令配置
先做好以下几点
- 交换机与作为模拟终端的计算机都与网络连接,且能通过网络进行通信
- 该计算机有访问交换机的权限
- 交换机已配置好设备管理地址(如IP地址、子网掩码等)和控制远程登录的密码
-
使用浏览器配置交换机
确认已经做好以下准备工作
- 在用于配置的计算机中已安装TCP/IP协议,并且在用于配置的计算机和被管理的交换机上都已经配置好IP地址,它们可以通过网络进行通信。
- 用于配置的计算机中安装有支持Java的Web浏览器,如Internet Explorer 4.0及以上版本、Netscape 4.0及以上版本等。
- 在被管理的交换机上建立了拥有管理权限的用户帐户和密码
- 被管理交换机支持HTTP服务,并且已经启用了该服务
具体步骤
-
交换机的配置
-
启用交换机的HTTP Server
CatOS: Catalyst6500> (enable) set ip http server enable
Cisco IOS: switch-3548(config)#ip http server
-
-
配置HTTP用户认证方式
enable、 local、tacacs
-
下载并安装Jave-plugin插件
-
使用Web浏览器监控和配置交换机
配置交换机的系统信息
-
配置交换机的主机名
-
Cisco IOS
switch-3548(config)#hostname switch-PHY-3548
switch-PHY-3548(config) #
-
CatOS
CatOS6500> (enable) set system name switch-PHY-6500
System name set.
switch-PHY-6500 > (enable)
-
-
配置超级用户口令
-
Cisco IOS
switch-3548(config)# enable password zzz(明文)
switch-3548(config)# enable password 7 zzz(加密)//7表示加密的意思 zzz是具体密码
switch-3548(config)# enable secret 5 zzz(加密) //配置文件中是加密的 -
CatOS
CatOS6500> (enable) set enablepass
Enter old password:
Enter new password:
Retype new password:
Password changed
-
-
设置远程登录口令
-
Cisco IOS
switch-3548 (config)#line vty 0 4
switch-3548 (config-line)# password 0 zzz (明文)
switch-3548 (config-line)# password 7 zzz (加密)
switch-3548 (config-line)# -
CatOS
CatOS6500> (enable) set password
Enter old password:
Enter new password:
Retype new password:
-
-
设置系统时间
-
Cisco IOS
switch-3548#clock set 08:30:00 23 Nov 2010
-
CatOS
Catalyst 6500> (enable) set time Mon 06/15/98 12:30:00
Mon Jun 15 1998, 12:30:00
Catalyst 6500> (enable)
-
-
配置设置管理地址(IP地址)和默认路由
-
Cisco IOS
switch-3548(config)#int vlan 1
switch-3548 (config-if)#ip address 10.10.10.2 255.255.255.0
switch-3548 (config-if)# exit
switch-3548(config)#ip default-gateway 203.105.1.1
-
CatOS
CatOS6500> (enable) set interface sc0 10.10.10.3
255.255.255.0 10.10.10.255 (广播地址,可选)
Interface sc0 IP address and netmask set.
Catalyst 6500> (enable) set ip route 0.0.0.0 202.110.59.164
-
交换机端口配置
-
交换机端口的基本配置任务有
- 端口描述信息
- 端口通信方式
数据通信通常有单工、半双工、全双工三种通信方式,交换机一般都是半双工或全双工通信方式
直接相通的两台交换机双方端口通信方式必须一致,否则将产生严重丢包,影响网络正常运行
有时需要强制将交换机端口设置为某种通信方式
- 端口传输速率
-
配置交换机的端口描述
-
Cisco IOS
switch-3548 (config)#interface fastEthernet 0/24
switch-3548 (config-if)#description To-lib -
CatOS
CatOS6500> (enable) set port name 1/2 Server Link
-
-
配置交换机端口的关闭与开启
-
Cisco IOS
switch-3548(config)#int fastEthernet 0/24
switch-3548(config-if)#shutdown
switch-3548(config-if)#no shutdown
-
CatOS
CatOS6500> (enable) set port enable 4/5
CatOS6500> (enable) set port disable 4/5
-
-
配置交换机端口的通信方式
-
Cisco IOS
switch-3548(config)#int fastEthernet 0/24
switch-3548 (config-if)# duplex full
switch-3548(config-if)# duplex half
switch-3548(config-if)# duplex auto
-
CatOS
CatOS6500> (enable) set port duplex 5/1 full
CatOS6500> (enable) set port duplex 5/1-24 full
CatOS6500> (enable) set port duplex 5/1 half
CatOS6500> (enable) set port duplex 5/1-24 half
-
-
配置交换机端口的传输速率
-
Cisco IOS
switch-3548(config)#int fastEthernet 0/24
3548(config-if)# speed 10 (单位Mbps)
3548(config-if)# speed 100
3548(config-if)# speed auto
-
CatOS
CatOS6500> (enable) set port speed 5/1 auto
CatOS6500> (enable) set port speed 5/1-24 auto
CatOS6500> (enable) set port speed 5/1-24 10
CatOS6500> (enable) set port speed 5/1-24 100
CatOS6500> (enable) set port speed 5/1-24 1000
-
-
配置交换机端口的两种系统的区分
-
Cisco IOS : 进入接口模式,设置属性,内容
switch-3548(config)#int fastEthernet 0/24
3548(config-if)# speed 10 (单位Mbps)
-
CatOS
CatOS6500> (enable) set port speed 5/1-24 1000
无接口模式
格式 : set 对象类型(port) 属性 具体对象(接口号) 内容连续端口只写一个模块号
-
交换机VLAN的配置
VTP是VLAN中继协议,它是OSI参考模型第二层协议,主要用于管理在同一个域的网络范围内VLAN的建立、删除和重命名。在VTP server上配置一个新的VLAN时,该VLAN的配置信息将自动传播到本域内的所有其他交换机。其他交换机与VTP server保持一致。这样减少了配置同一个VLAN的工作量,保持了VLAN配置的一致性。
-
VTP有三种工作模式
-
VTP Server
维护该VTP域内的所有VLAN信息列表,可以建立、删除和修改VLAN。一般,一个VTP域内只设定一个VTP Server
-
VTP Client
同步学习VTP Server的VLAN信息列表,不可以建立、删除和修改VLAN。
-
VTP Transparent
不参与VTP工作,不同步学习VTP Server的VLAN信息列表,可以建立、删除和修改VLAN
-
交换机VTP的配置
-
Cisco IOS
switch-3548(config)# vtp mode transparent
switch-3548(config)# vtp mode server(缺省值)
switch-3548(config)# vtp mode client
switch-3548(config)# vtp domain pku
-
CatOS
CatOS6500> (enable) set vtp mode transparent
CatOS6500> (enable) set vtp mode server (缺省值)
CatOS6500> (enable) set vtp mode client
CatOS6500> (enable) set vtp mode off (VTP关闭)
CatOS6500> (enable) set vtp domain pku
VLAN的创建、删除、修改
VLAN通常用VLAN ID(VLAN号:由12位组成,可以支持4096个VLAN,1~1005是标准范围,1025~4096是扩展范围,可用于以太网的是2~1000,FDDI和Token Ring的是1002~1005)和VLAN name (VLAN名:32位标识符组成,可以是字母和数字)来标识,1是缺省VLAN,只能使用但不能删除它。
不给定名字的VLAN,系统自动按缺省的VLAN(VLAN00xxx)建立,
xxx
是VLAN ID
-
Cisco IOS
-
建立vlan
switch-3548 # vlan data /进入 vlan配置模式
switch-3548(vlan)# vlan 1000 name vlan1000
switch-3548(vlan)# exit
-
删除vlan
switch-3548 (vlan)# no vlan 1000
-
修改vlan
switch-3548(vlan)# vlan 1000 name v1000
-
-
CatOS
-
建立vlan
CatOS6500> (enable) set vlan 999 name vlan999
-
删除vlan
CatOS6500> (enable) clear vlan 999
-
修改vlan
CatOS6500> (enable) set vlan 999 name v 999
-
为交换机端口分配vlan
-
Cisco IOS
switch-3548# configure terminal
switch-3548(config)# int f0/24
switch-3548 (config-if)# switchport access vlan 248 -
CatOS
CatOS6500> (enable) set vlan 42 5/20
VLAN trunk的配置
在交换机互连的汇聚链路上传输多个VLAN信息是, 需要在数据帧中附加相应的VLAN信息,用于标志这个数据帧是属于哪一个VLAN信息,也就是要为每一个数据帧加上一个VLAN帧标签
VLAN协议就是为VLAN帧标签定义的一组约定和规则
目前具有代表性的VLAN协议有
-
Cisco ISL: 思科私有协议
-
**IEEE 802.1Q : 俗称"Dot One Q"(dot1q),国际标准。IEEE 802.1Q可用于不同厂家的交换设备互连, 且双方交换机端口上都要封装dot1q协议,**保证协议的一致性,否则不能正确的传输多个VLAN信息
-
Cisco IOS
switch-3548# configure terminal
switch-3548#(config)# interface f0/24
switch-3548#(config-if)# switchport mode trunk
switch-3548# (config-if)# switchport trunk encapsulation dot1Qswitch-3548# (config-if)# switchport trunk encapsulation isl
switch-3548# (config-if)# switchport trunk encapsulation negotiateswitch-3548#(config-if)# switchport trunk allowed vlan 10,14
switch-3548#(config-if)# switchport trunk allowed vlan 10-14
switch-3548#(config-if)# switchport trunk allowed vlan except 100-1000
-
CatOS
CatOS6500> (enable) set trunk 5/1 on dot1Q
CatOS6500> (enable) set trunk 5/1 vlan 37-42
CatOS6500> (enable) clear trunk 5/24 3-36 (无vlan)
交换机STP配置
打开或关闭STP
-
Cisco IOS
switch-3548# configure terminal
switch-3548 (config)# spanning-tree vlan 3
switch-3548 (config)# no spanning-tree vlan 3 -
CatOS
CatOS6500> (enable) set spanning-tree enable 3
CatOS6500> (enable) set spanning-tree disable 3
配置根网桥和备份根网桥
-
Cisco IOS
switch-3548 (config)# spanning-tree vlan 3 root primary
switch-3548 (config)# spanning-tree vlan 3 root secondary
-
CatOS
CatOS6500> (enable) set spanning-tree root 1,200-204
CatOS6500> (enable) set spanning-tree secondary 1,200-204
配置生成树优先级
生成树优先级的取值范围是0~61440,增量是4096。优先级的值越小优先级越高,如果优先级为0是最高优先级,61440优先级最低
-
Cisco IOS
switch-3548 (config)# spanning-tree vlan 3 root priority 8192
-
CatOS
CatOS6500> (enable) set spanning-tree priority 8192
配置BackboneFast生成树可选功能
BackboneFast的功能是当间接链路失效(骨干链路失效)使堵塞的端口不再等待生成树最大存活时间(Max Age),直接将端口由侦听->学习->转发状态的转换,大约需要30s时间。提高了间接链路失效情况下的收敛时间。
配置UplinkFast生成树可选功能
UplinkFast的功能是当生成树拓扑结构发生变化和在使用上连链路组的冗余链路之间负载平衡时,提供快速收敛。 直接链路失效时UplinkFast将处于堵塞转台的端口跳过侦听和学习两个状态,直接转换到转发状态。提高了直接链路失效情况下的收敛时间。
配置PostFast生成树可选功能
PostFast用于在接入层交换机端口上跳过正常的生成树操作,加快终端工作站接入到网络中的速度。
该端口一般只能用于连接单个主机(如PC)或服务器,不能连接集线器、中继器、交换机、网桥等网络设备。否则,将可能造成暂时的生成树循环。
配置BPDU Filter生成树可选功能
成树可选功BPDU Filter会使交换机在指定的端口上停止发送BPDUs,对于进入这个端口的BPDUs也不做任何处理,同时立刻将端口状态转换为转发状态。
-
Cisco IOS
switch-3548 (config)# spanning-tree backbonefast
switch-3548 (config)# spanning-tree uplinkfast max-update-rate 32000
switch-3548(config)# spanning-tree uplinkfast
switch-3548 (config)# spanning-tree portfast default
switch-3548 (config)# spanning-tree portfast
bpdufilter default
-
CatOS
CatOS6500> (enable) set spantree backbonefast enable
CatOS6500> (enable) set spantree uplinkfast enable
CatOS6500> (enable) set spantree uplinkfast enable rate 40
CatOS6500> (enable) set spantree portfast 3/2 enable
CatOS6500> (enable) set spantree bpdu-filter enable
CatOS6500> (enable) set spantree bpdu-filter 3/1-24 enable
最后
以上就是老实棒球为你收集整理的交换机及其配置的全部内容,希望文章能够帮你解决交换机及其配置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复