A switch 'floods' all ports when it doesn't know where the destination
MAC address is.
The port that responds is how the switch learns what port has what
MAC. The type of memory that a switch stores this information is
called 'Content Addressable Memory', or CAM tables.
So, when traffic comes in to the switch, and the switch has recognized
that destination MAC, the switch will only forward to that specific
If different traffic comes in where it does NOT recognize the
destination MAC, it floods all ports, including ones that it has
previously 'discovered' a MAC is at.
So basically a switch can 'assign' more than one MAC to a port in its
That would explain why your NIC is getting frames from any MAC even though it's behind a switch. I have never thought about this before and may be wrong but that's really the only way it could work. On enterprise level switches you probably can modify or disable this behavior.
Promiscuous mode is useful if you want to set up virtual bridges on the system the NIC lives on. Virtual bridges let you tie one or more NICs on a system into a bridge - essentially, making a virtual 'switch' or Layer 2 forwarding. Promiscuous mode is also useful if you want to capture traffic on a network, obviously.