交换机在工作的时候,
开始MAC表中并没有内容,因此当其他机器之间开始发送数据的时候,交换机要完成以下几个动作:
一是将接收到的数据包中的MAC地址和它进入的端口及时间保存到MAC表中;
二是要将数据包转发出去,因为这时候还不知道目标MAC地址与它的端口之间的对应关系,所以它只能将此数据包从它的所有端口发送出去(泛洪)。
之后,当目标机器要返回它的应答的时候,交换机就可以将此机器的MAC地址与它的端口的对应关系再保存下来,
因为这个时候它的目标地址已经知道了(即原来的源地址),这个时候交换机就只需要将数据包从对应端口发出去即可。
在它的整个工作期间,交换机都在不断地查询它的MAC表,将接收到的数据包转发出去,同时根据接收到的数据包更新它的MAC表。MAC表中的表项都有一定的生存时间的,交换机每收到一个数据包都要查看它的MAC表,如果此MAC地址不在表中,添加进去;如果已在表中,则将时间字段更新。
如果一个表项超过一定的时间还没有被更新的话(根据记录的时间计算得出),则此表项将“老化”,再过一定时间,仍然没有被更新,则交换机认为相应的机器关机,遂将此表项删除。
MAC表不会溢出:
一是局域网的机器数量一般比较有限,数量太大的话,发生广播风暴的几率就比较高,这时候就会用路由器将网络分割成不同的广播域;
二是此前所说的MAC表的更新机制,即使你一直在更换局域网中的机器(极端情况),交换机也会将MAC表中长时间不活动的表项删去。
另外就是处于网络核心层的骨干交换机一般都具有比较大的MAC表,即使机器数量比较多,也不容易使之溢出。