本文为CSDN博主「要回杭州的李同学」的原创文章,原文链接:https://blog.csdn.net/u011228842/article/details/91410867
冲突域是一种物理分段,指连接到同一导线上所有工作站的集合、同一物理网段上所有节点的集合或是以太网上竞争同一带宽节点的集合。冲突域表示冲突发生并传播的区域,这个区域可以被认为是共享段。在OSI模型中,冲突域被看作是OSI第一层的概念,连接同一冲突域的设备有集线器、中继器或其它简单的对信号进行复制的设备。其中,使用第一层设备(如中继器、集线器)连接的所有节点可被认为是在同一个冲突域内,而第二层设备(如网桥、交换机)和第三层设备(如路由器)既可以划分冲突域,也可以连接不同的冲突域。
广播域是指可以接收到同样广播消息的节点的集合。简单地说,在该集合中的任何一个节点传输一个广播帧,则其它所有能够接收到这个帧的节点都是该广播域的一部分。由于许多设备都极易产生广播,因此,如果不进行维护就会消耗大量的带宽,降低网络的效率。广播域被看作是OSI第二层的概念,因此由中继器、集线器、网桥、交换机等第一、二层设备连接的节点被认为是在同一个广播域中,而路由器、第三层交换机等第三层设备则可以划分广播域。
第一层设备(如中继器、集线器)不能划分冲突域和广播域;第二层设备(如网桥、交换机)能划分冲突域,但不能划分广播域;第三层设备(如路由器)既能划分冲突域,又能划分广播域。
网络互连设备可以将网络划分为不同的冲突域、广播域。然而,由于不同的网络互连设备可能工作在OSI模型的不同层次上,如中继器工作在物理层,网桥和交换机工作在数据链路层,路由器工作在网络层,而网关工作在OSI模型的上三层。因此,它们划分冲突域、广播域的效果也就各不相同。
下面我们讨论一下常见网络互连设备的工作原理以及它们在划分冲突域、广播域时各自的特点。
1. 传统以太网
传统共享式以太网的典型代表是总线型以太网。在这种类型的以太网中,通信信道只有一个,并采用介质共享(介质争用)的访问方法。每个站点在发送数据前首先要侦听网络是否空闲,如果空闲就发送数据,否则继续侦听直到网络空闲为止。如果两个站点同时检测到介质空闲并同时发送出一帧数据,就会导致数据帧的冲突,使得双方的数据帧都会遭到破坏。这时,两个站点将采用二进制指数退避的方法各自等待一段随机的时间再进行侦听和数据发送。
图1中,假定主机A需要将一个单播数据包发送给主机B,但由于传统共享式以太网的广播性质,接入到总线上的所有主机都将收到此单播数据包。此时,如果任何第二方(包括主机B)也要发送数据到总线上就会产生冲突,导致双方数据发送失败,因此我们称连接在总线上的所有主机共同构成了一个冲突域。
当主机A发送一个目标是所有主机的广播类型数据包时,总线上的所有主机都会接收该广播数据包,因此我们称连接在总线上的所有主机共同构成了一个广播域。
图1 传统以太网
2. 中继器(Repeater)
中继器作为一个实际产品出现主要有两个原因:第一,扩展网络距离,再生衰减信号;第二,实现粗同轴电缆以太网和细同轴电缆以太网的互连。
中继器虽然可以延长信号传输的距离、实现两个网段的互连,但它并没有增加网络的可用带宽。如图2所示,网段1和网段2经过中继器连接后构成了一个冲突域和广播域。
图2 中继器连接的网络
3、集线器(HUB)
集线器可以看作是多接口的中继器,若侦测到碰撞,它就会提交阻塞信号。集线器同样可以延长网络通信的距离,或是连接物理结构不同的网络,但集线器主要还是用作主机站点的汇聚点,将连接在集线器各个接口上的主机联系起来,使之可以互相通信。
集线器位于物理层,无法识别MAC地址和IP地址,因此会以广播的形式发送它接收到的数据包,它的所有端口为一个冲突域同时也为一个广播域。
如图3所示,所有主机都连接到中心节点的集线器上构成一个物理上的星型连接。但实际上,集线器内部的各个接口都是通过背板总线连接在一起的,在逻辑上仍构成一个共享的总线。因此,集线器及其接口所连接的所有主机共同构成了一个冲突域和广播域。
集线器最大的特点就是采用共享型模式。也就是说,当一个接口向另一个接口发送数据时,其他端口处于等待状态。为什么会等待呢?举个例子来说,其实在集线器所连接的网络中,若A向B发送数据包,实际上A是发送给B、C、D三个接口的(该现象即紧接下文介绍的IP广播),但只有B接收,其他的接口在第一时间判断不是自己需要的数据后将不会再去接收A发送来的数据,直到A再次发送IP广播。在A再次发送IP广播之前的单位时间内,C,D是闲置的,或者C、D之间可以传输数据。因此我们可以理解为集线器内部只有一条通道(即公共通道),然后在这条公共通道下方连接着所有接口。
图3 集线器连接的网络
4、网桥(Bridge)
网桥又称为桥接器,与中继器类似,传统的网桥只有两个接口,用于连接不同的网段。与中继器不同的是,网桥具有一定的智能性,可以学习网络上主机的地址,同时具有信号过滤的功能。
如图4所示,由于网桥可以识别网段内部的通信数据流,因此在网段1中,主机A发给主机B的数据包将不会被网桥转发到网段2。同样,网段2中主机X发给主机Y的数据包也不会被网桥转发到网段1。可见,网桥可以将一个冲突域分割为两个,而每个冲突域共享自己的总线信道带宽。
但是,如果主机C发送了一个目标是所有主机的广播类型数据包时,网桥就需要对这个数据包进行转发,这样网桥两侧的两个网段总线上的所有主机都会接收到该广播数据包,因此网段1和网段2仍同属一个广播域。
图4 网桥连接的网络
5、交换机(Switch)
交换机的出现是为了解决连接在集线器上的所有主机会共享可用带宽,使得冲突域过大,从而造成网络堵塞的问题。交换机是通过为需要通信的两台主机直接建立专用的通信信道来增加可用带宽的,从一定层面上交换机可看作是多接口的网桥。
局域网交换机的基本功能与网桥一样,具有帧转发、帧过滤的功能。但是,交换机与网桥相比还是存在以下不同:
(1)交换机工作时,实际上允许多组端口间的通道同时工作。所以,交换机的功能体现出不仅仅是一个网桥的功能,而是多个网桥功能的集合,即网桥一般分有两个端口,而交换机具有高密度的端口。
(2)分段能力的区别:由于交换机能够支持多个端口,因此可以把网络系统划分成为更多的物理网段,这样使得整个网络系统具有更高的带宽,而网桥仅仅支持两个端口,所以,网桥划分的物理网段是相当有限的。
(3)传输速率的区别:交换机与网桥数据信息的传输速率相比,交换机要快于网桥。
(4)数据帧转发方式的区别 :网桥在发送数据帧前,通常要接收到完整的数据帧并执行帧检测序列FCS后,才开始转发该数据帧,而交换机则具有存储转发和直接转发两种帧转发方式。直接转发方式在发送数据以前,不需要在接收完整个数据帧和经过32bit循环冗余校验码CRC的计算检查后的等待时间。
位于第二层的交换机是通过查找MAC地址表将接收到的数据传送到目的端口的。相比于集线器,交换机可以分割冲突域,每一个端口为一个单独的冲突域。
如图5所示,交换机为主机A和主机B建立了一条专用的信道,也为主机C和主机D建立了一条专用的信道。因此,如果主机A想给主机B发送消息,交换机不会转发这个数据帧,同理,主机C发给主机D也是一样。也就是说,交换机将一个冲突域划分为两个冲突域,并且这两个冲突域共享自己的总信道带宽。只有当交换机的某个接口直接连接了一个集线器,而集线器又连接了多台主机时,交换机上的该接口和集线器上所连的所有主机才可能产生冲突,形成冲突域。换句话说,交换机上每个接口都是自己的一个冲突域。
然而,交换机同样没有过滤广播通信的功能。也就是说,交换机在接收到一个广播数据包后,会向其所有端口转发此广播数据包。因此,交换机和其所有接口所连接的主机共同构成了一个广播域。
交换机可以划分冲突域,但不能划分广播域。
图5 交换机连接的网络
6、路由器(Router)
交换机虽然能够分割冲突域,但其连接的设备仍同属一个广播域,当交换机接收到广播数据包时,会在所有的设备中进行传播,可能导致网络拥塞并造成安全隐患。为了避免因不可控制的广播导致的网络故障风险,通信网络中使用路由器来分割广播域。路由器并不通过MAC地址来转发数据,而是利用不同网络的ID号即IP地址来确定数据转发的目的地址。MAC地址通常由设备硬件出厂自带,无法自行更改,而IP地址则一般由网络管理员手动配置或由系统自动分配。路由器通过IP地址将连接到其端口的设备划分为不同的网络(子网),每个端口下连接的网络即为一个广播域,广播数据不会扩散到该端口以外,因此我们说路由器隔离了广播域。
路由器工作在网络层,可以识别网络层的地址(即IP地址),有能力过滤第三层的广播消息。实际上,除非做特殊配置,否则路由器从不转发广播类型的数据包。因此,路由器的每个端口所连接的网络都独自构成一个广播域。
如图6所示,如果各个网段都是共享式局域网,则每网段自己构成一个独立的冲突域和广播域。
图6 路由器连接的网络
7、网关(Gateway)
网关工作在OSI参考模型的上三层,因此并不使用冲突域、广播域的概念。网关主要用来进行高层协议之间的转换。如充当LOTUS 1-2-3邮件服务和Microsoft Exchange邮件服务之间的邮件网关。(注意,这里网关的概念完全不同于PC主机以及路由器上配置的默认网关。)
-----------------------------------最后打个通俗的比喻来帮助理解冲突域和广播域的概念-------------------------------------
局域网好比一栋大楼,每个人(好比主机)有自己的房间(房间就好比网卡,房号就是物理地址,即MAC地址),里面的人(主机)人手一个对讲机,由于这些对讲机都工作在同一频道,所以一个人说话,其他人都能听到,这就是广播(向所有主机发送信息包),只有目标才会回应,其他人虽然听见但是不理(丢弃包),而这些能听到广播的所有对讲机就够成了一个广播域。这些对讲机所工作的频道相当于集线器,而每个对讲机相当于集线器上的端口。大家都知道对讲机在说话时是不能收听的,必须松开对讲键才能收听,这种在同一时刻只能收或者发的工作模式就是半双工。而且同一时刻只能有一个人说话,这样其他人才能听清楚对讲机中的声音,同一时刻有两个或更多的人一起说话声音就会重叠,从而产生冲突,所以这就构成了一个冲突域。
之后的一天,楼里的人受不了这种低效率的通信了,所以他们对设备进行了升级,换成每人一部内线电话(即交换机,每个电话都相当于交换机上的一个端口),每人都有一个内线号码(逻辑地址即IP地址)。(这里要额外说一下IP地址和MAC地址转译的问题,常见的第二层交换机只能识别MAC地址,它内置一个MAC地址表,并不断维护和更新它,来确定哪个端口对应那台主机的MAC地址,而我们所用的通信软件都是基于IP的,IP地址和MAC地址的转换工作,就由ARP地址解析协议来完成。)在最开始时,没人知道哪个号码对应哪个人,所以要想打电话给某个人得先广播一下:“xxx,你的号码是多少?”,随后那个人接受到广播信息并回复“我的号码是xxxx”。这样你就有了目标的号码,所有的内线号码就是通过这种方式不断加入电话簿中(交换机的MAC地址表),下次可以直接拨到他的分机号码上去而不用广播了。大家都知道电话是点对点的通信设备,不会影响到其他人,起冲突的只会限制在本地,一个电话号码的线路相当于一个冲突域,只有再串连分机时,分机和主机之间才可能产生冲突,但这个冲突不会影响外面其他的电话。电话号码就像是交换机上的端口号,也就是说交换机上每个端口自成一个冲突域,所以整个大的冲突域被分割成若干的小冲突域了。而且,电话在接听的同时可以说话,这样的工作模式就是全双工。这就是交换机比集线器性能更好的原因之一。