Wie ein Paket seinen Weg findet
Routing-Tabellen, der laengste Praefix und das Standard-Gateway — dazu, warum das Internet ein Netz von Netzen ist und warum traceroute die Zwischenstationen ueberhaupt sieht.
Im Junior-Grad hast du 192.168.1.0/24 in kleinere Subnetze zerlegt und bestimmt, welche Adressen auf derselben Strecke liegen. Das war die Antwort auf eine Frage ueber Adressen. Die naechste Frage blieb offen: Ein Paket verlaesst deinen Rechner mit einer Zieladresse, und dieser Rechner hat genau ein Kabel, ein Funkmodul und keine Ahnung, wo das Ziel physisch liegt. Den Weg zu finden ist eine eigene Aufgabe, und Router erledigen sie Station fuer Station.
Jeder Host und jeder Router fuehrt eine Routing-Tabelle: eine Liste von Zielen, die er bereits erreichen kann. Jeder Eintrag besteht aus einem Netzpraefix und zwei Angaben — dem naechsten Sprung (welchem Nachbarn das Paket uebergeben wird) und dem Ausgangsinterface (auf welches Kabel oder in welche Funkstrecke es geht). Kein Eintrag beschreibt den ganzen Weg. Ein Eintrag beschreibt einen Schritt, und der naechste Router hat seine eigene Tabelle.
$ ip route
default via 192.168.1.1 dev wlan0 proto dhcp metric 600
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.42Eine typische Routing-Tabelle eines Laptops: drei Eintraege decken das gesamte Internet ab.Passt ein Ziel auf mehrere Eintraege, nimmt der Router nicht den ersten Treffer und schaut auch nicht auf die Reihenfolge der Zeilen. Er verwendet den laengsten Praefix: Der Eintrag mit mehr Netzb bits gewinnt, weil er die genauere Aussage ist. /32 ist ein einzelner Rechner, /24 ein Subnetz, /16 eine Gruppe von Subnetzen, /0 passt auf jede existierende Adresse und ist damit die letzte Instanz. Dieser letzte Eintrag ist die Standardroute, und sein naechster Sprung ist das Standard-Gateway — meist der Router, der dein Netz mit dem Anbieter verbindet.
destination next hop matched by
----------------- -------------- ------------------
10.8.0.7 direct (tun0) /24 10.8.0.0/24
10.8.5.7 192.168.1.1 /16 10.8.0.0/16
everything else 192.168.1.1 /0 defaultDieselbe Tabelle, drei verschiedene Ziele.Die Weiterleitung geschieht Sprung fuer Sprung, und jede Station trifft dieselbe Entscheidung unabhaengig. Dein Rechner prueft, ob das Ziel in einem direkt angeschlossenen Netz liegt; wenn nicht, geht das Paket zum Gateway. Das Gateway macht dieselbe Pruefung anhand seiner eigenen Tabelle und reicht das Paket weiter, und so fort. Jeder Router schreibt den Kopf der Sicherungsschicht neu — die MAC-Adresse des naechsten Sprungs — laesst die IP-Adressen aber unveraendert. Nirgends im Paket steht der zurueckgelegte Weg, deshalb kann die Antwort ueber eine voellig andere Route zurueckkommen.
laptop 192.168.1.42 --ttl 64--> router 203.0.113.1
router 203.0.113.1 --ttl 63--> transit 198.51.100.9
transit 198.51.100.9 --ttl 62--> server 93.184.216.34
reply comes back on a different path: routing is per packet, not per connectionTTL sinkt bei jedem Sprung. Bei null verwirft der Router das Paket.TTL existiert, damit ein Paket nicht ewig kreist, wenn zwei Router sich uneinig sind. Traceroute macht aus diesem Schutz ein Messinstrument. Es sendet ein Paket mit TTL 1: Der erste Router zaehlt sie auf null herunter und antwortet mit einer ICMP-Meldung time exceeded, die seine Adresse verraet. Dann TTL 2, dann 3, und die Antworten reihen sich der Reihe nach auf. Ein Sternchen statt einer Adresse bedeutet, dass dieser Router nicht antworten darf — der Weg existiert, du siehst diese Station nur nicht. Deshalb ist traceroute auf einen TCP-Port die ehrliche Pruefung: Viele Netze verwerfen ICMP stillschweigend und leiten den Verkehr, der dich wirklich interessiert, problemlos weiter.
$ traceroute -n 93.184.216.34
1 192.168.1.1 1.204 ms
2 10.44.0.1 7.881 ms
3 203.0.113.9 12.115 ms
4 198.51.100.9 95.402 ms
5 93.184.216.34 103.771 ms
$ traceroute -n -T -p 443 93.184.216.34
5 93.184.216.34 103.902 msDie Sprünge erscheinen in Reihenfolge, weil TTL in jeder Runde um eins waechst.Innerhalb einer Organisation lernen Router Wege automatisch, mit einem inneren Protokoll wie OSPF. Zwischen Organisationen arbeitet BGP, und die Einheit ist nicht der Router, sondern das autonome System: ein Netz unter einer Verwaltung, gekennzeichnet durch eine Nummer wie AS64500. Jedes System kuendigt die Adressbloecke an, die es erreichen kann, und die Nachbarn geben diese Ankuendigungen weiter und haengen ihre eigene Nummer an den Pfad. Ein Router haelt deshalb mehrere moegliche Wege zum selben Praefix und waehlt nach Richtlinie: Pfadlaenge, kommerzielle Vereinbarungen, lokale Praeferenz. Eine Landkarte des Internets hat er nicht, nur eine Menge von Behauptungen darueber.
Keine zentrale Maschine kennt das ganze Internet. Stattdessen gibt es eine Hierarchie von Groessenordnungen. Zuhause bedient ein Router ein Subnetz. Dein Anbieter betreibt Tausende Router unter einem einzigen inneren Protokoll und versteckt all das hinter einer BGP-Ankuendigung. Darueber tauschen einige Tausend autonome Systeme Ankuendigungen untereinander aus. Jede Ebene braucht die Ebene darunter nur als einen erreichbaren Block — nur deshalb bleibt eine Routing-Tabelle klein genug, um sie in Mikrosekunden zu durchsuchen.
Praxis
Welchen Eintrag waehlt der Kernel nach der Routing-Tabelle aus dem Theorieteil fuer ein Paket an 10.8.5.7, und warum?
Hinweise
- Der laengste Praefix ignoriert die Reihenfolge der Zeilen in der Tabelle und vergleicht nur die Praefixlaenge.
- Die Adresse 10.8.5.7 liegt in 10.8.0.0/16, aber ausserhalb von 10.8.0.0/24.
- Die Standardroute ist der kuerzest moegliche Praefix: /0, der auf alles passt.
Ordne jeden Teil eines Routingtabellen-Eintrags dem zu, was er dem Kernel tatsaechlich sagt.
Hinweise
- Frag, wie viele Bits des Praefixes der Router vergleichen muss: 0, 24 oder 32.
- Ein naechster Sprung ist eine Adresse; ein Ausgangsinterface ist ein Geraetename wie tun0 oder wlan0.
- Ein Eintrag in der Liste ist ueberhaupt kein Teil einer Route — er ist das Ergebnis einer Abfrage.
Bringe die Schritte einer einzelnen traceroute-Messung in die Reihenfolge, in der sie im Netz ablaufen.
- 1der erste Router dekrementiert TTL auf 0 und verwirft das Paket
- 2die naechste Sonde geht mit TTL 2 los und erreicht einen Hop weiter
- 3dieser Router antwortet mit ICMP time exceeded und gibt damit seine Adresse preis
- 4eine Sonde mit TTL 1 in Richtung des Ziels senden
Hinweise
- Traceroute sendet Pakete mit kleiner TTL und erhoeht sie bei jedem Schritt um eins.
- Es antwortet die Station, die das Paket verworfen hat, nicht die davor.
Fragen zu dieser Lektion
Warum überhaupt Netzwerke lernen?
Fast alles, was du baust, spricht irgendwann mit etwas anderem. Wer weiß, wie Daten wirklich wandern, macht aus „es funktioniert nicht“ eine Liste von Dingen, die man der Reihe nach prüfen kann.
Was ist der echte Unterschied zwischen TCP und UDP?
TCP sorgt dafür, dass alles ankommt, in der richtigen Reihenfolge, und wiederholt Verlorenes — das kostet Zeit. UDP sendet und schaut nicht zurück, deshalb bevorzugen Video und Spiele es: Ein verspätetes Bild ist schlechter als ein fehlendes.
Was ist DNS in einfachen Worten?
Es ist das Telefonbuch des Internets. Du kennst den Namen, der Rechner braucht die Nummer. DNS macht aus einem Namen wie example.org eine IP-Adresse und merkt sich die Antwort, damit nicht jedes Mal gefragt wird.
Ist das kostenlos?
Ja. Die erste Ebene jedes Fachs ist kostenlos und braucht kein Konto. Tiefere Ebenen und die höheren Stufen sind kostenpflichtig — genau das hält das Projekt am Leben.
Für welches Alter ist das gedacht?
Für neugierige Jugendliche ab etwa 12 Jahren und für Erwachsene, die bei null anfangen. Programmiererfahrung wird nicht vorausgesetzt; die Lektionen zu Netzwerken und Physik brauchen keine Mathematik über Schulniveau.
Muss ich schon programmieren können?
Nein. Logik, Physik und Netzwerke beginnen bei null. Code schreibst du im Bereich Programmiersprachen — und auch der fängt vorne an.
Muss ich etwas installieren?
Nein. Alles läuft im Browser: Theorie, Übungen und die interaktiven Simulationen. Es gibt nichts herunterzuladen und nichts einzurichten.
Wie lange dauert ein Fach?
Eine Lektion dauert 10 bis 15 Minuten. Eine Junior-Stufe umfasst etwa 12 bis 20 Lektionen, also einige Wochen regelmäßiger Übung statt eines Abends.
Muss ich der Reihenfolge folgen?
Innerhalb einer Stufe öffnen sich die Ebenen nacheinander, weil jede auf der vorherigen aufbaut. Zwischen den Fächern bist du frei: beginne mit Logik, Physik oder Netzwerken.