原文:http://blog.csdn.net/zjliu1984/article/details/4252781
路由器和网桥的区别
网桥工作在OSI模型中的第二层,即链路层。完成数据帧(frame)的转发,主要目的是在连接的网络间提供透明的通信。网桥的转发是依据数据帧中的源地址和目的地址来判断一个帧是否应转发和转发到哪个端口。帧中的地址称为“MAC”地址或“硬件”地址,一般就是网卡所带的地址。网桥的作用是把两个或多个网络互连起来,提供透明的通信。网络上的设备看不到网桥的存在,设备之间的通信就如同在一个网上一样方便。由于网桥是在数据帧上进行转发的,因此只能连接相同或相似的网络(相同或相似结构的数据帧),如以太网之间、以太网与令牌环(token ring)之间的互连,对于不同类型的网络(数据帧结构不同),如以太网与X.25之间,网桥就无能为力了。
网桥扩大了网络的规模,提高了网络的性能,给网络应用带来了方便,在以前的网络中,网桥的应用较为广泛。但网桥互连也带来了不少问题:一个是广播风暴,网桥不阻挡网络中广播消息,当网络的规模较大时(几个网桥,多个以太网段),有可能引起广播风暴(broadcasting storm),导致整个网络全被广播信息充满,直至完全瘫痪。第二个问题是,当与外部网络互连时,网桥会把内部和外部网络合二为一,成为一个网,双方都自动向对方完全开放自己的网络资源。这种互连方式在与外部网络互连时显然是难以接受的。问题的主要根源是网桥只是最大限度地把网络沟通,而不管传送的信息是什么。
路由器工作在OSI模型中的第三层,即网络层。路由器利用网络层定义的“逻辑”上的网络地址(即IP地址)来区别不同的网络,实现网络的互连和隔离,保持各个网络的独立性。路由器不转发广播消息,而把广播消息限制在各自的网络内部。发送到其他网络的数据茵先被送到路由器,再由路由器转发出去。
IP路由器只转发IP分组,把其余的部分挡在网内(包括广播),从而保持各个网络具有相对的独立性,这样可以组成具有许多网络(子网)互连的大型的网络。由于是在网络层的互连,路由器可方便地连接不同类型的网络,只要网络层运行的是IP协议,通过路由器就可互连起来。
路由器有多个端口,用于连接多个IP子网。每个端口的IP地址的网络号要求与所连接的IP子网的网络号相同。不同的端口为不同的网络号,对应不同的IP子网,这样才能使各子网中的主机通过自己子网的IP地址把要求出去的IP分组送到路由器上。
个人总结:网桥收到一个数据帧之后会检查这个数据包的的目的地址和源地址(注意:这两个地址是这个数据帧的MAC地址,一般也就是网卡的地址。不是IP地址),然后会根据这个地址来判断应该将这个数据帧转发到哪个端口。而路由器检查的是这个数据帧的IP地址,根据IP地址和路由表来判断这个数据包应该转发到哪个接口。
假如主机A要发送数据给网桥连接的另一网段的主机B,首先主机A发送ARP数据报,主机A所在的网段上的所有主机以及经过网桥连接的所有网段上的主机都会受到这个ARP包,但是只有主机B(ARP中含有的IP目的地址与主机B相同)会发送一个ARP响应,其他主机都会丢弃ARP数据报。这样主机A就知道了主机B的MAC地址,所以主机A再发送一个完整的数据帧(含有主机B的MAC地址),网桥会检查这个数据帧的目的MAC地址,然后有选择的将这个数据帧转发到连接主机B对应的那个端口。