网桥是一种两端口的二层网络设备,用来实现同一个IP网段的不一样物理子网段之间的互联互通。网桥所沟通的那些机器都是属于同一个IP网段,可是这些机器可能又在物理上分红了多个部分,好比一部分链接到某个集线器,另外一部分链接到另一个集线器。linux
网桥与集线器相比具备能够隔离冲突域的优点:集线器是全部的网口共享背板带宽,数据包在各个网口之间广播;而网桥能够作到只有数据包的目的地址位于另外一边的物理网络上,才转发到另外一边网口,从而隔离冲突域。后来网桥被具备更多端口、同时也能够隔离冲突域的交换机取代。网络
网桥有两个端口,一个端口链接一个网络设备,好比主机或者集线器,它将两个端口所链接的两部分网络进行沟通,具体作法是:
网桥内部维护MAC地址表,MAC地址表保存MAC地址和该MAC地址的机器所在的物理网络链接的网桥口。
当数据包到达网桥口A的时候,根据数据包的目的MAC地址查找MAC地址表,若是该数据包的目的MAC对应的网桥口为A,则网桥不进行转发处理;若是该数据包的目的MAC对应的网桥口为B,则网桥将该数据包转发到B口;若是在MAC地址表中找不到表项,则也转发到口B,进行学习。学习
那么,网桥的MAC地址表是如何创建起来的呢?和交换机等网络设备相似,网桥也能够对地址进行学习。网桥启动时,内部的MAC地址表为空;以后进入以下学习过程:
当有机器C1发的数据包到达网桥口A时,说明C1的MAC地址对应的网桥口为A,若是该数据包的源MAC地址不在MAC地址表中,则插入一条新的C1的MAC地址对应网桥口A的记录;而后网桥根据目的MAC地址进行转发或者不处理。每当有数据包到达网桥口时,网桥都会进行更新数据包源MAC地址对应的网桥口,这样一段时间以后,网络里全部的机器MAC地址都会被学习到。class
linux系统支持软件方式搭建网桥,且网桥能够链接不止两个机器的网卡设备,可是链接到同一个网桥的那些网卡设备的IP地址必须在同一个网段!
首先安装网桥管理软件 brctl
brctl addbr br0 ( 创建一个逻辑网段,名称为br0)
brctl delbr br0 删除网桥
brctl addif br0 eth0 (让eth0 成为br0 的一个端口)
brctl addif br0 eth1 ( 让eth1 成为br0 的一个端口)
brctl addif br0 eth0 ( 让eth2 成为br0 的一个端口)
brctl addif br0 eth3 ( 让eth3 成为br0 的一个端口)
brctl delif br0 eth0原理