最近流传一份叫《Falsehoods Programmers Believe About LANs》的清单文章,列了六大类、几十条程序员对局域网的常见错误假设,从"我的LAN在NAT后面"到"两台同子网主机必然能互通",条条看着眼熟。但读到一半会发现,很多断言是互相打脸的——比如"MAC地址全球唯一"和它的反命题都被原封不动地列了进去。这种自相矛盾正是清单体的用意:不是告诉你哪条对哪条错,而是告诉你,局域网这件事上没有哪条能永远成立。

六类假设,没有一条能稳赢

NAT:有人说"我肯定在NAT后面",有人说"我肯定不在",两种说法都可能错——IPv6主机也可能被NAT。

协议:局域网未必只跑IPv4,老协议IPX、AppleTalk、NetBEUI在部分工控和历史遗留网络里依然活着。

MAC地址:全球唯一、固定48位、不能改——三条断言各自都不保真。

可达性:同子网不等于能互通,Wi-Fi客户端和有线客户端也不是对等节点。

DHCP:一个网络里可能有零个、一个或多个DHCP服务器,谁都不保证只有一个。

IP地址:一台主机常常不止一个IP,局域网也未必用私有地址段。

谬误背后都有标准撑腰,不是抬杠

这些条目看着像段子,其实每一条都能在协议文档里找到对照。IPv6原生不用ARP,靠的是ICMPv6的Neighbor Discovery(RFC 4861),清单里"ARP entries are accurate"这条在纯IPv6网络里根本无的放矢。RFC 8064进一步建议接口标识符用稳定的不透明生成方式,不再默认从MAC地址派生——想靠链路本地地址反推设备MAC,大概率会失望。

MAC地址的"全球唯一"从来不是协议的强制承诺,本地管理地址的唯一性由使用者自己负责,IEEE直到802c-2017才拿出SLAP方案来协调这块地址空间的分配,说明厂商多年来其实是在自我承诺,不是被规则锁死。

169.254.0.0/16这段更典型:RFC 3927规定它不被路由器转发,分配靠ARP冲突检测兜底,是APIPA的正常表现,跟"DHCP服务器挂了"没有必然因果。DHCPv6也刚换过底本,STD 102(RFC 9915)取代了此前的RFC 8415,连"DHCP该给网关"这种基本预期,标准里从来都没承诺过。

同一个"LAN",捆着四层不同的东西 行政信任边界 谁被允许接进来——纯粹是组织画的一条线 DHCP管理域 谁自动配到哪个网段,可以有零个、一个或多个服务器 IP子网 地址段怎么划,同子网不代表能互通 以太网广播域 谁能收到同一份广播帧,这才是物理意义上的"局域" 四层各自独立演进,程序员默认它们天然重合

真正让人栽跟头的,是"同一个局域网"这个假设本身

家用网络出问题,第一反应往往是怀疑本地网络配置。但CGNAT影响的是公网主动连进内网的可达性,并不天然阻止两台本地设备互相通信——把本地P2P故障归咎到CGNAT头上,是社区讨论里反复出现的误诊断。

Wi-Fi客户端隔离也不是一个绝对的布尔开关。厂商宣传里"开启隔离=绝对安全",但实际部署中,某些实现仍会转发特定的UDP流量,尤其是mDNS、SSDP这类发现协议,隔离经常留着缝。

VLAN的问题类似:很多工程师把VLAN当成安全边界,但它做的只是二层分离,真正的隔离要靠路由、ACL和终端策略配合。把VLAN当墙用,墙上却全是没关的窗户。

  • 风险.把Wi-Fi隔离、VLAN默认当成绝对安全边界,容易在真正需要隔离的场景里埋下漏洞。

"LAN"这个词本身就是个坑

以太网广播域是物理/链路层的产物,IP子网是三层地址规划,DHCP是后来补上的自动配置协议,行政信任边界根本不是技术概念——是企业IT画的一条组织线。这四层历史上各自独立演进,程序员把它们默认捆成"局域网"三个字,是图省事,不是协议要求。

名为一网,实则各自为政。
  • 结论.局域网从来不是一张网,是被程序员图省事捆在一起的四层假设。
程序员以为的 vs 标准怎么说 程序员的假设 MAC地址全球唯一 ARP能查到真实设备 169.254说明DHCP挂了 VLAN就是安全边界 协议怎么说 本地管理地址靠自证,IEEE SLAP才协调 IPv6用NDP,压根不跑ARP 是APIPA兜底,不代表DHCP故障 只做二层分离,真隔离靠路由和ACL

检索这篇文章时,拿到的作者信息和发布日期指向一个还没到来的时间点,这类线索本身就该打个问号——文章确实存在,但具体出处和社区讨论热度都还没能被交叉验证,值得读者自己核实一遍,而不是照单全收转发出去。

写涉及局域网通信的代码或排障时,不妨把"同子网必通""MAC地址能当身份证""隔离开关是绝对边界"这几条默认当成可能为假。先分清楚问题出在哪一层——广播域、子网、DHCP配置,还是行政信任边界,再去动手,比笼统地说"网络有问题"有用得多。那份清单最锐利的地方,不是列出多少条谬误,而是提醒你:局域网从来不是一个东西,是被偷懒粘在一起的四个东西。