网桥帧的转发与转发表的建立算法

来源:互联网 发布:知行理工初始密码 编辑:程序博客网 时间:2024/06/07 22:27

网桥

1.主要功能

网桥和中继器、集线器都能扩展局域网,但它工作在更高的层次,还有更强的功能。

主要有:

  • 帧过滤:网桥的过滤作用是指,它使同一个网段上各工作站之间的通信不会经过网桥传到其他网段上去,仅局限于本网段的范围之内。
  • 可连接不同类型的局域网:中继器和集线器只能连接同一类型的局域网,而网桥则可以连接不同类型的局域网。如通过网桥可以把IEEE 802.3、802.4、802.5(即以太网、令牌总线网和令牌环网)连接在一起。这种网桥要比连接同类局域网的网桥更复杂一些,它要进行帧格式的转换。
    link
  • 网桥使各网段成为隔离开的碰撞域:如图
    link

2.网桥的工作原理

这里写图片描述

3.网桥帧的转发与转发表的建立算法思想

  1. 从端口 x 收到无差错的帧(如有差错即丢弃),在转发表中查找目的站 MAC 地址。
  2. 如有,则查找出到此 MAC 地址应当走的端口 d,然后进行 (3)。否则转到(5) 。
  3. 如到这个 MAC 地址去的端口 d = x,则丢弃此帧(因为这表示不需要经过网桥进行转发)。否则从端口 d 转发此帧。
  4. 转到 (6) 。
  5. 向网桥除 x 以外的所有端口转发此帧(这样做可保证找到目的站)。
  6. 如源站不在转发表中,则将源站 MAC 地址加入到转发表,登记该帧进入网桥的端口号,设置计时器,然后转到 (8) 。如源站在转发表中,则执行 (7) 。
  7. 更新计时器。
  8. 等待新的数据帧。转到 (1) 。

4.算法流程

这里写图片描述
伪代码:

/** 网桥帧的转发与转发表的建立算法*/void NetworkBridge(void) {    int portX;    int portD;    int portO;    bool flag_GetFrameData;    while (flag_GetFrameData) {        ReceiveFrame(portX);// 从端口X收到一帧        SearchMAC_Distance();// 查找目的站MAC地址        SearchMAC_Source();// 查找源站MAC地址        if ( isMAC_Distance_Exist() )  {// 目的站MAC地址存在            portD = SearchPort();// 查找端口D            if (portD == portX) {// 端口 D = X                AbandonFrame();// 丢弃此帧            }            else {                SendFrame(portD);// 从端口D转发此帧            }        }        else {// 目的站MAC地址不存在            SendFrame(portO);// 向网桥除 x 以外的所有端口转发此帧(这样做可保证找到目的站)        }        if( isMAC_Source_Exist() ) {// 源站MAC地址在转发表中            UpdateTime0();        }        else {// 源站MAC地址不在转发表中            AddMAC(SourceAddress);// 将源站 MAC 地址加入到转发表            SetTime0();        }    }}
0 0