集线器与网桥的原理和作用
https://blog.csdn.net/u013485792/article/details/51493136
MAC地址的作用是标识转发的目的地,全球唯一。
交换机是二层设备,根据报文里的目的mac查自己的MAC表,从而知道把报文从哪个接口送出去。
路由器是三层设备,根据路由表确定下一跳的位置,但是想把报文送到下一跳还得知道下一跳的MAC地址,此时,下一跳相当于一个目的地。
而集线器和中继器都是物理层设备,它们只是扩大了网络的传输范围,相当于两根网线之间的一个接头,要MAC地址没有用。
集线器(HUB)属于数据通信系统中的基础设备,它和双绞线等传输介质一样,是一种不需任何软件支持或只需很少管理软件管理的硬件设备。它被广泛应用到各种场合。集线器工作在局域网(LAN)环境,应用于OSI参考模型第一层,因此又被称为物理层设备。集线器内部采用了电器互联,当维护LAN的环境是逻辑总线或环型结构时,完全可以用集线器建立一个物理上的星型或树型网络结构。在这方面,集线器所起的作用相当于多端口的中继器。其实,集线器实际上就是中继器的一种,其区别仅在于集线器能够提供更多的端口服务,所以集线器又叫多口中继器。HUB按照对输入信号的处理方式上,可以分为无源HUB、有源HUB、智能HUB。
- 无源HUB是最低级的一种,不对信号做任何的处理,对介质的传输距离没有扩展,并且对信号有一定的影响。连接在这种HUB上的每台计算机,都能收到来自同一HUB上所有其它电脑发出的信号;
- 有源HUB与无源HUB的区别就在于它能对信号放大或再生,这样它就延长了两台主机间的有效传输距离;
- 智能HUB除具备有源HUB所有的功能外,还有网络管理及路由功能。在智能HUB网络中,不是每台机器都能收到信号,只有与信号目的地址相同地址端口计算机才能收到。有些智能HUB可自行选择最佳路径,这就对网络有很好的管理。(hzhsan: 个人感觉这里的智能hub就有点超出集线器的范畴了。)
—– 网桥
1. 理解“网桥”的含义
也有人把“网桥”比喻成一个聪明的中继器(Repeater)。因为中继器只是对所接收的信号进行放大,然后直接发送到另一个端口连接的电缆上,主要用于扩展网络的物理连接范围;而网桥除了可以扩展网络的物理连接范围外,还可以对MAC 地址进行分区,隔离不同物理网段之间的碰撞(也就是隔离“冲突域”)。集线器和中继器都是物理层设备,而网桥属于二层设备。
我们经常听到这样的说法,那就是“网桥”是一种可连接不同网段的二层网络设备(二层交换机也一样),一个端口可以连接一个网段。所以很多人总在纳闷,网桥怎么能连接不同网段呢?其实这是因为大家对这里所说的“网段”并不理解。其实这里“网段”更准确地讲应该是叫“物理网段”,是指IP 地址属于同一网络地址段(也就是IP 地址中的网络ID一样),位于不同地理位置的不同LAN 分段,是基于物理意义上的地理区域进行划分的。我们常说的网段是指IP 地址属于不同网络地址段的网络或子网,是一个三层概念,其实这应该叫做逻辑网段,是基于逻辑意义上的网络地址进行划分的。(hzhsan:就是说这里的网段是物理网段,并不是我们平时说的IP网段,不关心三层上的概念)
无论是网桥,还是二层交换机,虽然每个端口可以连接一个网段,但是它们所连接的主机都在同一网络,或者同一子网中。如连接的主机位于不同办公室或者不同办公楼中,则可采用同一网络地址的两个或多个小LAN,以组成一个可以统一管理的大LAN。但要注意的是,因为网桥只有两个端口,所以所连接的两个物理网段的主机通常就是由当时的集线器进行集中连接的(网桥端口通常不是直接连接主机的)。软件中通常所说的桥接(如VMware中的桥接工作模式)也就是网桥的作用,它连接的也是同一网络或子网中的两个网段。
hzhsan疑问:网桥都是只有两个端口吗?应该可以有多个端口吧?
hzhsan解答:基本网桥只有两个端口,还有一种网桥叫做多口网桥,多口网桥有多个端口。
2. 网桥工作原理解析
前面说到了网桥具有两种主要特性:一是可基于物理网段的MAC 地址进行学习,二是可以隔离冲突域。下面通过一个示例来进行解析。
假设图5-34 中所示的物理网段1 和物理网段2 中的主机都是通过集线器集中连接的,则这样这两个物理网段各自形成一个冲突域,因为集线器是采用共享介质传输的,而网桥的背板信道不是共享的(每个端口的数据收发都有一条单独的信道),所以一个集线器就是一个冲突域。网桥的数据转发原理如图5-35 所示。下面是具体的解析。
说明MAC 地址表也就是通常所说的CAM(Content Addressable Memory,内容可寻址存储器)表,保存的是对应MAC 地址主机与所连接的交换机端口的映射。这个映射表项可以由管理员手动绑定创建,也可以由交换机自动学习得到。在交换机上可以通过一些命令(如Cisco 交换机是使用show mac-address-table 命令)查看。下面是一个在交换机上查看MAC 地址和端口映射表的示例,其中列出了交换机中为CPU 分配的静态(static)MAC 地址和通过学习功能自动学习得到的动态(dynamic)MAC 地址,其中的Ports 列显示的是对应MAC 地址主机所连接的端口,VLAN 列则为对应主机连接端口所属的VLAN。
图5-35 网桥数据转发原理示意图 |
hzhsan: 上图的详细解析见下面的文字部分。详细易懂。
- switch#show mac-address-table
- Mac Address Table
- ——————————————-
- Vlan Mac Address Type Ports
- —- ———– ——– —–
- All 0100.0ccc.cccc STATIC CPU
- All 0100.0ccc.cccd STATIC CPU
- All ffff.ffff.ffff STATIC CPU
- 1 0000.0c07.accb DYNAMIC Gi0/1
- 1 0002.8501.de00 DYNAMIC Gi0/1
- 1 0015.f915.8e80 DYNAMIC Gi0/1
- 1 0016.7694.c009 DYNAMIC Gi0/1
- 1 0020.ed14.399c DYNAMIC Gi0/1
- 1 0030.b637.8e10 DYNAMIC Gi0/1
- 1 0050.ba10.404a DYNAMIC Gi0/1
- 100 0007.847b.c40a DYNAMIC Gi0/1
- 100 00d0.d3a4.7cec DYNAMIC Gi0/1
- 110 0006.28bb.71c0 DYNAMIC Gi0/1
- 110 00d0.d3a4.7cec DYNAMIC Gi0/1
- 120 0000.b497.8250 DYNAMIC Fa0/20
- 120 0002.b3d8.68e7 DYNAMIC Fa0/20
- 120 0002.b3d8.6928 DYNAMIC Fa0/20
- 120 0003.a03a.03fc DYNAMIC Fa0/19
现假设图5-34 所示网络中的一台PC 要向另一台PC 发送数据。因为集线器也是物理层设备,不能识别帧中的MAC 地址,所以无论是哪台主机要发送数据,在集线器上都是以广播方式进行的,连接该集线器上的所有节点都会收到这个广播帧,包括网桥连接到该集线器的端口。
1)当网桥收到集线器的广播帧后,网桥会把帧中的源MAC 地址和目的MAC 地址与网桥缓存中保存的MAC 地址表进行比较。
2)最初,网桥的缓存中是没有任何MAC 地址的,所以一开始它也不知道哪台主机在哪个物理网段上,收到的所有帧都直接以泛洪方式(也是复制原数据帧)转发到另一个端口上,同时会把数据帧中的源MAC 地址所对应的物理网段记录下来(其实就是与对应的网桥端口对应起来)。
3)在数据帧被某个PC 机接收后,也会把对应目的MAC 地址所对应的物理网段记录在缓存中的MAC 表中。这样,经过多次这样的记录,就可以在MAC 地址表中把整个网络中各主机MAC 地址与对应的物理网段全部记录下来。因为网桥的端口通常是连接集线器的,所以一个网桥端口会与多个主机MAC 地址进行映射。
4)当网桥收到的数据帧中源MAC 地址和目的MAC 地址都在网桥MAC 地址表中可以找到时,网桥会比较这两个MAC 地址是否属于同一个物理网段。如果是同一物理网段,则网桥不会把该帧转发到下一个端口,直接丢弃,起到冲突域隔离作用。相反,如果两个MAC 地址不在同一物理网段,则网桥会把从一个物理网段发来的帧转发到连接另一个物理网段上,然后再通过所连接的集线器进行复制方式的广播。