Why This Matters
This is a developer-focused list of common wrong assumptions about local area networks, covering NAT, MAC addresses, DHCP, protocols and reachability. It matters because software that assumes a simple, well-behaved LAN often breaks in real deployments with double NAT, spoofed or duplicate MAC addresses, multiple DHCP servers, or mixed Wi-Fi/Ethernet environments. For anyone building device discovery, licensing, or peer-to-peer features, it's a practical checklist of edge cases to design around.
Key Takeaways
- Assumptions about NAT, RFC 1918 addressing, and IPv6 being NAT-free are frequently wrong in practice.
- MAC addresses are not reliably unique, unchangeable, or a proxy for identifying a device.
- LANs can't be counted on for DHCP behavior, consistent MTU, working mDNS, speed, or even that two hosts on a subnet can reach each other.
Falsehoods Programmers Believe About LANs
Each entry is phrased as the falsehood. Some of these may sometimes be true and sometimes be false.
NAT
My LAN is behind a NAT.
I’m only behind one NAT.
My LAN isn’t behind a NAT.
My IPv6 hosts aren’t behind a NAT.
If I have a RFC 1918 address, I’m behind a NAT.
If I don’t have a RFC 1918 address, I’m not behind a NAT.
NAT only translates addresses.
... continue reading