使用到的模拟软件是Cisco packet tracer。
MAC地址
每台计算机都有独立的MAC地址,标记了该计算机在局域网中的位置。
MAC地址是48位的二进制数组合,或者是12位的十六进制数组合。前6位是厂商标识,后6位是硬件标识。
可以用ifconfig 或 ip a 来查看计算机网卡的MAC地址。
数据链路层将MAC地址封装到帧内,以进行局域网内计算机的通信。
交换机工作原理
交换机作为数据链路层的代表性设备,在局域网内的计算机通信过程中发挥了巨大的作用:
- 连接多个以太网物理段,隔离冲突域
- 对帧进行高速而透明的交换转发
- 自行学习和维护MAC地址信息
交换机通过维持一张MAC地址表,来实现局域网内的计算机之间的一对一通信。它的工作过程可以用4个词来概括,学习/广播/转发/更新。

- 学习:初始MAC地址表中并无表项。交换机通过学习来填充MAC地址表。假设PCA发出数据帧,交换机就会将MAC_A与接收到该帧的端口E1/0/1关联起来,并填入MAC地址表。
- 广播:交换机将PCA的数据帧向除了E1/0/1以外的所有端口发送。
- 转发:交换机将按照MAC地址表将帧转发往目的端口。
- 更新:每隔300s,交换机会将不活跃的MAC地址表项清除,以减少维护MAC地址表的压力。
学习后得到的完整MAC地址表如下图所示:

搭建局域网
对于搭建两人通信的局域网,不需要借助于交换机,只需要将两台主机之间铜鼓线缆连接,配置IP地址,使其在同一网段下,便可以实现通信的效果。
若需要搭建三人以上的局域网,必须借助于交换机。交换机可以自主学习和维护MAC地址表,故交换机不需要配置。我们只需要配置主机的IP地址,使其在同一网段下,便可以实现主机之间的相互通信。
相互通信后,进入交换机的命令行界面查询得到的MAC地址表如下所示:
VLAN
利用交换机构建的局域网之间是互联互通的,为了防止广播风暴的出现,并且因为分工的不同,我们需要将交换机所连接的主机进行分组管理。所以我们引入了VLAN来隔离广播域,使得不同的VLAN之间的主机无法互相通信。同时还可以提高通信的安全性。

划分VLAN只需要两步:
- 创建VLAN:VLAN的编号范围是2~4095。(交换机默认将所有的端口划分到VLAN 1)
- 将端口绑定到VLAN上
我们欲建立一个如下的局域网:PCA与PCC属于VLAN 10,PCB和PCD属于VLAN 20,使得PCA与PCC之间可以互相通信,但是PCA不能与PCB通信,如下图所示:

利用Cisco packet tracer模拟情景:
在交换机内的命令行输入如下命令即可完成配置
Switch>enable ##进入特权模式
Switch#config t ##进入配置模式
## Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#vlan 10 ##创建vlan 10
Switch(config-vlan)#vlan 20 ##创建vlan 20
Switch(config-vlan)#interface fastethernet0/1 ##进入端口0/1
Switch(config-if)#switch access vlan 10 ##将该端口加入vlan 10
## 同理可完成vlan 20的配置
Trunk
交换机上的端口有限,不能将所有的主机都连接在一台交换机上。那么我们要如何进行跨交换机的VLAN划分?答案是借助于Trunk。
Trunk链路一般用于用户交换机之间的连接。在链路上传输的是带VLAN标签的数据帧,但是用于接收的是不带VLAN标签的数据帧。

利用Cisco packet tracer模拟上图场景:PCA和PCC同处于VLAN10,PCB和PCD同处于VLAN20。
在交换机1的命令行配置如下,以同理配置交换机2,即可实现情景:
Switch>enable
Switch#config t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#vlan 10
Switch(config-vlan)#vlan 20
Switch(config-vlan)#int f0/1 # 进入接口fa0/1
Switch(config-if)#switch access vlan 20 #将接口fa0/1加入vlan20
Switch(config-if)#int f1/1 # 进入接口fa1/1
Switch(config-if)#switch access vlan 10 #将接口fa1/1加入vlan10
Switch(config-if)#int f2/1 # 进入接口fa2/1
Switch(config-if)#switch mode trunk #将fa2/1接口模式改为trunk
trunk链路所连通的两个接口不属于任何VLAN。