In diesem Beitrag, der auch ein wenig länger sein wird (und erweitert wird), werden wir uns ansehen, mit welcher genialen Technik (aus dem Jahr 1984) unser Netzwerk / Internet eigentlich funktioniert. Und vor dieser Technik darf man gerne Respekt haben.

Ein kleiner Vorteil – etwas darüber zu wissen, kann auch bei Problemen helfen – und Wissen ist sowieso Macht.

Grundlegend einmal – aller Dinge Anfang ist unsere Netzwerkkarte, egal ob jetzt Ethernet, LTE oder WLAN – jede Netzwerkkarte hat eine sogenannte MAC-Adresse. Diese nennt man auch ‚physikalische Adresse‘, es hat nicht nur jede Netzwerkkarte eine solche MAC-Adresse – jede Netzwerkkarte hat eine einzigartige MAC-Adresse. Also – eine Adresse, die es auf der Welt nur einmal gibt. Unter Linux können wir uns diese auf dem Terminal mit dem Befehl:

ip -brief link show

anzeigen lassen:

Dies gelingt etwas unübersichtlicher auch mit dem Befehl:

ip a

Jetzt kommen wir zu einem Teil der genialen Technik, mit der unser Netzwerk / Internet heute funktioniert – TCP/IP – genauer ausgedrückt ‚Transmission Control Protocol‚ und ‚Internet Protocol‚. TCP/ IP funktioniert heute noch so, wie in seiner Zeit – 1984 – natürlich wurde es verbessert, aber die Grundlagen sind noch immer dieselben.

Bei TCP/IP handelt es sich um Software, sie ist in jedem Betriebssystem integriert und ist der Vermittler zwischen Netzwerkkarte, Betriebssystem und Anwendungen. TCP/IP versteht folgende Unterhaltungen:

Mögliche TCP/IP-Verbindungen

  • Unicast – die Verbindung zwischen zwei Rechnern
  • Multicast – die Verbindung zwischen mehreren Rechnern
  • Broadcast – die Verbindung zwischen allen Rechnern

Beginnen wir damit, uns mit dem Internet zu verbinden – dies geschieht in den meisten Fällen mit einem Router. Ein Router ist meist nichts anderes als ein Switch, dieser verbindet unsere Rechner, Smartphones und so weiter zu Hause zusammen in ein lokales Netzwerk – der Router selbst, verbindet uns in das Netzwerk.

Heute konfigurieren wir nicht mehr Netzwerkkarten manuell, dies geschieht automatisch – aber wie funktioniert dies? Unser Rechner – besser gesagt unsere Netzwerkkarte hat zu Beginn keine IP-Adresse, diese bekommt sie von unserem Router. Unser Rechner kennt zwar das WLAN-Netzwerk, dieses müssen wir ja angeben, bei Ethernet (Netzwerkkabel), führt dieses zwar in den meisten Fällen direkt zum Router/Switch – über das Netzwerk sind jedoch meist mehrere Geräte verbunden. Wie bekommt unser System heraus, welches dieser Geräte der Router ist?
TCP/IP sendet via Broadcast – also an alle Geräte im Netzwerk ein Datenpaket – dieses beinhaltet die MAC-Adresse der genutzten Netzwerkkarte und der Frage – wer ist hier der Router?:

Da alle Rechner zusammen hängen, eben über den Router/Switch – geht das Datenpaket an alle Rechner. Und Broadcast-Pakete gehen immer an alle Rechner im selben Netzwerk. Broadcast-Pakete verlassen das lokale Netzwerk nicht. Der Router/Switch ist natürlich darauf getrimmt, auf die Frage ‚Wer ist hier der Router?‚ zu antworten – dies tut dieser mit einem Unicast-Datenpaket. In diesem Unicast-Datenpaket steht seine MAC-Adresse und die Antwort – ‚ich bin der Router/Switch‚:

Nach dieser Antwort, sendet unser System jetzt dem Router (er kennt inzwischen ja die MAC-Adresse des Routers) die Anfrage – ‚bitte gib mir eine IP-Adresse‘:

Jetzt sieht der Router in seiner Datenbank nach – welche IP-Adresse ist frei? Diese Datenbank ist eigentlich nichts anderes als eine Textdatei mit einer Tabelle und zwei Spalten. Diese Textdatei nennt sich Routing-Tabelle:

Der Router sucht sich also eine freie IP-Adresse und schreibt die MAC-Adresse des anfragenden Rechners in die Zeile mit der IP-Adresse. Anschließend sendet der Router ein Unicast-Datenpaket zurück an den anfragenden Rechner:

Jetzt wird es langsam interessant – wir bekommen von unserem Router eine IP-Adresse aus dem privaten Bereich, im Internet bewegen wir uns mit öffentlichen IP-Adressen – zu diesem Thema werden wir später mehr lesen. Wir arbeiten also mit zwei verschiedenen IP-Adressen. Sehen wir uns einmal folgende Grafik an:

In der Grafik sehen wir links unser lokales Netzwerk, auf der rechten Seite schnell gesagt das Internet. In der Mitte zeigt sich unser Router – dieser Router stellt die Schnittstelle zwischen unserem lokalen Netzwerk und dem Internet dar. In unserem lokalen Netzwerk haben wir private IP-Adressen und im Internet öffentliche. Da unser Router die Verbindung zwischen diesen zwei Schnittstellen ist, hat dieser mindestens zwei Netzwerkschnittstellen – auf der Seite unseres lokalen Netzwerkes eine private IP-Adresse und auf der anderen eine öffentliche IP-Adresse.

Jetzt möchten wir auf unserem Laptop mit der IP-Adresse10.17.0.3‚ die Webseite auf dem Server mit der IP-Adresse129.0.0.4‚ öffnen, wir schicken also über unseren Router ein Datenpaket (dieses ist noch immer vereinfacht dargestellt, diesem Thema widmen wir später genauere Aufmerksamkeit), das dem Server zeigt – wir wollen mit ihm kommunizieren. Unser Router muss es also zusammenbringen, aus unserer privaten IP-Adresse eine öffentliche zu machen – sehen wir uns folgende Grafik an:

Unser Router übernimmt das Datenpaket vom Rechner mit der IP-Adresse10.17.0.3‚ und schreibt die Anfrage in eine weitere Routing-Tabelle, dazu gehört auch dessen MAC-Adresse – warum sehen wir uns später an. In dieselbe Zeile einer anderen Spalte trägt er den Server im Internet ein, an den das Datenpaket gehen soll. An dieser Stelle hat das Datenpaket jedoch schon die öffentliche IP-Adresse des Routers. Der Router sendet also unser verändertes Datenpaket an den Server im Internet.

Der Server im Internet mit der IP-Adresse129.0.0.4‚ empfängt das Datenpaket und sieht – unser Router mit der öffentlichen IP-Adresse129.0.0.3‚ will eine Verbindung mit ihm aufnehmen, sieht die IP-Adresse unseres Laptops jedoch nicht. Er könnte mit der privaten IP-Adresse auch nichts anfangen, die private IP-Adresse befindet sich schließlich in einem ganz anderen Netzwerk – in dieses kann er nicht einsehen.
Der Server sieht also – der Router will eine Verbindung mit ihm aufnehmen – sehr vereinfacht ausgedrückt steht im Datenpaket – ‚ich, mit der IP 10.17.0.3 möchte mit dir in Verbindung treten‚. Der Server sendet ein entsprechendes Datenpaket an die öffentliche IP-Adresse unseres Routers zurück – etwa mit der Antwort ‚bitte gerne‚:

Unser Router empfängt das an seine IP-Adresse gesendete Datenpaket, sieht in der Routing-Tabelle nach – welche IP-Adresse in unserem privaten Netzwerk das Datenpaket an den Server gesendet hat und ändert die IP-Adresse im Datenpaket auf ‚10.17.0.3‘ um, das Datenpaket landet wieder auf unserem Laptop. Die Verbindung wurde eröffnet.

Jetzt beginnt erst die eigentliche Datenübertragung – bisher wurde nur eine Verbindung mit dem Server erstellt. Grob gesagt, erst jetzt schickt unser Laptop dem Server ein Datenpaket – mit dem Inhalt, was wir eigentlich möchten. Wieder ändert unser Router die IP-Adressen in den Datenpaketen hin und beim Empfangen der Pakete vom Server wieder zurück. Dies natürlich in entsprechend schneller Zeit.

Wir haben bisher mit IP-Adressen gearbeitet, wir schreiben jedoch etwa in die Adresszeile des Webbrowsers keine IP-Adressen – dies wäre schon etwas umständlich. Nehmen wir einmal an – wir wollen die Webseite wurstsemmel.at öffnen – eine sehr sinnvolle Webseite (keine Verschlüsselung, aber auch nicht nötig). Wir geben einfach die Adresse ein – das Internet interessiert sich für unsere Buchstaben jedoch nicht – das Netzwerk kommuniziert mit IP-Adressen – für diese Webseite erwartet das Netzwerk eigentlich die IP-Adresse85.13.135.71‚. Irgendjemand oder etwas muss sich also darum kümmern, unsere menschlich verständliche Eingabe in eine IP-Adresse zu konvertieren.

Ins Spiel kommen hierbei zwei Dinge – ein Resolver – dieser ist auf unserem Betriebssystem installiert und ein DNS-Server (Domain Name Service), dieser – oder besser gesagt, diese – sind Server im Internet. Und hier zeigt sich wieder – Respekt vor der Technik aus dem Jahr 1984. Die Entwickler damals, wussten kaum – welche Aufgaben das Internet heute wirklich hat. DNS-Server müssen heute Millionen Anfragen pro Sekunde durchführen – wohl eher viele, viele mehr – und es funktioniert heute noch so, wie damals.

Beginnen wir ganz von vorne. Wir wollen auf unserem Laptop im Webbrowser die Webseite ‚wurstsemmel.at‚ öffnen. Unser Webbrowser übergibt dies an den ebenfalls auf dem Betriebssystem installierten Resolver. Dieser gibt erst einmal den Zusatz ‚www‚ hinzu. ‚www‚ wird hier als Host, oder auch als Rechner bezeichnet. ‚wurstsemmel.at‚ hingegen als Domäne. Unser Resolver hat wiederum eine Textdatei mit zwei Spalten, in eine Spalte schreibt er:

www.wurstsemmel.at

Die zweite Spalte bleibt noch leer. Die Spalte zeigt also übersetzt ‚Host.Domäne‚. In die zweite Spalte sollte die IP-Adresse des Servers von ‚wurstsemmel.at‘ kommen, diese ist jedoch noch unbekannt. Unser Betriebssystem übernimmt die Aufgabe vom Resolver und übergibt diese an TCP/IP – TCP/IP erstellt ein Datenpaket mit der Anfrage – ‚hallo DNS-Server, wie ist die IP-Adresse von wurstemmel.at?‚. Das Datenpaket wird an den Router gesendet, von diesem wird die IP-Adresse und MAC-Adresse auf die seiner Daten geändert und an den konfigurierten DNS-Server gesendet.

Jetzt kommt das eigentlich geniale an der Technik. Ein DNS-Server hat eine Textdatei – zwei Spalten – in einer Spalte steht eine Web-Adresse – etwa ‚www.wurstsemmel.at‚ und in derselben Zeile in der anderen Spalte die IP-Adresse – etwa ‚85.13.135.71‚. Der DNS-Server durchsucht diese Textdatei Zeile für Zeile, von oben nach unten, bis er die passende Adresse gefunden hat. Schon im Jahr 1990 hatte eine Textdatei mit allen Adressen von damals jedoch schon 30 Gigabyte – eine solche Datei zu durchsuchen dauert nicht nur Sekunden! Und dann denken Sie daran – wie viele Webseiten wird es heute geben. Und noch dazu – ein DNS-Server muss Millionen von Anfragen pro Sekunde durchführen!

Schon im Jahre 1984 dachte man daran, man könnte den DNS-Dienst aufteilen – in mehrere Server. So gibt es so gesehen nur wenige sogenannte Root-Server. Welchen DNS-Server wir auch immer im Betriebssystem oder am Router konfiguriert haben – wir senden unsere Anfrage ‚hallo DNS-Server, wie ist die IP-Adresse von wurstemmel.at?‚ an diesen – dieser DNS-Server sieht erst einmal in seiner Datenbank nach, ob der Eintrag ‚wurstsemmel.at‘ schon vorhanden ist. Etwa – weil die Webseite innerhalb der letzten 8 bis 10 Stunden von jemanden schon einmal aufgerufen wurde, ist dies der Fall, wird die IP-Adresse mit einem Datenpaket entsprechend zurückgesendet. Ist dies nicht der Fall, sendet dieser die Anfrage an einen DNS-Root-Server.
Der DNS-Root-Server sieht sich die Adresse an – also ‚wurstsemmel.at‚, an der Domäne interessiert ihn nur das ‚.at‚. Der DNS-Root-Server übergibt die Anfrage an einen weiteren DNS-Server, der für die Endung ‚.at‚ zuständig ist. Dieser übergibt dem Root-Server seine IP-Adresse und der Root-Server sendet diese IP-Adresse wieder zurück (unser Router würde keine Verbindung durchlassen, an dessen IP wir keine Anfrage gestellt haben). Unser TCP-IP sendet die Anfrage ‚hallo DNS-Server, wie ist die IP-Adresse von wurstemmel.at?‘ an diesen untergeordneten DNS-Server. Dieser sieht – er kennt zwar die Endung ‚.at‚ und ‚wurstsemmel‚, also ‚wurstsemmel.at‚ – aber nicht die IP-Adresse, er kennt jedoch einen DNS-Server, der die IP-Adresse von ‚wurstsemmel.at‚ hat – in der Regel der DNS-Server des Anbieters des Webservers. In dessen Textdatei steht in der Zeile neben ‚wurstsemmel.at‘ auch die IP-Adresse85.13.135.71‚ – diese wird wieder über unseren Router zurückgesendet – und jetzt kennt unser Webbrowser die IP-Adresse – die Verbindung kann gestartet werden, erst dann werden Daten übertragen.

Alles zusammen in Millisekunden! So werden Anfragen für DNS-Server klein gehalten und Millionen von Abfragen pro Sekunde überhaupt verarbeitet werden:

Jetzt verstehen Sie vielleicht auch, warum es so teuer ist – eine Domain zu kaufen. Weil es die einzige Aufgabe des Anbieters ist, die Domain in die Textdatei seines DNS-Servers einzutragen und die eines weiteren übergeordneten DNS-Servers.

Categories:

Tags:

Schreibe einen Kommentar

Eine Reaktion

Neue Themen im Forum
Debian installieren - für Anfänge …Danke LinuxBiber, das hilft gut weiter. Wenn da aber für den De … Weiterlesen
Frage zu GrubDanke @juhu, das war für mich eine reine Verständnisfrage allge … Weiterlesen
Brother Drucker unter LinuxMit der Suche nach „Linux Brother HL-2030“ fand ich zur Seite htt … Weiterlesen
Kategorien im Wiki
WIKI-Beiträge des Monates

Die Beiträge des Monates finden Sie im Kalender unter den blau markierten Tageszahlen.

September 2023
M D M D F S S
 123
45678910
11121314151617
18192021222324
252627282930  
Archive