IP-Adressen und Ports

Das große Haus

Wir Menschen verstehen besser, wenn wir Bilder vor Augen haben. Deshalb versuche ich es mal mit einem großen Haus.

Da gibt es ein großes Haus mit vielen Zimmern.

Damit Briefe und Packete zu diesem Haus zugestellt werden können, besitzt es eine Postanschrift. Beispiel:

Hauptstraße 17
12345 Müllershausen

Damit die Zustellung im richtigen Zimmer landet, benötigt es einer weiteren Angabe. Das kann der Name der Person oder die Zimmernummer sein. Beispiele:

Fr. Wagner

oder

Zimmer 127

Aber was hat das mit Netzwerktechnik zu tun?

Sehr viel.

Jeder Computer, der mit einem Netzwerk verbunden ist, ist quasi so ein großes Haus.

Damit er mittels des Netzwerks kommunizieren kann, benötigt er selbst eine "Postanschrift", sonst wissen Gegenstellen nicht, wohin sie die Antwort senden sollen. Und das ist die IP-Adresse.

Jeder Computer ist in der Lage, mit mehreren Netzwerkanwendungen gleichzeitig umzugehen. Aber wie landet die Antwort bei der entsprechenden Anwendung? Mit der "Zimmernummer", dem Port, gelingt das.

Übrigens: Wenn ich hier von Computer spreche, sind damit auch Smartphones, Tablets, etc. gemeint. Alle diese Geräte können im Netzwerk agieren.

Inhalt

IP-Adresse

Das Internet ist weltweit. Damit Donald Trump oder ich nicht das Internet durcheinander bringen, gibt es die IANA (Internet Assigned Numbers Authority) seit 1988. Sie kümmert sich um die Verteilung der IP-Adressen im Internet weltweit.

Ein Computer kann wenig ohne weitere Software mit einem Straßennahmen oder einer Postleitzahl anfangen.

Er kann nur mit 0 und 1 umgehen, weil er digital ist. Deshalb sind IP-Adressen wie folgt aufgebaut:

IPv4-Adressen

Eine IPv4-Adresse hat eine Länge von 32 Bit, also 32 Nullen oder Einsen. Beispiel:

11000000 10101000 00000010 10011010

Damit wir Menschen besser damit umgehen können, werden hier immer 8 Bit zu einer Dezimahlzahl zusammengefasst. Zwischen den Zahlen wird ein Punkt notiert. Das wäre hier:

192.168.2.154

Somit sind bei diesen Zahlen Werte von 0 bis 255 möglich.

Da 32 Bit genutzt werden, könnten sich theoretich 2 hoch 32 Geräte miteinander verbinden. Das wären also 4294967296 Geräte, über 4 Mrd. toll, oder doch nicht?

Wieviele Menschen leben auf der Welt? Derzeit sind es knapp 9 Mrd. Wieviele netzwerkfähige Geräte nutzt ein Mensch (Computer, Auto, Smartphone, Tablett, Kühlschrank, Herd, Mikrowelle, Heizung, usw.)? Fazit: Die Anzahl reicht nicht.

Deshalb werden mehrere Geräte zum Internet hin gebündelt, wo dann alle diese Geräte mit der gleichen IP-Adresse unterwegs sind. In einem Heimnetz übernimtt das der Router. Übrigens wird der Router "Rauter" ausgesprochen und nicht "Ruter".

In netzwerktechnisch dicht besiedelten Gebieten setzen ISPs (Internet-Service-Provider) auch eine Art Router ein, die vielen Privatkunden eine einzigste IP-Adresse zum Internet hin zuteilen. Die ISPs haben nur einen gewissen Bereich von IP-Adressen zur Verfügung.

Vielleicht ist es schön, dass das so geht. Aber es hat Nachteile. Für polizeiliche und staatsanwaltliche Untersuchungen bei Straftaten ist das ein riesen großer zusätzlicher Aufwand. Und ich als Serverbetreiber habe auch keine Chance, zu erkennen; "War es die gleiche Person, die meinen Server ärgert? Oder war es das gleiche Gebiet?"

Ein paar fest vergeben IPv4-Adressbereiche

vonbisVerwendungszweck
0.0.0.00.255.255.255Das Netzwerk selbst
10.0.0.010.255.255.255Direktverbindungen zwischen Computern ohne Router
127.0.0.0127.255.255.255Der Computer selbst (Loopback)
Innerhalb eines Computers kommunizieren Programme miteinander mittels Netzwerk.
169.254.0.0169.254.255.255DHCP. Wenn ihr ein neues Gerät im Heimnetz anmeldet, benötigt das neue Gerät dann auch eine IP-Adresse vom Router. Über diesen Adressbereich wird dem Gerät die IP-Adresse zugeteilt.
172.16.0.0172.31.255.255Privates Netz, wird oft für Gastzugänge genutzt, 1048576 Teilnehmer wären möglich..
192.168.0.0192.168.255.255Privates Netz, 65536 Teilnehmer wären möglich.
224.0.0.0239.255.255.255Multicasts, Mehrpunktverbindungen
240.0.0.0255.255.255.254Reserviert
255.255.255.255255.255.255.255Limited Broadast, über diese Adresse kommuniziert der Router mit allen Teilnehmern im Netzwerk, also eine Art Mehrpunktverbindung.

Und so werden aus den 4,2 Mrd. Adressen immer weniger, die für das Internet zur Verfügung stehen.

Die 2 Adressbereiche für private Netze können in jedem privaten Netzwerk genutzt werden. Diese Adressen werden nicht in das Internet geroutet.

IPv6-Adressen

Eine IPv6-Adresse besteht aus 128 Bit und ist somit 4 mal länger als eine IPv4-Adresse. Ein Beispiel:

10000000000011 0000000011000111 0111001111111010 1011110100101001 0000000000000000 0000000000000000 1011101011111111 0000011001000011

Damit wir diese große Anzahl an Bits händeln können, werden 16 Bits zu einer hexadezimalen Zahl (Basis 16, Ziffern von 0 bis 9 und a bis f) zusammengefasst. Zwischen diesen Zahlen wird ein Doppelpunkt notiert. In diesem Beispiel sieht das so aus:

2003:00c7:73fa:bd29:0000:0000:baff:0643

Also sind für jeder dieser Zahlen Werte von 0000 bis ffff möglich.

Da es viele Bereiche gibt, wo die 16er Bitgruppen mit Nullen beginnen, können führende Nullen weggelasen werden:

2003:c7:73fa:bd29:0:0:baff:643

Sind eine oder mehrere aufeinander folgenden 16er Bitgruppen komplett mit Nullen belegt, kann man diese komplett weglassen. Dazu muss ein 2. Doppelpunkt notiert werden. Das geht aber nur einmal pro Adresse.

2003:c7:73fa:bd29::baff:643

Aus den 128 Bits resultieren
340.282.366.920.938.463.463.374.607.431.768.211.456
mögliche IP-Adressen. Kann mir jemand die Zahl vorlesen?

340 Sextillionen 282 Quintilliarden 366 Quintillionen 920 Qadrilliarden 938 Quadrillionen 463 Trilliarden 463 Trillionen 374 Billiarden 607 Billionen 431 Milliarden 768 Millionen 211 Tausend 456

Zu so großen Zahlen fehlt uns einfach der Bezug, deshalb drücke ich es andes aus.

Für jedem Qadratzentimeter (Fläche von 1 cm mal 1 cm) der Erdoberfläche inklusive der Meere stehen so 4 IPv6-Adressen zur Verfügung.

Man glaubt es kaum, das gibt es schon seit dem Jahre 2002. Und noch heute tun sich Netzwerkdienste mit IPv6-Adressierungen schwer.

Da es so die Unmenge an möglichen Addressen gibt, hat man sich auf folgendes geeinigt:

  1. Man trennt die Adresse in der Mitte, also nach 64 Bit.
  2. Der erste Teil davon ist der globale Teil der Adresse. Ihn nennt man Präfix. Dieser wird vom ISP oder Router zugewiesen.
  3. Der zweite Teil ist der lokale Teil, der Suffix genannt wird. Dieser kann selbst, z.Bsp. im Heimnetz, genutzt werden.

In dem Beispiel bedeutet das:

Globaler Teil
Präfix
Lokaler Teil
Suffix
2003:00c7:73fa:bd290000:0000:baff:0643
2003:c7:73fa:bd29::baff:643

Aufgrund der 64 Bit stehen somit jedem Teil 18.446.744.073.709.551.616 Adressen zur Verfügung. Reichen Euch 18,4 Trillionen Adressen für das Heimnetz?

Weitere Unterschiede von IPv6 zu IPv4

Ein paar Bereiche von IPv6-Adressen

Adresse bginnt mitVerwendungszweck
::1, also
0:0:0:0:0:0:0:1
Loopback, localhost. Über diese Adresse kommunizieren Programme innerhalb eines Gerätes. Sie ist sogar vorhanden, wenn das Gerät keine Netzwerkschnittstelle besitzt.
2Alle Internetadressen weltweit beginnen mit 2. Das wurde so erst mal von der IANA festgelegt, da es immer noch mehr als genug sind.
fdAlle Adressen, die mit fd beginnen, sind Adressen im privaten Netz. Sie werden nicht ins Internet geroutet. Den kompletten Präfix definiert in der Regel der Router.
fe80:Link-Local-Adressen. Mittels Routeradvertisement können die automatischen Adresskonfigurationen ohne DHCP erfolgen, dafür wird dieser Adressbereich genutzt.
ff00:Multicast, Mehrfachverbindungen

Und mehr Adressen braucht der normale Anwender auf der Welt erst mal nicht. Könnt Ihr erkennen, was da noch übrig bleibt?

Eine weitere IPv6-Adresse im privaten Netz in Debian hinzufügen

IPv6-Adressen werden in der Regel automatisch erstellt. Grundsätzlich sollte das erst mal auch so erfolgen, damit sie weltweit genutzt werden können.

Allerdings erhält man so IPv6-Adressen, die sich kein normaler Mensch merken kann. Obwohl die IPv6-Adressen automatisch erstellt werden, ist es möglich, einem Gerät weitere IPv6-Adressen zuzuteilen, Adressen stehen in Fülle zur Verfügung.

Um einem Gerät eine weitere IPv6-Adresse zuteilen zu können, ist es wichtig, dass man den Präfix (fest) und den Suffix (eigener Anteil) erkennt.

Um IPv6-Adressen für das private Netz des Gerätes zu ermitteln, kann man folgende Anweisung nutzen:

ip addr | grep "inet6 fd"

Als Beispiel erhält man folgende Ausgabe:

  inet6 fd21:ba00:fe78:4200:e6aa:ea12:fe04:a257/64 scope global dynamic noprefixroute

Man erkennt die IPv6-Adresse im privaten Netz und weitere Infos, die ich eigentlich nicht erklären wollte. Na gut, weil Du es bist:

Für uns ist es wichtig, dass wir den Präfix und den Suffix erkennen.

Der Präfix lautet in diesem Beispiel: fd21:ba00:fe78:4200
Dieser Präfix kann nur im Router verändert werden. Bei den Speedport-Routern der Telekom habe ich bisher keine Möglichkeit gefunden, diesen Präfix ändern zu können.
Wird dieser Präfix im Router verändert, müssen sich alle privaten Geräte neu mit dem Router verbinden, sie erhalten neue IPv6-Adressen für das private Netz mit dem neuen Präfix.

Der Suffix lautet in diesem Beispiel: e6aa:ea12:fe04:a257
Mit diesem Wert können wir spielen.

Also: Präfix vom Router, Suffix von mir. Auf dieser Grundlage kann man einem Gerät weitere IPv6-Adressen zuteilen.

Für mein Gerät hätte ich gern den Suffix 0000:0000:0000:0012.
Somit lautet die neue IPv6-Adresse im privaten Netz in diesem Beispiel:

fd21:ba00:fe78:4200::12

Die neue Adresse muss dem System hinzugefügt werden. Dazu gibt es Tools auf der grafischen Oberfläche. Unter IPv6-Einstellungen kann man das realisieren. Auf der Konsole geht das auch mit

sudo nmtui

Möchte man diese Adresse auf dauerhaft konstant setzen, sollte man folgendes eintragen:

fd21:ba00:fe78:4200::12/128

Nach Eingabe der neuen Adresse muss der Netzwerkdienst oder das Gerät neu gestartet werden. Danach ist das Gerät mit der neuen IPv6-Adresse erreichbar.

Einmalig eine IPv6-Adresse für das private Netz hinzufügen

Für das zu tun, kann man das Programm ifconfig aus dem Packet net-tools nutzen.

Natürlich brauchen wir wieder den konstanten Präfix und den gewünschten Suffix.

Man benötigt auch das Device, die Netzwerkschnittstelle. Für Kabelverbindungen lauten die in der Regel eth0 oder enp2s0. Bei WLan-Verbindungen lauten diese wlan0 oder wlpls0. Um das herauszufinden, kann man folgende Anweisung nutzen:

ip addr

Hat man das entsprechende Device gefunden, lautet die Anweisung in diesem Beispiel:

sudo ifconfig DEVICE add fd21:ba00:fe78:4200::12

Eine globale IPv6-Adresse hinzufügen

Das Verfahren dafür ist analog. Man benötigt den konstanten Präfix und den gewünschten Suffix.

Der Präfix beginnt für Internetverbindungen derzeit immer mit 2, das ist von der IANA festgelegt.

Um den Präfix zu ermitteln, sollte man nicht im Router nachsehen sondern am Gerät selbst. Oft bekommen Router einen weiteren Präfix, der am Gerät selbst nicht funktioniert.

Es muss immer bewusst sein, dass der ISP (Internet-Service-Provider) den Präfix jederzeit ändern kann. Beim Neustart des Routers gibt es sowieso einen neuen Präfix.

Deshalb kann das Anlegen einer weiteren IPv6-Adresse weltweit nicht konstant (also nicht mit nmtui) erfolgen. Das funktioniert nur temporär (mit ifconfig).

Wir brauchen den zugeteilten Präfix also die ersten 4 Blöcke einer globalen IPv6-Adresse:

ip addr | grep "inet6 2"

Als Beispiel nutze ich 2003:c7:4921:368a.

Als Suffix wollen wir wieder ::12 haben. Somit lautet die Anweisung als Beispiel:

sudo ifconfig DEVICE add 2003:c7:4921:368a::12

Inhalt

Port

Kommen wir nun zu den Zimmernummern im großen Haus.

Um eine Netzwerkverbindung zu einem Gerät herstellen zu können, benötigt das Gerät eine IP-Adresse (Postanschrift).

Auf dem Gerät können aber viele Dienste laufen, die mit dem Netzwerk kommunizieren.

Wie kommt nun aber die Netzwerkanfrage beim richtigen Dienst an? Über die Zimmernummer, dem Port.

Jede Netzwerkanfrage wird zu einer IP-Adresse über einen Port gesendet.

Der Port hat eine Größe von 16 Bits. Beispiel:

0000 0001 1011 1011

Damit wir besser mit diesen Bits umgehen können, werden diese zu einer Dezimahlzahl zusammengefasst. In diesem Beispiel:

443

Das ist also der Port, auf dem ein Webserver auf eine HTTPS-Verbindung lauscht.

Aus den 16 Bits ergebnen sich mögliche Werte von 0 bis 65535.

Man könnte also theoretisch 65536 Netzwerkdienste auf einem Gerät laufen lassen?

Nein.

Einige Ports sind fest dem System vergeben. Also kann man diese nicht nutzen. Das sind aber nur wenige.

Was ist denn, wenn wir dem Gerät eine zweite IP-Adresse zuweisen und somit noch einmal ein großes Haus bauen?

Netzwerkdienste lassen sich in der Regel IP-Adressen zuordnen. Ups, da sind es ja 131072 Möglichkeiten für Netzwerkdienste.

Transportprotokolle

Die derzeit gängigsten Varianten sind TCP und UDP. Ich gehe hier nicht näher darauf ein.

TCP wird mehr genutzt. Port 12345 ist als Beispiel vergeben.

Für UDP ist der Port 12345 aber verfügbar.

Somit erhöht sich durch den Einsatz von verschieden Protokollen die Anzahl an möglichen Netzwerkdiensten pro Gerät.


Besonderheit bei TCP

Eine TCP-Verbindung benötigt 2 Ports. Sie ermöglichen Duplex-Verbindungen, wo das Senden und Empfangen von Daten gleichzeitig erfolgen kann.

Die Anfrage des Clients zum Server wird auf dem festgelegten Port durchgeführt. Danach wird ein Antwort-Port, der sich im Bereich 49152 bis 65565 befindet, ausgehandelt, da dieser Port auf beiden Geräten frei sein muss.

Somit können beide Geräte, wenn es die Software kann, gleichzeitig Daten senden und empfangen.

Nach dem Beenden der TCP-Verbindung steht der Antwort-Port wieder zur freien Verfügung.

Portbereiche

Damit Donald Trump oder ich nicht mal wieder das Internet durcheinander bringen, wurden von der IANA Portbereiche festgelegt.

BereichVerwendungszweck
0 bis 1023

Systemports

Dieser Bereich ist für Systemprogramme vorgesehen.

Einige Beispiele für TCP-Verbindungen sind:

  • Port 22: SSH-Verbindungen
  • Port 25, 465, 587: Mail-MTAs
  • Port 80: Webserver HTTP-Verbindungen
  • Port 443: Webserver HTTPS-Verbindungen

Um Ports aus diesem Bereich nutzen zu können, sind Root-Rechte (Administratorrechte) erforderlich.

1024 bis 49151

Registrierte Ports

So wirklich registriert ist hier nicht alles.

Auf diesen Ports befinden sich Netzwerkdienste, die eigentlich speziell auf Anwendungen ausgelegt sind.

Viele dieser Ports werden inoffiziell von Anwendungen genutzt. So gibt es hier keine absolute Ordnung. Werden mehrere Anwendungen gleichzeitig genutzt, können diese miteinander kollodieren.

Um diesen Portbereich zu nutzen, sind keine Root-Rechte erforderlich.

49152 bis 65535

Dynamische Ports

Hier kann man seine eigene (private) Software unterbringen.

Dieser Bereich wird für den Antwort-Port von TCP verwendet, Sichwort Duplex.

Linux-Entwickler halten diesen Bereich für zu klein und schlugen vor, diesen Bereich schon bei Port 32000 beginnen zu lassen. Die daraus entstandenen Disskusionen sind im Ergebnis bis derzeit ins Leere gelaufen.

Eine halbwegs komplette Portliste findet Ihr auf de.wikipedia.org

Inhalt