目录
前言
基础交换机实现数据链路层数据帧的转发,它连接终端设备,在收到数据帧时进行MAC寻址及数据帧转发。每个交换机维护一个MAC地址表。
一、MAC地址
1. MAC地址用于在网络中唯一标识一个网卡,它是全球唯一的。
2. MAC地址由48bit构成,前24位由IEEE分配,后24位由不同生产厂家自己确定。
3. MAC地址通常由12个16进制数表示。
二、数据帧转发过程
1.MAC地址表
2. MAC地址表参考实现数据结构
1. 声明如代码中所示的链表数组。
1. 对MAC地址进行哈希计算,得到的哈希值作为数组下标值。
2. 当哈希值重复时,依次遍历m_list[hash]下的链表,比较MAC地址,相等返回对应端口;没有则泛洪(flood)。
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;
总结
介绍了二层交换机的简单数据帧转发原理。
|