Begriff
Port (Network)
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Eine IP-Adresse ist wie eine Hausnummer ("Hauptstraße 5"). Aber wer wohnt da? Hinter der Tür wohnen 65.535 Familien. Jede hat eine eigene Klingel (Port).
- Port 80: Familie Webserver (HTTP).
- Port 443: Familie Sicherer Webserver (HTTPS).
- Port 22: Familie Admin (SSH). Wenn ein Paket ankommt, schaut das Betriebssystem auf die Port-Nummer und weiß: "Ah, das ist für den Firefox (Port 53122) und das ist für den Webserver (Port 80)." Ohne Ports könnte ein Computer nur ein Programm gleichzeitig im Netzwerk laufen lassen.
Merksatz: Ein 16-Bit-Adressierungselement im Transport Layer (TCP/UDP), das Datenpakete einem spezifischen Anwendungsprozess oder Dienst auf einem Host zuweist.
Wenn du eine URL eingibst: google.com, ergänzt der Browser automatisch :443.
Wenn du Minecraft spielst, musst du oft den Port wissen: :25565.
In der Firewall ("Windows Defender" oder Router) musst du Ports freigeben (Open Port).
Sonst kommen Pakete an der Haustür an, aber die Klingel ist abgeklemmt (Drop).
1. IANA Ranges
Ports sind in 3 Bereiche geteilt:
- System Ports (0-1023): "Well Known". Brauchen Root-Rechte zum Starten (
bind). HTTP (80), SSH (22). - User Ports (1024-49151): "Registered". Datenbanken (3306 MySQL, 5432 Postgres). Darf jeder User nutzen.
- Dynamic / Ephemeral Ports (49152-65535): Für ausgehende Verbindungen. Wenn dein Browser Google aufruft, öffnet er lokal Port 50312 (zufällig), damit Google weiß, wohin die Antwort soll.
2. Socket Binding (0.0.0.0 vs 127.0.0.1)
Ein häufiger Fehler: "Ich habe den Server gestartet, aber niemand erreicht ihn."
Die App lauscht auf 127.0.0.1:8080 (Localhost).
Das heißt: Nur der Server selbst kann klingeln.
Die Firewall lässt externe Pakete durch, aber die App nimmt sie nicht an (falsches Interface).
Du musst auf 0.0.0.0:8080 (All Interfaces) binden, damit Traffic von außen ("eth0") akzeptiert wird.
3. Port Exhaustion
Ein Server kann nur 65.000 ausgehende TCP-Verbindungen zu einem Ziel haben (begrenzt durch Quell-Port).
Bei Load Balancern oder NAT Gateways ist das ein Limit.
"Zu viele User gleichzeitig? NAT Table voll? Keine freien Ports mehr."
Lösung: Mehrere IPs nutzen oder SO_REUSEPORT (Socket Sharing) im Kernel aktivieren.
1. Sockets (The 5-Tuple)
Wie trennt der Kernel zwei Web-Verbindungen, die beide auf Port 443 vom selben Nginx-Server landen?
Entscheidend ist niemals nur der Ziel-Port. Das Betriebssystem (TCP/IP Stack) identifiziert Verbindungen anhand eines Sockets (dem 5-Tuple): Quell-IP, Quell-Port, Ziel-IP, Ziel-Port, Protokoll (TCP/UDP).
Zwei Besucher deines Webservers (12.0.0.1 und 13.0.0.1) haben unterschiedliche Quell-IPs. Selbst wenn ein Besucher zwei Tabs öffnet, wählt sein Browser zwei zufällige, unterschiedliche Quell-Ports (z.B. 51222 und 51223). Nginx lauscht auf Port 443 (Listening Socket), das OS generiert aus dem Tuple aber pro Verbindung einen einzigartigen Connected Socket (File Descriptor), worüber der Traffic kollisionsfrei dem Nginx-Worker zugewiesen wird.
2. Port Forwarding (Destination NAT) / PAT
Dein Webserver steht zu Hause. Die öffentliche Router-IP ist 88.1.2.3. Der Server hat die interne IP 192.168.1.100.
Niemand aus dem Internet kann Pakete an 192.168.1.100 routen (private Range).
Du trägst im Router Port Forwarding (DNAT) ein.
Das Paket kommt von außen auf 88.1.2.3:80 an. Der Router greift tief ins L3/L4-Paket (NAT Table), überschreibt die Ziel-IP auf 192.168.1.100, überschreibt den Ziel-Port (oft auf den exakt selben, Port 80) und drückt das Paket ins Heimnetz. Eine Abwandlung ist PAT (Port Address Translation), bei der z.B. extern Port 8080 ankommt, innen aber auf Port 80 gewandelt (übersetzt) wird.
3. UDP Punching und STUN
Ports bei UDP (z.B. Video-Chats wie Discord) sind knifflig, da UDP verbindungslos ist. NAT-Firewalls blocken eintreffende UDP-Pakete aus dem Internet radikal, es sei denn, man hat den Port von innen gerade kurz zuvor nach draußen geöffnet. Damit zwei Spieler (beide hinter strengen NAT-Routern) direkt reden können, nutzen sie UDP Hole Punching (STUN-Server). Spieler A funkt kurz einen STUN-Server an. Dadurch reißt Router A kurz ein Loch/Port im NAT auf und der STUN-Server erkennt Router A's öffentliche Adresse. Der STUN teilt Spieler B mit: "A ist dort auf Port X". Schießt B nun ein Paket in genau diese IP:Port-Kombination, lässt Router A das Paket durch die bereits gestochene NAT-State-Tabelle passieren (P2P Mesh).
Quick-Check
TCP vs UDP Ports?
Port 80 TCP ist eine andere Klingel als Port 80 UDP. Sie sind unabhängig. DNS nutzt Port 53 auf TCP und UDP.Was ist Port Knocking?
Ein Sicherheits-Trick. Alle Ports sind zu. Du musst in einer bestimmten Reihenfolge klopfen (Ping an Port 100, dann 200, dann 300). Erst dann öffnet die Firewall Port 22 für deine IP. "Geheimcode an der Tür".Warum "Privileged Ports"?
Historisches Relikt. Früher (Unix) vertraute man darauf: "Wenn die Verbindung von Port < 1024 kommt, ist es der Admin (Root)." Heute ist das sinnlos, weil jeder seinen eigenen root-Server hat, aber die Sperre im Kernel bleibt.