实验 5:交换机的自学习算法
# 50.实验5:交换机的自学习算法
本实验的目的在于验证交换机的自学习算法。
首先需要构建网络拓普,我们使用三台计算机,然后使用一个交换机把它们连接起来,我们选择自动连线将每个计算机连接到交换机上就可以了,那么交换机的接口是橙色的,我们切换右下角的实时和仿真模式,多切换几遍,直到交换机的接口变为绿色,接下来给各计算机配置一个 IP 地址,给各计算机旁边标注上 IP 地址和 MAC 地址,这样做是为了我们后续实验观察的时候比较方便,那在右边的工具栏上选择这个放置注释的按钮,然后在计算机旁边点击鼠标左键,输入 IP 地址。
输入完了之后注意可以把鼠标切回到选择状态,我们再来标注一下各计算机的 MAC 地址,先来看上面这台计算机,左键点击它在弹出窗口里面选择配置,然后选择他的快速以太网卡,然后这个地方我们可以看到它的 MAC 地址,我们把它选中,然后鼠标右键弹出菜单里面选择复制,把窗口关掉,然后再点之前文本,然后回车。以此类推,这一台计算机和左边这台计算机都这样标注。
输入完了之后注意可以把鼠标切回到选择状态,我们再来标注一下各计算机的 MAC 地址,先来看上面这台计算机,左键点击它在弹出窗口里面选择配置,然后选择他的快速以太网卡,然后这个地方我们可以看到它的 MAC 地址,我们把它选中,然后鼠标右键弹出菜单里面选择复制,把窗口关掉,然后再点之前文本,然后回车。以此类推,这一台计算机和左边这台计算机都这样标注。
# 交换机自学习
下面我们切换到仿真模式,然后我们在事件列表过滤器中把所有的协议先给它隐藏掉,然后我们进行编辑,只选择 ARP 协议和 ICMP 协议即可。
接下来我们让左边这台计算机给右边这台计算机发送一个简单的 PDU,这个 PDU 其实是用 ICMP 协议封装的,我们点击右侧工具栏上面的添加简单的 PDU 然后我们点击发送方,再点击接收方。
我们可以看到这个是本来用 ICMP 协议打包的,我们准备发送的包,但是包暂时发不了,他要发一个绿色的这个地方表示的数据包,这个数据包是个 ARP 的给你打的包,为什么之前的课程中我们已经讲过了,是由于计算机里面它没有这台主机 IP 地址和 MAC 地址的对应关系,所以左边这个主机在数据链路层封装的时候,它的目的 MAC 地址他不知道怎么填,所以他没有办法发 ICMP:
它直接就发一个 ARP 的广播请求,目的就是发出来来询问,询问这个 IP 地址为 192.168.0.2 这台主机它的 MAC 地址是什么?那么只有当它得知了这个 MAC 地址以后,他才能把原先包在数据链中打包的时候,目的 MAC 地址填上,相应的 MAC 地址。在我们之前的课程中已经介绍过,很显然 ARP 的广播请求肯定会进入交换机,那么进入交换机以后,交换机要对它进行处理,我们之前在讲解理论的时候曾经讲过。
那么如何处理?分为两步,第一步就是要登记,登记这个数据包来自于哪个主机,也就是它的源 MAC 地址是什么,也就这个 MAC 地址它会登记到这里。同时有一个对应的端口,也就是它是从哪个端口进入交换机的端口号要登录进去。现在我们看到交换机并没有端口号。如果您在做仿真实验的时候跟我们这现象一样的,那么在菜单栏这儿有个选项菜单,然后选择参数选择(首选项),在这里面有一个在逻辑空间中总显示端口标签,这样就可以看到:
那么这个交换机里面它有一个帧转发表,我们刚才说的登记就登记在帧转发表里面,那么刚上电的时候,只要这些主机相互之间没有发数据的话,那么这边它里面的帧转发表呢应该是空的,我们可以查看一下,我们点击右侧工具栏的检查的按钮,然后我们选它,我们讲课的时候叫帧交换表,在我们仿真软件里面它叫做 MAC 地址表,我们可以看一下,这张表打开的是空的,有三列内容,一列是 VLAN,我们忽略不管以后我们会专门讲 VLAN 的事情。那么还有一个就是 MAC 地址和端口,那么等一会这个数据包到了交换机以后,第一件事交换机就是登记,也就是把这个数据包的 MAC 地址和端口号登记进来:
那么我们看一下点击下一步。现在这个数据包已经到了交换机里面了,我们再次点击一下查看它的 MAC 地址表。我们可以看到尾号为 E39D 的 MAC 地址张登记进来了,同时它是从端口进来的,0/1 端口。这就是交换机的登记,其实也就是他的自学习。换句话说现在交换机已经知道了,和它的这个接口有一台主机连着这台主机 MAC 主机。
第二件事转发,转发的是根据这个帧的目的那个地址,我们先把鼠标切回到选择状态,根据这个帧的目的那个地址我们说了它是一个广播帧,我们可以打开看一下,它是一个广播帧,那么广播帧的话,交换机怎么看到广播帧全 F,就是代表它是广播帧,那么交换机就收到广播帧以后,那是要进行泛洪,也就是说除了包从哪个口进来,不再从口反向打出去,其他数据接口他都会把这个包转发出去的,我们来看一下是不是这样子。
点击下一步,确实是这样,那么当然很显然上面这台主机不会收这个数据包,原因是什么?原因是这台主机由于这是个广播包,所以这台主机的网卡是会接受这个包的,把帧的中交给他的高层,到了高层以后有 ARP 进程去看,ARP 进程一看这个数据包其实不是询问这台计算机的,所以 ARP 的进程就把这个数据丢弃了。
那么同样的道理,出来的数据包就到达了这台主机,那么他的网卡接收以后送给 ARP 进程把里面的内容解析出来,一看询问这台计算机,所以这台计算机的 ARP 进程会再重新封装一个 ARP 的单播响应,那里面就把自己的 IP 地址和 MAC 地址就把这个内容写到这个数据包里面。
那么我们再往下走,那么想象一下这个数据包当到达交换机以后又有哪些工作?我们先看一下交换机里面目前的 MAC 地址表,登记的是这样的记录,当我们计算机发回 ARP 的单播响应的时候,到这个里面它就会又记录一个,这个记录的就是这台计算机的 MAC 地址和它进入交换机的具体的端口,那么就在这。7885 计算机的 MAC 地址端口三还是从端口三进入到交换机里面的:
那么交换机收到单播帧以后,他要干嘛?登记完了以后要进行转发是干什么?转发是查帧的目的 MAC 地址,我们知道这个帧的话是这台计算机发回给左边那台计算机的,所以它的目的 MAC 地址一定填的是 MAC 地址也就是号为 139D 的,那么他把 139D 在这里面去查,结果在这一行上就查到了这条 D39D 对应的端口是 1 号端口,说白了就是数据包,交换机知道他应该把这个数据包就从一号接口把它转发出来,而不会从二号端口转。
我们看一下是不是这样的,那么这样子的话,我们左边这台计算机它就收到了右边计算机发回的 ARP 的响应报文:
那么现在就可以把之前缓存的了,没有发的就不能发的 ICMP 报文呢发出来了,我们看一下是不是。同样的此时数据包又到交换机了,在里面又进行的是存储转发就是登记转发这两个事情,那么跟我们之前的过程一样,他肯定是一个单播从三号接口转发出来了,然后我们再点一下,因为 ICMP 它是一个询问请求,那么它需要一个响应,那么这边右边计算机就会给它发回一段响应:
为了更好的观察实验效果,我们将之前的网络拓扑进行了扩展,添加了一个集线器和两个主机,我们将所有设备进行重启,点击重启设备选择是我们会发现很多接口都变成了红色指示灯,那么我们切换实时和仿真模式,这两个按钮多切换几次,直到所有的指示灯都变成绿色的即可:
我们在实时模式下,让新添加的上面这台主机给下面这台主机进行一个简单 PDU 的发送。当然这个过程还包含了下面计算机收到简单 PDU 给上面计算机回复一个响应的这样的一个过程,只不过在实时模式下我们看不出来而已。这样做有两个目的,第一个目的是让这两台计算机知道对方 IP 地址与 MAC 地址的对应关系,以免后续出现 ARP 的广播请求,影响我们对实验效果的观察。
另外一个目的,我们知道当上面主机给下面主机发送数据包的时候,到达集线器它会被广播出来,那么这个数据包必然就会进入到左边交换机里面,交换机对这数据包是进行登记,然后进行转发操作,那么登记就会登记这个 MAC 地址,那么这个 MAC 地址是对应着交换机的 4 号接口,也就会登记这么样一条记录。换句话说就是让交换机学习了一次,当然这里面还有当我下面计算机收到上面计算机发过来的询问,我们要给他回计算机会回一个响应,当然响应也会进入到左边的交换机里面,所以在交换机里面,其实这两个 MAC 地址都学习到了,都对应着它的 4 号端口:
如果您查看左边交换机的帧转发表,并没有看到上面这个主机的 MAC 地址的对应关系,也没有看到有关下面主机的 MAC 地址和端口的对应关系的话,证明您在上面主机给下面主机发送简单 PDU 后,过了一段时间才来查看的交换机的帧转发表。想一想我们之前说过对交换机的每一条记录它都有个老化时间,当老化时间到期以后,它就会自动的把这一条记录的给它删除掉。这就是您可能查看不到相应记录的原因。
如果您查看交换机的帧转发表里面是空的,没有这两条记录的话,您可以到上面主机再次给下面主机发一个 ICMP 的报文,也就是简单的 PDU 然后我们再来查看一下。现在这里面就有了这两台主机的 MAC 地址以及对应的端口号是 4 号。
下面我们切换到仿真模式,然后我们点右下角的这个地方把刚才发包的场景给它删除掉,然后我们再次让右上面这个主机给右下面主机发送一个 ICMP 的报文,那么我们把它发送出来,我们之前就已已经学过了集线器的它是广播特性的,所以数据包会被广播出来。当这数据包到达右下面这台主机,然后数据包到达交换机以后,我们看到交换机给它标了一个叉,这个意思是说数据包的交换机把它丢掉,
我们来想一想这是为什么?因为 ICMP 报文它封装到以太网帧的时候,它的目的 MAC 地址填的是右下面这台主机的,也就是尾号为 7140 的 MAC 地址,然后我们可以把交换机的帧转发表把它打开看一下,要去 7140 这个 MAC 地址,那么它对应的端口是 4 号,然后他又是从交换机的 4 号端口进来的,所以交换机他就知道不应该把这个数据包反向再打出来,因为是没有必要的。
那么我们把这个特性也叫做交换机可以对帧进行过滤,我们可以看到上面主机发给下面主机的数据包,到达交换机以后,它并没有转发到交换机的其他端口,而交换机就把它给丢掉了,因为是没有必要。这个帧其实已经到达了目的地,交换机没必要把这个帧从自己的任何一个接口再把它转发出来。
下面我们进入交换机的命令行模式:切换到选择状态,然后左键单击交换机:
那么这是我们第一次进入这个思科设备的命令行配置界面,按下回车,出现这样的一个三角的的提示符,我们输入 enble 然后回车,进入特权模式,然后我们打一条命令,show mac-a 会展示它的 MAC 地址表,这是一条简写的命令。那么我们可以看到它里面有两条记录类型都是动态 DYNAMIC 的,也就是它有老化时间的,会自动删除。
```
Switch>enable
Switch#show mac-a
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 0004.9a1d.392e DYNAMIC Fa0/4
1 00e0.8f1d.dd74 DYNAMIC Fa0/4
```
2
3
4
5
6
7
8
9
10
11
12
那么这两个 MAC 地址一个是 7140,就是我们下面这台计算机的 7140 对应的是端口号是交换机的 4 号端口, B780,它也是对应的 4 号端口,这个界面这个里面操作系统的交互式的命令行,其实就是交换机里面的命令方式查看方式和我们在工具栏点查看 MAC 地址表是一样的。删除命令是 clear mac-a
输入完了以后,交换机里面的这两条记录就被我们手工的通过命令方式给它清空了,还没等它老化,我们就已经把它清空了,我们看一下现在这张表是不是空的,我们再来 show mac -a 我们可以看到这张表已经空了:
Switch#clear mac-a
Switch#show mac-a
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
2
3
4
5
6
7
下面的话我们这个时候再让上面计算机给下面计算机发一个 ICMP 的报文,我们看一下会有什么样一个情形?
到集线器是广播,然后 ICMPT 报文进到交换机里面了,交换机会不会把它转发出来呢?我们可以看到交换机把它从所有接口转发出来了,想一想这是为什么?很显然就是因为我们之前把交换机里面的记录全部给它清空了,我们可以认为这个时候交换机就很笨了。过来一个数据包,他其实本来是想到下面这台计算机,但是对于他来说,下面 MAC 计算机的 MAC 地址他不知道,也就数据包要到那个地方去,他并不知道要从自己的哪个接口去转发,所以它除了进口不发以外,其他的所有的可能它都会转发,也就是我们说的泛洪或者是洪泛都可以
本次实验就进行到这里。那么本次实验主要验证了交换机自学习的算法,包括如何登记接收到的数据包以及如何转发,那么这里面包括明确的转发,盲目的转发,还有丢弃数据包,也就是交换机可以对接进行过滤
# 交换机与集线器
- 01
- 中国网络防火长城简史 转载10-12
- 03
- 公告:博客近期 RSS 相关问题10-02