Lektion 1 von 9
Wie ein Switch denkt: Frames und MAC-Tabelle
Du liest Ethernet-Frames und MAC-Adressen in jeder Schreibweise und sagst voraus, wann ein Switch lernt, weiterleitet, flutet oder filtert.
Worum es geht
Noemi steht im Technikraum des Hotels Alpenblick in Lenk. Vor ihr hängen drei alte, nicht verwaltbare Switches, kreuz und quer verkabelt. Gäste-WLAN, Rezeption, Kasse und Telefonie laufen alle durch dasselbe Netz. Die Hoteldirektorin fragt: «Können die Gäste eigentlich sehen, was unsere Kasse macht?»
Die ehrliche Antwort lautet: teilweise ja. Um das zu begründen und später sauber zu beheben, musst du verstehen, wie ein Switch entscheidet, wohin ein Datenpaket geht. Genau das ist der Kern dieses Moduls: Alles, was später kommt (VLANs, Trunks, Spanning Tree, Port-Security), baut auf dieser einen Logik auf.
In dieser Lektion lernst du den Ethernet-Frame kennen, liest und vergleichst MAC-Adressen in allen Schreibweisen und spielst Schritt für Schritt durch, wie ein Switch lernt, weiterleitet, flutet und filtert. Am Schluss baust du selbst einen kleinen Switch in Python.
Der Ethernet-Frame: der Briefumschlag auf Layer 2
Aus Modul 117 kennst du die MAC-Adresse als «Name an der Wohnungstür». Auf Layer 2 steckt jede Nachricht in einem Frame, einer Art Briefumschlag mit festem Aufbau:
| Feld | Grösse | Inhalt |
|---|---|---|
| Ziel-MAC | 6 Byte | Wer soll den Frame bekommen? |
| Quell-MAC | 6 Byte | Wer hat ihn geschickt? |
| EtherType | 2 Byte | Was steckt drin? 0x0800 IPv4, 0x0806 ARP, 0x86DD IPv6 |
| Nutzdaten | 46 bis 1500 Byte | z.B. ein IP-Paket |
| FCS | 4 Byte | Prüfsumme: Ist der Frame unterwegs beschädigt worden? |
Davor schickt die Netzwerkkarte noch eine Präambel zur Synchronisation, die zählt man bei der Framegrösse nicht mit. Ein voller Frame ist also 6 + 6 + 2 + 1500 + 4 = 1518 Byte gross.
Fällt dir die Reihenfolge auf? Die Ziel-MAC steht ganz vorne. Ein Switch kann so schon nach den ersten sechs Byte entscheiden, wohin der Frame geht. Merk dir auch den EtherType: In Lektion 4 schiebt sich genau an dieser Stelle der VLAN-Tag mit dem Wert 0x8100 hinein.
MAC-Adressen lesen
Eine MAC-Adresse hat 48 Bit, also 12 Hex-Ziffern. Jedes System schreibt sie anders:
| System | Schreibweise |
|---|---|
Windows (ipconfig /all) | 3C-52-82-4A-1F-0B |
| Linux, macOS, Wireshark | 3c:52:82:4a:1f:0b |
| Cisco IOS | 3c52.824a.1f0b |
Es ist immer dieselbe Adresse. Wenn du eine MAC aus ipconfig auf dem Switch suchst, musst du sie ins Cisco-Format umschreiben, sonst meldet der Switch einen Syntaxfehler.
Zwei Bits im ersten Byte verraten dir mehr über die Adresse:
- Das unterste Bit (I/G-Bit) unterscheidet Einzel- und Gruppenadressen. Ist das erste Byte ungerade, ist es eine Multicast-Adresse, z.B.
01:00:5e:...(IPv4-Multicast) oder33:33:...(IPv6-Multicast). Die Adresse aus lauter Einsen,ff:ff:ff:ff:ff:ff, ist der Broadcast: an alle. - Das zweitunterste Bit (U/L-Bit) zeigt, ob die Adresse vom Hersteller stammt oder lokal vergeben wurde. Smartphones und Laptops verwenden heute oft eine zufällige private WLAN-Adresse pro Netz. Du erkennst sie an der zweiten Hex-Ziffer 2, 6, A oder E, z.B.
a6:12:9e:00:31:7c.
Ordne jeder MAC-Adresse ihren Typ zu.
Bevor du weiterliest, bring einem Programm bei, MAC-Adressen in allen Schreibweisen zu verstehen. Diese Funktion brauchst du in späteren Laboren wieder.
Code-Labor: MAC-Adressen vergleichbar machen
Windows zeigt 3C-52-82-4A-1F-0B, Linux 3c:52:82:4a:1f:0b und der Cisco-Switch 3c52.824a.1f0b. Wer Adressen zwischen diesen Quellen vergleicht, braucht eine einheitliche Form.
Schreibe zwei Funktionen:
normalisiere_mac(text)nimmt eine MAC-Adresse in einer der vier Schreibweisen (mit-, mit:, mit.oder ganz ohne Trennzeichen, gross oder klein) und gibt sie im Cisco-Format in Kleinbuchstaben zurück, z.B."3c52.824a.1f0b". Bleiben nach dem Entfernen der Trennzeichen nicht genau 12 Hex-Ziffern (0 bis 9, a bis f) übrig, wirft sie einenValueError.mac_typ(text)gibt"broadcast","multicast"oder"unicast"zurück. Broadcast istffff.ffff.ffff. Sonst entscheidet das niederwertigste Bit des ersten Bytes (I/G-Bit): ungerades erstes Byte bedeutet Multicast, gerades Unicast.
Lernen, weiterleiten, fluten, filtern
Stell dir die Rezeption eines Hotels vor, die keine Gästeliste hat. Sie lernt nur durch Beobachtung: Bringt Frau Meier einen Brief aus Zimmer 12 vorbei, notiert die Rezeption «Meier wohnt in 12». Kommt später ein Brief für Frau Meier, geht er direkt in Zimmer 12. Kommt ein Brief für jemanden, den die Rezeption noch nie gesehen hat, wird er auf jeder Etage ausgerufen.
Genau so arbeitet ein Switch. Für jeden Frame macht er zwei Dinge:
1. Lernen (immer aus der Quell-MAC). Der Switch trägt die Quell-MAC zusammen mit dem Eingangsport (und dem VLAN) in seine MAC-Adresstabelle ein. Steht die Adresse schon drin, setzt er den Alterungs-Timer zurück. Hängt das Gerät plötzlich an einem anderen Port, wird der Eintrag überschrieben.
2. Entscheiden (anhand der Ziel-MAC).
| Situation | Entscheidung | Fachbegriff |
|---|---|---|
| Ziel ist Broadcast oder Multicast | an alle Ports ausser dem Eingang | Fluten (Flooding) |
| Ziel steht nicht in der Tabelle | an alle Ports ausser dem Eingang | Unknown Unicast Flooding |
| Ziel steht in der Tabelle, anderer Port | nur an diesen Port | Weiterleiten (Forwarding) |
| Ziel steht in der Tabelle, gleicher Port wie Eingang | verwerfen | Filtern |
Einträge, die eine Zeit lang nicht mehr aufgefrischt werden, löscht der Switch wieder. Bei Cisco beträgt diese Aging Time standardmässig 300 Sekunden. So bleibt die Tabelle aktuell, wenn Geräte umziehen oder ausgeschaltet werden.
Die MAC-Tabelle von SW-OG1 ist leer. Der PC an Gi1/0/3 (0011.2233.4403) schickt einen Unicast-Frame an den PC mit 0011.2233.4407. Was macht der Switch?
Die MAC-Tabelle auf einem managed Switch ansehen
Auf einem verwalteten Cisco-Switch zeigt dir ein einziger Befehl die Tabelle:
SW-OG1#show mac address-table dynamic
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 0050.56a1.1c0e DYNAMIC Gi1/0/3
1 3c52.824a.1f0b DYNAMIC Gi1/0/7
1 a4bb.6d12.0042 DYNAMIC Gi1/0/48
1 a4bb.6d12.0043 DYNAMIC Gi1/0/48
Total Mac Addresses for this criterion: 4So liest du die Ausgabe: Das Gerät 3c52.824a.1f0b hängt an Port Gi1/0/7 im VLAN 1. An Gi1/0/48 stehen mehrere Adressen. Das ist typisch für einen Uplink: Dahinter hängt ein weiterer Switch mit vielen Geräten. Willst du wissen, wo ein bestimmtes Gerät steckt, fragst du gezielt: show mac address-table address 3c52.824a.1f0b. Diese Suche wirst du bei der Fehlersuche ständig brauchen.
Die MAC-Tabelle von SW-OG1 enthält bereits mehrere Einträge. Welche Frames flutet der Switch an alle Ports im VLAN ausser dem Eingangsport? (Mehrere Antworten)
Wähle alle zutreffenden Antworten.
Kollisionsdomäne, Broadcastdomäne und Switch-Typen
Jeder Switch-Port ist eine eigene Kollisionsdomäne: Weil jedes Gerät eine eigene Leitung im Vollduplex hat, gibt es praktisch keine Kollisionen mehr. Alle Ports eines Switches (und aller daran angeschlossenen Switches) bilden aber zusammen eine Broadcastdomäne. Jeder ARP-Request («Wer hat 10.0.0.21?») und jedes DHCP-Discover erreicht jedes Gerät.
Im heutigen Hotelnetz heisst das: Die Laptops der Gäste hören jeden Broadcast der Kasse, und jeder geflutete Frame landet auch bei ihnen. Schlimmer noch: Ein Gast mit böser Absicht kann sich per ARP-Täuschung zwischen Kasse und Router schalten. Die Lösung sind getrennte Broadcastdomänen, also VLANs (Lektion 3).
| Typ | Kann | Typischer Einsatz |
|---|---|---|
| Unmanaged Switch | nur lernen und weiterleiten | Tischswitch, Heimnetz |
| Managed Layer-2-Switch | zusätzlich VLANs, Trunks, Spanning Tree, Port-Security, Verwaltung per CLI, Web oder SNMP | Etagenverteiler |
| Layer-3-Switch | zusätzlich Routing zwischen VLANs, ACLs | Core-Switch im Technikraum |
Ein Layer-3-Switch ist also ein Switch, der zusätzlich wie ein Router IP-Pakete zwischen Netzen weiterleiten kann, und das in Hardware, also sehr schnell. Im Hotel wird SW-CORE ein solcher Switch, die drei Etagenswitches SW-OG1 bis SW-OG3 sind managed Layer-2-Switches.
Für den Technikraum des Hotels braucht es einen zentralen Switch, der zwischen den künftigen VLANs vermittelt und den Gästeverkehr filtern kann. Welcher Gerätetyp passt?
Schritt für Schritt: Die MAC-Tabelle im Hotel beobachten
Noemi baut die Situation in Cisco Packet Tracer nach: Ein Switch SW-OG1, daran vier Geräte. Sie leert die Tabelle mit clear mac address-table dynamic und beobachtet, was passiert.
| Port | Gerät | MAC |
|---|---|---|
| Gi1/0/1 | PC Rezeption | 0011.2233.4401 |
| Gi1/0/2 | Drucker | 0011.2233.4402 |
| Gi1/0/3 | PC Kasse | 0011.2233.4403 |
| Gi1/0/4 | Gast-Laptop | 0011.2233.4404 |
Schritt 1: Ausgangslage. Die Tabelle ist leer.
Schritt 2: Die Rezeption will drucken. Sie kennt die MAC des Druckers noch nicht und schickt einen ARP-Request an ffff.ffff.ffff. Der Switch lernt ...4401 an Gi1/0/1 und flutet den Broadcast an Gi1/0/2, 3 und 4. Auch die Kasse und der Gast-Laptop bekommen ihn. Tabelle: 1 Eintrag.
Schritt 3: Der Drucker antwortet mit einem Unicast an ...4401. Der Switch lernt ...4402 an Gi1/0/2. Das Ziel ist bekannt, also geht der Frame nur an Gi1/0/1. Tabelle: 2 Einträge.
Schritt 4: Der Druckauftrag läuft von ...4401 an ...4402. Beide sind bekannt, der Switch leitet gezielt an Gi1/0/2 weiter und frischt nur die Timer auf.
Schritt 5: Der Gast-Laptop schickt einen Frame an die Kasse ...4403, die bisher still war. Der Switch lernt ...4404 an Gi1/0/4. Das Ziel ist unbekannt, also flutet er an Gi1/0/1, 2 und 3. Rezeption und Drucker verwerfen den Frame in ihrer Netzwerkkarte, aber er ist bei ihnen angekommen. Tabelle: 3 Einträge.
Schritt 6: Die Kasse antwortet. Der Switch lernt ...4403 an Gi1/0/3 und leitet direkt an Gi1/0/4 weiter. Tabelle: 4 Einträge.
Schritt 7: Fünf Minuten Ruhe beim Drucker. Nach 300 Sekunden ohne Frame vom Drucker löscht der Switch dessen Eintrag. Der nächste Frame an den Drucker wird wieder geflutet, bis der Drucker antwortet.
Ergebnis für die Direktorin: «Den eigentlichen Zahlungsverkehr sieht ein Gast nicht, weil der Switch ihn gezielt zustellt. Aber jeder Rundruf und jeder Frame an ein noch unbekanntes Gerät erreicht auch die Gäste, und ein Angreifer im gleichen Netz hat viele Möglichkeiten. Deshalb trennen wir die Netze.»
Jetzt bist du dran: Programmiere genau diese Entscheidungslogik.
Code-Labor: Ein Switch im Kleinformat
Simuliere, wie ein Switch Frames verarbeitet. Schreibe die Funktion verarbeite_frame(tabelle, ports, eingang, quelle, ziel):
tabelleist ein Dictionary{MAC: Port}(die MAC-Tabelle), das du veränderst.portsist die Liste aller Ports des Switches, z.B.[1, 2, 3, 4].eingangist der Port, an dem der Frame ankommt,quelleundzielsind MAC-Adressen im Cisco-Format.
Die Funktion gibt die aufsteigend sortierte Liste der Ports zurück, auf denen der Frame hinausgeht:
- Lernen: Die Quell-MAC wird mit dem Eingangsport in die Tabelle eingetragen (ein bestehender Eintrag wird überschrieben, falls das Gerät umgezogen ist).
- Broadcast (
ffff.ffff.ffff) oder unbekanntes Ziel: fluten, also alle Ports ausser dem Eingangsport. - Ziel bekannt, anderer Port: nur dieser eine Port.
- Ziel bekannt, gleicher Port wie der Eingang: filtern, also leere Liste.
Typische Fehler
- «Der Switch lernt die Ziel-MAC.» Nein. Er lernt nur, wer gesendet hat. Ein Gerät, das nie sendet, taucht nie in der Tabelle auf, und Frames an dieses Gerät werden immer geflutet.
- «Unbekannte Ziele werden verworfen.» Nein, sie werden geflutet. Genau deshalb landen fremde Frames bei unbeteiligten Geräten.
- Mehrere MACs an einem Port gleich als Fehler werten. Hinter einem Port können ein IP-Telefon mit angeschlossenem PC, ein Tischswitch oder ein Server mit virtuellen Maschinen hängen. Auffällig wird es erst, wenn an einer Zimmerdose plötzlich zehn Adressen stehen.
- MAC in falscher Schreibweise suchen.
show mac address-table address 3C-52-82-4A-1F-0Bversteht IOS nicht. Schreib die Adresse im Format3c52.824a.1f0b.
Zusammenfassung
- Ein Ethernet-Frame beginnt mit Ziel-MAC, Quell-MAC und EtherType, ein voller Frame hat 1518 Byte.
- MAC-Adressen gibt es in drei Schreibweisen. Auf Cisco-Switches suchst du im Format
aaaa.bbbb.cccc. - Ungerades erstes Byte bedeutet Multicast,
ffff.ffff.ffffist Broadcast. Private WLAN-Adressen sind zufällig und lokal vergeben. - Ein Switch lernt aus der Quell-MAC, leitet bekannte Ziele gezielt weiter, flutet Broadcasts und unbekannte Ziele und filtert, wenn Quelle und Ziel am selben Port hängen.
- Einträge altern nach 300 Sekunden (Cisco-Standard) aus.
- Alle Ports bilden ohne VLANs eine Broadcastdomäne. Das ist der Grund, warum Gäste und Kasse getrennt werden müssen.
show mac address-tablezeigt dir, an welchem Port ein Gerät hängt.
Mit deiner eigenen KI vertiefen
Kopiere einen Prompt in Claude, ChatGPT oder Claude Code. Er macht die KI zur Lernbegleitung statt zum Lösungsautomaten.
Switch-Logik verstehen und abfragen lassen Chat-KI
Wenn dir noch unklar ist, wann ein Switch lernt, weiterleitet, flutet oder filtert. Die KI erklärt mit einer Alltagsanalogie und prüft dich danach Frame für Frame.