起序:交换机是二层设备,只看帧头帧尾,主要是检查帧头,不会解封装 MAC 帧
,也不看帧头中的类型,只看 源 MAC 地址
和 目 MAC 地址
。
文章文字篇幅略长,请读者耐心读完。
一、网络拓扑图
拓扑图中的
主机名
、IP 地址
、MAC 地址
都是假设的,为了更直观,表格展示:
主机名 | IP 地址 | MAC 地址 |
---|---|---|
PC1 | 192.168.1.1 | AA |
PC2 | 192.168.1.2 | BB |
PC3 | 192.168.1.3 | CC |
PC4 | 192.168.1.4 | DD |
二、PC1 -> PC4(请求)
描述交换机的 工作原理
,假设两个交换中的 MAC 地址表
都是空的,以上面网络拓扑图为案例。
下面图片显示的就是
PC1
发送HTTP请求给PC4
在 MAC 层的MAC 帧
格式,为了清晰了解MAC 帧
格式,图片有对应关系。点赞谢谢。
主机 PC1
将MAC 帧
传入到交换机 sw1
中,第一件事就是将帧中的源 MAC 地址(AA)
以及端口(Fa0/1)
的对应关系存放在自己的MAC 地址表
中。
此时
交换机 sw1(注:这是 sw1)
的MAC 地址表
中的内容
Vlan | MAC Address | Type | Ports |
---|---|---|---|
1 | AA | DYNAMIC | Fa0/1 |
交换机 sw1
会根据帧中的目的 MAC 地址(DD)
,查询自己的MAC 地址表
中是否有关于目的 MAC 地址(DD)
和接口
的对应关系,从上方可以看出,此时MAC 地址表
中是不存在目的 MAC 地址(DD)
以及对应接口
记录的。- 如果没有,
交换机 sw1
会把帧
克隆 N 份,向除传入交换机
的其他所有的接口广播出去。图片中除了接口Fa0/1
,其他两个接口(Fa0/2、Fa0/3
)都会传输交换机 sw1
广播出来的帧。 主机 PC2
收到帧之后,解封装帧时,如果发现帧中的目的 MAC 地址
不是自己MAC地址,就会把帧丢弃。交换机 sw2
收到交换机 sw1
转发出来的帧
后,第一件事就是将帧中的源 MAC 地址
以及端口(Fa0/3)
的对应关系存放在自己的MAC 地址表
中。
此时
交换机 sw2(注:这是 sw2)
的MAC 地址表
中的内容
Vlan | MAC Address | Type | Ports |
---|---|---|---|
1 | AA | DYNAMIC | Fa0/3 |
-
交换机 sw2
会根据帧中的目的 MAC 地址(DD)
,查询自己的MAC 地址表
中是否有关于目的 MAC 地址(DD)
和接口
的对应关系,从上方可以看出,此时MAC 地址表
中是不存在目的 MAC 地址(DD)
以及对应接口
记录的。 -
如果没有,
交换机 sw2
会把帧
克隆 N 份,向除传入交换机
的其他所有的接口广播出去。图片中除了接口Fa0/3
,其他两个接口(Fa0/1、Fa0/2
)都会传输交换机 sw2
广播出来的帧。 -
主机 PC3
收到帧之后,解封装帧时,如果发现帧中的目的 MAC 地址
不是自己MAC地址,就会把帧丢弃。 -
主机 PC4
收到帧之后,解封装帧时,如果发现帧中的目的 MAC 地址
是自己 MAC地址,就会一层一层的将MAC 帧
解开:
-
MAC 层
解封装帧头帧尾
-
IP 层
解封装IP 数据报
-
传输层
解封装TCP/UDP 报文段
-
应用层
解封装HTTP 请求
注:交换机是学习 帧中的源 MAC 地址
以及 录入端口(本地端口)
的对应关系,学完之后形成 MAC 地址表,所以交换机的 MAC 地址表
中只有别人的 MAC 地址
和自己 本地端口
的对应关系。
三、PC4 -> PC1(响应)
下面图片显示的就是
PC4
发送HTTP响应给PC1
在 MAC 层的MAC 帧
格式,为了清晰了解MAC 帧
格式,图片有对应关系。点赞谢谢。
主机PC4
将MAC 帧
传入到交换机 sw2
中,第一件事就是将帧中的源 MAC 地址(DD)
以及端口(Fa0/3)
的对应关系存放在自己的MAC 地址表
中。
此时
交换机 sw2(注:这里是 sw2)
的MAC 地址表
中的内容
Vlan | MAC Address | Type | Ports |
---|---|---|---|
1 | AA | DYNAMIC | Fa0/3 |
2 | DD | DYNAMIC | Fa0/2 |
交换机 sw2
会根据帧中的目的 MAC 地址(AA)
,查询自己的MAC 地址表
中是否有关于目的 MAC 地址(AA)
和接口
的对应关系,从上方可以看出,此时目的 MAC 地址(AA)
对应的接口
是Fa0/3
,所以就不用广播
了。交换机 sw1
收到交换机 sw2
转发出来的帧
后,第一件事就是将帧中的源 MAC 地址(DD)
以及端口(Fa/03)
的对应关系存放在自己的MAC 地址表
中。
此时
交换机 sw1(注:这里是 sw1)
的MAC 地址表
中的内容
Vlan | MAC Address | Type | Ports |
---|---|---|---|
1 | AA | DYNAMIC | Fa0/1 |
2 | DD | DYNAMIC | Fa0/3 |
交换机 sw1
会根据帧中的目的 MAC 地址(AA)
,查询自己的MAC 地址表
中是否有关于目的 MAC 地址(AA)
和接口
的对应关系,从上方可以看出,此时目的 MAC 地址(AA)
对应的接口
是Fa0/1
,所以就不用广播
了。主机 PC1
收到帧之后,解封装帧时,如果发现帧中的目的 MAC 地址
是自己 MAC地址,就会一层一层的将MAC 帧
解开:
-
MAC 层
解封装帧头帧尾
-
IP 层
解封装IP 数据报
-
传输层
解封装TCP/UDP 报文段
-
应用层
解封装HTTP 响应
主机 PC1
就会在浏览器上看到解析 HTTP 响应的页面了。
四、原理
收到一个数据帧后:
- 首先学习帧中的源MAC地址来形成MAC地址表
- 然后检查帧中的目标MAC地址,并匹配MAC地址表:
如表中有匹配项,则单播转发
如表中无匹配项,则除接受端口外广播转发 - MAC地址表的老化时间默认是300秒(可修改)
如果对您有帮助,点个赞再走吧。