一、前言
基础交换机实现数据链路层数据帧的转发,它连接终端设备,在收到数据帧时进行MAC寻址及数据帧转发。每个交换机维护一个MAC地址表。
二、MAC地址
-
MAC地址用于在网络中唯一标识一个网卡,它是全球唯一的。
-
MAC地址由48bit构成,前24位由IEEE分配,后24位由不同生产厂家自己确定。
-
MAC地址通常由12个16进制数表示。
三、以太网帧
1、格式
(1)Ethernet_ll 格式
(2)IEEE 802.3 格式
2. 数据帧分类
(1)单播以太网帧:目的MAC地址为单播MAC地址的帧。
(2)组播以太网帧:目的MAC地址为组播MAC地址的帧。
(2)广播以太网帧:目的MAC地址为广播MAC地址的帧。
三、相关概念
- 泛洪:是交换机的操作,将从某个接口收到的数据流向除该接口之外的所有接口发送出去。
- 交换机作用:根据MAC地址表和转发策略隔离冲突域。
- 冲突域:连接在同一共享介质上的所有节点的集合。
- 广播域:广播报文所能到达的整个广播范围称为二层广播域。
四、数据帧转发过程
- MAC地址表负责转发过程中的寻址。
- MAC地址表有生存期,记录的总是最活跃的主机的MAC地址。
- MAC地址表保存MAC地址和端口号,通过数据帧的源MAC学习,通过数据帧的目的MAC做查表转发。
- MAC地址表参考如下代码。
- 声明如代码中所示的链表数组。
struct mac
{
int port;
int mac;
struct mac *next;
}
struct mac m_list[MAX_NUM];
3.转发过程
1. known: a mac list: m_list;
2. port t get a data frame;
3. parse src_mac and dst_mac;
4. if ([src_mac, t] not in m_list):
5. add [src_mac, t] to m_list;
6. if (dst_mac in m_list):
7. send frame to m_list[dst_mac].port;
8. else:
9. flood;
五、总结
- 介绍了二层交换机的简单数据帧转发原理。
- 二层通信利用STP系列协议破除通信环路。
- 三层通信利用TTL破除通信环路。