a. 网桥的工作原理初识
l 缓存:网桥首先会对收到的数据帧进行缓存并处理;
学习:当帧经过网桥,网桥首先在网桥表中查找帧的源MAC地址,如果该地址不在网桥表中,则将有该MAC地址及其所对应的网桥端口信息加入(逆向学习法);
l 过滤:判断入帧的目标节点是否位于发送这个帧的网段中(同一端口中) ,如果是,网桥就不把帧转发到网桥的其他端口;
l 转发:如果帧的目标节点位于另一个网络,网桥就将帧发往正确的网段 (向另一端口转发) ;
每个桥维护了一个基于MAC地址的过滤数据库,网桥根据这个数据库,把收到的帧往相应的局域网(端口)进行转发。
在过滤数据库中,列出了每个可能的目的地(目的MAC地址),以及它属于哪一条输出线路(一个端口号,即表示转发给哪个LAN),每个表项还有一个超时设置。
可以及时学习改变了的地址;
转发:如果在表中找到目标地址,则直接转发给该目的MAC地址对应的端口;
转发:如果在表中找不到目标地址,则按扩散的办法将该数据发送给与该网桥连接的除发送该数据的网段外的所有网段。
以混杂方式工作(接收连接到该网桥的局域网上传送的所有帧)。
b. 网桥的工作过程
l 假设桥在端口x上接收到一个MAC帧,有如下规则
1. 查询网桥表中包的源MAC;如果没有,将该MAC地址及其所对应的网桥端口信息加入;如果有,继续下一步;
2. 查询过滤数据库,确定该目的MAC地址是否在除[端口x]外的其它端口中;如果目的MAC地址在端口x内,不进行转发;
3. 在转发时,如果目的MAC地址在过滤数据库中的某个端口y中,确定端口y是否处在阻塞或转发状态(生成树协议)。【在以后的生成树算法中我们可以看到,一个端口可能有时候是阻塞的,以防止它接收或发送帧】如果端口y是非阻塞的,把该帧通过端口y转发到它所连接的LAN中。
4. 在转发时,如果目的MAC地址没有找到,把该帧往除了它所到来的端口外的所有端口发送,即进行转发(扩散)。
c. 网桥的场景解析
学习:站点A给B发送数据,网桥通过察看帧的源地址了解到A在端口1,过滤数据库中加入。
转发:网桥并不知道B在何处,因此把帧向所有其它端口(即端口2和3)进行扩散。(网桥连接的所有端口,除端口1)
转发:B收到A发过来的帧之后,可能会进行回应,即B发送数据给A,这个时候网桥察看源地址了解到B在端口2上,加入表项,同时帧的目的地址A在过滤数据库中存在,并且在端口1上,因此B发回给A的帧向端口1转发
过滤:现在站点C向A发送数据,由于A、C和网桥连接到同一个集线器上,网桥也会收到该帧,察看源地址C,记录C在端口1,加入表项
老化:过滤数据库表项的TTL每秒都增加,超过某个值则从数据库中清除,一般缺省的TTL设置为300秒。老化主要是考虑到网桥的内存有限、节点移动的情况。