Zum Inhalt springen
  • 0

Ports, Ports, Ports


Ricchie

Frage

 

Hallo,

1. also ich habe das mit den Ports immer noch nicht so ganz verstanden. Wenn ich meinen Browser öffne, dann verbinde ich mich mit dem Port 80 (http) des Servers und schicke eine von meinem Betriebsystem gewählten Port im Header eines Datenpakets an den Server. Dieser Port ist aus dem Bereich der dynamischen Ports (49 152 bis 65 535). Der Server liefert dann die Seite an den dynamischen Port, den mein Betriebsystem ja ausgewählt hat, zurück an mein Betriebsystem. Wenn ich mehrere Downloads mache, wird von meinem Browser jedesmal ein neuer dynamischer Port an den Server mitgeteilt über den der gleiche Server mehrere verschiedene Downloads gleichzeitig ausliefert. Die unterschiedlichen dynamischen Ports gibt es nur deshalb damit die Downloads nicht durcheinander gehen. Ist das alles richtig so? Oder ist da irgendein Fehler drin?

2. Und was passiert eigentlich, wenn gleichzeitig zwei Server an den gleichen Port etwas ausliefern? 

Vielen Dank für Antworten

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

8 Antworten auf diese Frage

Empfohlene Beiträge

  • 0
vor 2 Stunden schrieb Ricchie:

[...] Ports gibt es [...] deshalb damit die Downloads nicht durcheinander gehen. [...]

Grob gesehen: Ja.

vor 2 Stunden schrieb Ricchie:

Und was passiert eigentlich, wenn gleichzeitig zwei Server an den gleichen Port etwas ausliefern?

Wenn die anfragende IP dabei die selbe ist... ist das initiierende System kaputt. Denn: Für jede Anfrage wird jeweils ein Port neu vergeben... und bereits genutzte nicht erneut, bis sie "wieder frei" sind.

 

Nachtrag, muss es wohl präziser ausdrücken:

Wenn irgendein *nicht angefragter* Server zufällig genau diesen Port anspricht, wird "diese Antwort" ignoriert... sonst hätten "Hacker" leichtes Spiel. ;)

Bearbeitet von Dr. Octagon
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Grob gesagt ist das richtig was Dr. Octagon schreibt. Was aber bei einem Aufruf von externen Seiten noch mit rein Spielt ist das Natting von deinem Router. Dort wird der Source Port noch mal geändert da das Paket ja nicht direkt von deinem Client gesendet wird, sondern deine interne IP noch mal auf die externe deines Routers genattet wird. Den originalen Source Port findest du dann in der Nat-Tabelle deines Routers. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 2 Stunden schrieb DPR:

Grob gesagt ist das richtig was Dr. Octagon schreibt. Was aber bei einem Aufruf von externen Seiten noch mit rein Spielt ist das Natting von deinem Router. Dort wird der Source Port noch mal geändert da das Paket ja nicht direkt von deinem Client gesendet wird, sondern deine interne IP noch mal auf die externe deines Routers genattet wird. Den originalen Source Port findest du dann in der Nat-Tabelle deines Routers. 

 

NAT übersetzt genau wie bei den IPv4-Adresse auch meine lokale Portnummer in eine andere öffentliche Portnummer? Eigentlich ist das doch Mehraufwand. Man könnte einfach die lokale Portnummer der lokalen IP auch an die öffentliche IP anfügen, oder? Dann bräuchte man keine ÜbersetzungsTabelle für die Ports. Oder denke ich da irgendwie falsch?

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 39 Minuten schrieb Ricchie:

NAT übersetzt genau wie bei den IPv4-Adresse auch meine lokale Portnummer in eine andere öffentliche Portnummer? Eigentlich ist das doch Mehraufwand. Man könnte einfach die lokale Portnummer der lokalen IP auch an die öffentliche IP anfügen, oder? Dann bräuchte man keine ÜbersetzungsTabelle für die Ports. Oder denke ich da irgendwie falsch?

Du hast aber auch mehrere Geräte im Netz. Wenn zufällig Client 1 den gleichen Source Port bei der Verbindung benutzt wie Client 2, kann der Router die Pakete bei einer Antwort nicht mehr richtig zuteilen. 
Vereinfachtes Beispiel:

Client 1: Source-Port: 1234 Dest-Port: 80 ->Ziel-IP 5.5.5.5

Client 2: Source-Port 1234 Dest-Port: 80 ->Ziel-IP 6.6.6.6

Der Router übersetzt nun die outgoing Paktete auf seine externe IP: 1.1.1.1 . Gehen wir davon aus dass er die originalen Ports nutzt. 

Die Antwort von 6.6.6.6 geht an den Router mit dem Dest-Port: 1234. 

Jetzt weiß der Router nicht ob er es an Client 1 oder 2 schicken soll. 

 

Es gibt aber eine zweite Variante des Hide-Nats wo genau das was du sagst der Fall ist. 

Der Router hat dann aber einen Mechanismus um die Verbindung zuzuordnen und er ändert dann bei zum Beispiel Client 2 den Source Port da er den gleichen wie Client 1 benutzt. Das hängt dann von der Implementierung der Variante ab. 

Edit: Cisco Router zum Beispiel übersetzen Source-Ports nur dann wenn die Eindeutigkeit nicht klar wäre :)

 

Bearbeitet von DPR
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
Am 3.8.2023 um 23:09 schrieb DPR:

Hier habe ich dir das mal dargestellt, dann ist das anschaulicher :)

Nat Varianten.pdf 187.73 kB · 23 Downloads

Das ist ja super interessant. Also Cisco-Router (und manche anderen sicher auch) ändern den Port, falls er lokal gedoppelt ist (Variante 2) oder die Ports werden einfach hochgezählt oder jedenfalls systematisch neu verteilt, damit man nicht durcheinander kommt (Variante 1). Vielen Dank für die Information.

Noch eine andere Frage: In der etc/services-Datei stehen ja die Ports. Könnte ich die einfach ändern, also zum Beispiel Port :80  auf Port:49 160, also in den Bereich der temporären Ports? Dann müsste der Server, den ich per IPv4-Adresse erreiche, natürlich auch von :80 auf Port :49 160 geändert werden. Dann wäre doch alles genauso wie vorher, oder? 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

In der /etc/services Datei stehen alle Standard Ports. Du änderst das dann global für alles was du erreichen möchtest.

Warum würdest du das machen wollen? Wenn du als Client einen Service über einen bestimmten Port zugreifst, kannst du doch besser den beim Zugriff explizit angeben. Beispiel: Dein SSH Service deiner Maschine (Server) läuft anstatt auf Port 22 auf Port 2202. 

Wenn du die services Datei bei ssh auf Port 2202 änderst wird jeder andere Server den du per ssh erreichen willst auch auf 2202 versuchen die Verbindung aufzubauen. 

Du kannst aber bei ssh den Port einfach beim Aufbau der Verbindung angeben: 

ssh USER@IP -p PORT

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...