错误子网配置在共享总线局域网可用但交换式局域网不可用的原因咨询
错误子网配置在共享总线局域网可用但交换式局域网不可用的原因咨询
嘿,这个问题问到点子上了,咱们结合两种局域网的核心逻辑,一步步拆解清楚:
先把你的场景再明确一遍:
- 主机A的子网掩码是
/24,所以它认定DNS服务器的IP不在自己的网段里,访问DNS时会把数据包发给默认网关(DG),目标MAC填的是网关的MAC。 - DNS服务器的子网掩码被错设成了
/23,这个掩码覆盖了A所在的/24网段,所以DNS觉得A和自己在同一个子网,回复A时会直接用A的MAC作为目标MAC,跳过网关直接通信。
接下来看两种网络的差异:
共享总线局域网(集线器)为啥能成
共享总线的核心就是“一锅端”——所有设备共享同一个广播域,集线器根本不会做任何智能转发,不管收到什么数据包,都会原样广播到所有端口。
所以哪怕DNS发的数据包目标MAC是A的,这个包也会被集线器推到所有设备面前,A自然能捡到并处理,就算子网配置错了,这种广播特性也能让通信“凑活”起来。
交换式局域网(交换机)为啥会失效
交换机是靠MAC地址表精准转发的,它会记住每个端口对应的设备MAC,收到数据包后只发给目标MAC所在的端口,不会乱广播。这里的问题主要出在「不对称路由」和系统校验上:
- MAC地址学习的潜在问题:当A发数据包给网关时,交换机记住了A的MAC在A的端口、网关的MAC在网关的端口;网关转发数据包给DNS时,交换机又记住了DNS的MAC在DNS的端口。理论上DNS发响应时,交换机能查到A的端口并转发,但如果A长时间没发过包,交换机的MAC表超时清空了,DNS的ARP广播请求虽然能发到A,但部分严格的交换机端口隔离规则可能会拦截这种跨端口的广播(不过一般LAN里不会这么设)。
- 主机A的系统校验:A的子网掩码是
/24,它打心底认为DNS在另一个子网,所以预期所有来自DNS的数据包都应该经过网关(也就是目标MAC是网关的MAC)。但现在DNS直接把包发给A,目标MAC是A自己的,源IP却不在A的子网里,这种“不符合预期”的数据包,部分操作系统或防火墙会直接判定为异常流量丢弃——而共享总线里这种广播来的“跨子网直连包”太常见了,系统一般不会严格校验。
简单说就是:共享总线靠“广播兜底”不管对错都能传,交换式网络虽然能精准转发,但主机A的系统会因为不符合自己的子网认知,拒绝接收这种“不按套路来”的响应包。
备注:内容来源于stack exchange,提问作者Allexj
相关产品推荐
相关产品推荐

