[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[OT] Auswahl von Portnummern



Hallo Leute,

ich möchte hier einen Abstecher in die Netzwerktechnik unternehmen.

TCP oder UDP Ports können im Zahlenbereich von 0 - 65535 (in Hex 0x0000 - 0xFFFF) Nummeriert werden.

Dieser Zahlenbereich ist in 3 Abschnitte gegliedert:

1. Ports 0 - 1023: Well known Ports. Hier laufen die bekanntesten Dienste. Auf *nix Systemen braucht man Root rechte um einen Port in diesem Abschnitt zu öffnen. 2. Ports 1024 - 49151: Registered Ports. Einige Ports in diesem Abschnitt sind für bekannte Dienste reserviert, es gibt auch größere unbelegte Abschnitte. Neue Applikationen suchen sich in der Regel ihren Standardport in diesem Bereich.

3. Ports 49152 - 65535: Private / Dynamic Ports. Diese können variabel genutzt werden.


Die Reservierung von Portnummern für Dienste (in den ersten beiden Abschnitten) wurde früher von der IANA übernommen, Heute von der ICANN. Diese Zuweisungen sind nicht bindend, sondern Vorschläge, damit der Netzwerkverkehr übersichtlich bleibt.
Siehe http://www.iana.org/assignments/port-numbers

Nun eine Frage meinerseits:
Wie wählt das Betriebsystem die Portnummern für ausgehende Verbindungen aus? Nehmen wir das Beispiel, daß ich mich mit dem Windows Rechner W auf dem Debian Rechner D via SSH auf zielport 22 einlogge. Es wird also eine TCP Verbindung von W nach D zu Port 22 aufgebaut. Doch auch auf dem Rechner W muss ein Port für die Verbindung ausgewählt werden. Ist eine TCP Verbindung zwischen zwei Ports einmal hergestellt, spielt es keine Rolle mehr, wer sie aufgebaut hat. Nach welchen Kriterien geschieht die Auswahl des ausgehenden Ports? Ich habe einmal gelesen: "Private / Dynamic Ports: Benötigt ein Prozess einen Port, wird er vom Betriebsystem aus diesem Bereich zugewiesen...". Das konnte ich in der Praxis kein einziges Mal beobachten. Auf dem Rechner W zeigt mir ein netstat -n
 TCP    10.0.0.2:1123          10.0.0.1:22            HERGESTELLT.
 TCP    10.0.0.2:1101          10.0.0.1:139           HERGESTELLT
an, daß das OS (hier Windows mit der 10.0.0.2) die lokalen TCP Ports 1123 für die SSH verbindung, und den Port 1101 für die Netbios Verbindung ausgesucht hat. Dies geschieht dynamisch, ich kann lediglich beobachten, daß Windows den Bereich 11xx 'gern' für ausgehende Verbindungen verwendet, sich aber nicht darauf beschränkt.

Auch der Rechner D (hier mit der 10.0.0.1) hat TCP Verbindungen zum Rechner W aufgebaut. Ein netstat -n | grep 10.0.0.2 zeigt mir unter Anderem tcp 0 0 10.0.0.1:36253 10.0.0.2:445 ESTABLISHED , daß Debian für die SMB Verbindung den Port 36253 ausgesucht hat. Ich kann beobachten, daß Debian die Ports 36xxx 'bevorzugt' für ausgehende Verbindungen verwendet, sich aber nicht darauf beschränkt.

Nach welchen Regeln werden denn nun die Ausgehenden Ports ausgesucht? Bzw. wie werden Konflikte mit neuen Anwendungen vermieden?

Vermutung a) Die Betriebsysteme haben intern eine Liste der im Abschnitt 1. und 2. zugewiesenen Ports und meiden diese. Wenn die ICANN eine neue Zuweisung vergibt muss jedes OS diese Liste updaten. (Klingt unwahrscheinlich).

Vermutung b) Die verschiedenen OS halten sich an interne Verfahrensregeln. Die ICANN kennt diese Verfahrensregeln und achtet bei der Vergabe neuer Ports darauf, daß es keine Konflikte gibt. (Klingt realistischer, aber ich kann keinen handfesten Beweis dafür finden).

Wer hat Lust mit mir gemeinsam dieses Mysterium fernab jeglicher Vermutungen genau zu klären?



Meine Motivation für die ganze Fragestellung rührt daher, daß ich nicht weiß welche Ports ich für eigene, kleine Anwendungen verwenden soll. Ich habe für meine eigenen Anwendungen Ports im Bereich 47001-47500 verwendet, da diese laut IANA Portliste unbelegt sind. Es ist nun aber einmal geschehen, daß meine Debian Maschine eben einen solchen 47xxx Port für ausgehende Verbindungen verwendet hatte, und meine eigene Applikation natürlich nicht mehr lief da der Port belegt war. Sollte ich für eigene Applikationen Ports im Private/Dynamic Bereich wählen? Ich kann zu diesem 3. Portbereich überhautp kaum informatives Material finden. Bin auch für Links dankbar.

Beste Grüße an alle interessierten Netzwerker,

Thomas




Reply to: