生动的比喻(关于冲突域,广播域,集线器,交换机的转帖)

 局域网好比一栋大楼,每个人(好比主机)有自己的房间(房间就好比网卡,房号就是物理地址,即MAC地址),里面的人(主机)人手一个对讲机,由于工作在同一频道,所以一个人说话,其他人都能听到,这就是广播(向所有主机发送信息包),只有目标才会回应,其他人虽然听见但是不理(丢弃包),而这些能听到广播的所有对讲机设备就够成了一个广播域。而这些对讲机就是集线器(HUB),每个对讲机都像是集线器上的端口,大家都知道对讲机在说话时是不能收听的,必须松开对讲键才能收听,这种同一时刻只能收或者发的工作模式就是半双工。而且对讲机同一时刻只能有一个人说话才能听清楚,如果两个或者更多的人一起说就会产生冲突,都没法听清楚,所以这就构成了一个冲突域。

  广播域(Broadcast domain):网络中的一组设备的集合。即同一广播包能到达的所有设备成为一个广播域。当这些设备中的一个发出一个广播时,所有其他的设备都能接收到这个广播帧。HUB和SWITCH的所有端口都是在一个广播域里,路由器上的每个端口自成一个广播域。

有一天楼里的人受不了这种低效率的通信了,所以升级了设备,换成每人一个内线电话(交换机SWITCH,每个电话都相当于交换机上的一个端口),每人都有一个内线号码(逻辑地址即IP地址)。(这里要额外说一下IP地址和MAC地址转译的问题,常见的二层交换机只识别MAC地址,它内置一个MAC地址表,并不断维护和更新它,来确定哪个端口对应那台主机的MAC地址,而我们所用的通信软件都是基于IP的,IP地址和MAC地址的转换工作,就由ARP地址解析协议来完成。)在最开始时,没人知道哪个号码对应哪个人,所以要想打电话给某个人得先广播一下:“xxx,你的号码是多少?”“我的号码是xxxx”。这样你就有了目标的号码,所有的内线号码就是通过这种方式不断加入电话簿中(交换机的MAC地址表),下次可以直接拨到他的分机号码上去而不用广播了。大家都知道电话是点对点的通信设备,不会影响到其他人,起冲突的只会限制在本地,一个电话号码的线路相当于一个冲突域,只有再串连分机时,分机和主机之间才会有冲突的发生,这个冲突不会影响到外面其他的电话。而电话号码就像是交换机上的端口号,也就是说交换机上每个端口自成一个冲突域,所以整个大的冲突域被分割成若干的小冲突域了。而且,电话在接听的同时可以说话,这样的工作模式就是全双工。这就是交换机比集线器性能更好的原因之一。


### 集线器交换机广播域冲突域的影响及区别 #### 一、集线器(Hub) 集线器是一种工作在OSI模型物理层的设备,其主要作用是对信号进行放大并转发到所有连接的端口上。由于集线器不具备智能的数据处理能力,它会将接收到的所有数据帧无差别地复制到每一个端口。 - **冲突域** 整个集线器构成一个单一的冲突域。这意味着当多个设备尝试同时发送数据时,可能会发生数据碰撞,导致传输失败。因此,在使用集线器的情况下,网络性能受到较大限制[^1]。 - **广播域** 同样地,整个集线器也属于同一个广播域。任何广播消息都会被传递给所有的连接设备,这可能导致大量的冗余流量,进一步降低效率[^3]。 #### 二、交换机(Switch) 交换机则是在数据链路层工作的设备,能够识别MAC地址并对数据帧进行更精确的转发操作。 - **冲突域** 每个交换机端口都代表了一个独立的冲突域。即使两台设备在同一时间试图向目标设备发送数据,只要它们不在相同的端口下就不会引发冲突。这种机制极大地提高了局域网内的通信质量[^2]。 - **广播域** 尽管交换机能有效划分冲突域,但它无法分割广播域。也就是说,默认情况下,交换机会将其所管理的所有端口视为单个广播域的一部分。每当有广播帧发出时,这些帧会被转发至除源端口外的所有其他端口上的设备接收[^4]。 ```python # 示例代码展示简单的模拟逻辑 (仅用于理解概念) class Hub: def send_data(self, data): print(f"Data {data} sent to all ports.") # 单一冲突域行为 class Switch: mac_table = {} def learn_mac_address(self, port, mac_addr): self.mac_table[mac_addr] = port def forward_frame(self, frame, source_port): dest_mac = frame['destination'] if dest_mac in self.mac_table and self.mac_table[dest_mac] != source_port: target_port = self.mac_table[dest_mac] print(f"Frame forwarded directly to Port {target_port}.") # 多个冲突域行为 else: print("Broadcasting the frame across all ports except source.") ``` ### 总结 综上所述,集线器不会分割冲突域广播域;而交换机会把每个端口划分为单独的冲突域,但对于广播域而言仍然保持统一状态。为了真正实现广播域之间的隔离,则需要借助更高层次的功能设备——如路由器来完成此项任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值