In Netzwerken mit mehreren Switches und Bridges können zwischen zwei angeschlossenen Netzwerkteilnehmern durchaus mehrere physikalische Verbindungen bestehen. Diese redundanten Datenwege sind auch durchaus erwünscht, da sie bei Ausfall einzelner Netzstränge alternative Wege zum Ziel anbieten können. Auf der anderen Seite kann es durch diese Mehrfachverbindungen zu unerwünschten Schleifen (Loops) oder zu mehrfach empfangenen Frames kommen. Beide Effekte stören den reibungslosen Datenverkehr im Netz.
Das Spanning-Tree-Protokoll (STP) ermöglicht die Analyse des Netzwerks auf Layer-2-Ebene und bietet somit auch unterhalb der Routing-Schicht Lösungen zur intelligenten Wegeauswahl zwischen zwei Netzteilnehmern. Durch das Auffinden redundanter Wege zwischen den Netzteilnehmern bildet STP eine eindeutige Struktur, in der Loops und doppelte Pakete vermieden werden. Dazu werden so genannte Bridge Protocol Data Units (BPDUs) als Multicast an eine bestimmte MAC-Adresse gesendet. Die BPDUs ermöglichen das Auffinden von doppelten Strecken sowie der Entfernung und der auf dieser Verbindung verfügbaren Datenrate. Aus diesen Werten errechnet das Spanning-Tree-Protokoll eine Priorität (auch Wege- oder Pfadkosten genannt), mit der die verschiedenen Verbindungen zu behandeln sind. Die Verbindungen mit geringerer Priorität werden deaktiviert und stehen somit nicht für die Clients zur Verfügung. Durch die Reduktion auf nicht redundante Verbindungen zwischen den Clients baut das Protokoll einen Baum auf, in dem von einem zentralen Switch (Root-Bridge) aus alle Verbindungen eindeutig sind.
Die BPDUs werden regelmäßig im Netzwerk verschickt, um die Verfügbarkeit der Verbindungen zu prüfen. Fällt eine der Verbindungen aus, wird die Analyse des Netzwerks erneut ausgelöst, die möglichen Wege und die zugehörigen Prioritäten werden neu festgelegt.
Nach der Initialisierung befinden sich zunächst alle Ports im Zustand „Blocking“, in dem nur BPDUs übertragen werden. Anschließend wechseln die Ports über die Zustände Listening und Learning in den Zustand „Forwarding“, in dem Nutzdaten über die Ports übertragen werden können.