举例一:

如图,交换机A 、B ,主机11给主机33发送一个数据帧:假设交换机A B MAC地址表都是空的。

java消费交换机数据_java消费交换机数据

1.       交换机A在接收到数据帧后,执行以下操作:

1)       交换机A学习主机11的MAC地址,则现在交换机A的MAC地址表为:

java消费交换机数据_数据帧_02

2)       交换机A查看MAC地址表;

3)       如果MAC地址表有目的主机MAC地址则直接进行数据转发。如果没有则继续执行步骤4):

4)       交换机A向除源数据发送端口外的其他所有端口发送广播;

java消费交换机数据_数据_03

2.       交换机B在接收到数据帧后,执行以下操作:

5)       交换机B学习源MAC地址和端口号,交换机B 现在的MAC地址表为:

java消费交换机数据_java消费交换机数据_04

1)   交换机B查看MAC地址表;

6)       交换机B向除源数据发送端口外的其他所有端口发送广播包;

2)   主机22,查看数据包的目标MAC

java消费交换机数据_java消费交换机数据_05

地址不是自己,丢弃数据包;

3)   主机33,接收到数据帧;

7)       主机44,丢弃数据帧。

 

总结:【一台交换机有一张MAC表】

当一台主机A发送数据时,交换机会收到MAC帧,会包含发送主机的MAC地址和接收主机的地址,交换机收到这个帧后,会把这个发送主机的MAC地址记录在自己的MAC表中,并记下这个发送主机对应的端口号。之后交换机会查看自己MAC表看有没有接收主机的记录,如果有就直接发到对应的端口,如果没有就广播出去

 

举例二:

假如接着主机44要给主机11发送一个数据帧:

java消费交换机数据_端口号_06

1.       交换机B在接收到数据帧后,执行以下操作:

1)            交换机B学习源MAC地址和端口号;

2)            交换机B查看MAC地址表,根据MAC地址表中的条目,单播转发               数据到端口3。

java消费交换机数据_数据帧_07

2.       交换机A在接收到数据帧后,执行以下操作:

1)        交换机A学习源MAC地址和端口号;

4)   交换机A查看MAC地址表,根据MAC地址表中的条目,单播转发数据到端口1;

java消费交换机数据_数据帧_08

5)   主机11,收到数据帧。