Netzwerkanalyse, Fehlersuche, Testberichte
Home / News
Netzwerkanalyse
Grundlagen
Verkabelung
Erste Schritte
Baselining
Let's sniff
Tools
Auswerten/Filtern
Typische Probleme 1
Typische Probleme 2
Sicherheit
Bücher
Tutorials
Cacti
DSL einrichten
DynDNS einrichten
m0n0wall | pfSense
Nmap
VirtualBox
Wireshark
FAQ
Know How
Testberichte
Hardware-DB
Netzwerklexikon
Links / Service
Suche
Kontakt
Impressum
Feedback
Sitemap
Netzwerktechnik Forum

Forum Netzwerktechnik (Archiv)

Kategorie Netzwerktechnik - Forum Netzwerkprotokolle und Dienste

 
Auswahl von Portnummern

geschrieben am 19.11.2006 um 14:31 von periment

Hallo Leute,

ich möchte mich der Frage nach der Auswahl von Portnummern widmen.

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
 

geschrieben am 19.11.2006 um 15:46 von Mirko

Hallo Thomas,
willkommen im Forum. Dein Posting ist ja fast ein kleines Tutorial.

Kennst Du The Ephemeral Port Range schon?

Ich muss jetzt los und melde mich später nochmal.

Mirko
 

geschrieben am 19.11.2006 um 21:09 von periment

Besten Dank für den Link. Das beantwortet schon mal die Frage, wie die Ports auf Win und Lin derzeit ausgewählt werden. Ich bin allerdings ein wenig schockiert, daß derart verschiedene Verfahren im Einsatz sind.
Eine Frage meinerseits bleibt offen: Wie vermeiden die OS Konflikte mit den reservierten Ports? Scheinbar gar nicht. Wenn ich meine netstat Ausgabe mit der IANA Portliste vergleiche, sehe ich, daß gleich eine Reihe reservierter Ports belegt sind. Das bedeutet ja, daß die IANA bzw. ICANN Reservierungen in der Praxis nicht respektiert werden.

Werden Kollisionen wirklich dem Zufall überlassen? Schwer zu glauben, aber im Moment habe ich keine bessere Erklärung.

Und wie finde ich nun 'gute' Ports für meine eignen Applikationen?

Grüße, Thomas
 

geschrieben am 19.11.2006 um 22:44 von periment

Ich sehe für eigene Applikationen also diese Strategien:

- Möglichst hohe Ports wählen und hoffen, daß diese noch nicht besetzt sind, oder
- Sich auf ein OS festlegen und sich ausserhalb der default Ephemeral Port Range des OS aufhalten,
- Dreisterweise freie Ports im Well Known < 1024 Bereich benutzen und hoffen, daß diese nicht in naher Zukunft mit anderen Applikationen kollidieren.


Grüße, Thomas
 

geschrieben am 20.11.2006 um 20:16 von periment

Mich würde sehr interessieren, was andere darüber denken. Welche Ports nehmt ihr für eigene Applikationen?
 

geschrieben am 20.11.2006 um 20:33 von Mirko

"periment" wrote:
Mich würde sehr interessieren, was andere darüber denken. Welche Ports nehmt ihr für eigene Applikationen?


Wenn es nur für den Eigenbedarf ist, würde ich (etwas egoistisch) einen well known port nehmen.

Mirko
 

geschrieben am 06.12.2006 um 00:03 von sarpedon

Hallo Mirko/Periment

Also ich arbeite in einer Firma die IP-TV Systeme herstellt und da funktioniert das meinst auf TCP/IP. Wir selbst haben uns einen dienst gebaut dem man einen Pool von Ports, MCast Adressen definieren kann. Alle anderen Dienste fragen dann nach einem Port/MCast Adresse an und bekommen in der Regel dann auch einen. Wir verwenden nur LINUX.
In der Regel kann nun jeder selbst seinen Port Pool definiere. Wobei wir selbst standardmässig ab 1024 vorgehen.

Ich weiss das dies nicht jeder machen kann aber all unsere Programme verwenden Ports ab 1024. Wir hatten eigentlich noch nie Probleme damit.
@Mirko Höhere Ports zu verwenden ist meist sinnvoll!

mfg Mario
 

[ Dieses Thema im Live-Forum aufrufen ]

Sie befinden sich im Archiv des Forums.
Zum Forum

Archiv erstellt mit phpBB2HTML 0.1 - Foren in statisches HTML umwandeln © 2006 Mirko Kulpa

 

 
© 2004-2023, network lab - we make your net work - Netzwerkforum
aktualisiert am 13.05.2019