Christian Seiler: Bezeichnungen und Fachtermini

Beitrag lesen

Hallo Tom,

Ein Port wird als "offen" bezeichnit, wenn ihm ein empfangsbereiteer Handler zugeordnet ist.

Jetzt wirf doch bitte nicht weitere Terminologie in den Raum, die bereits für andere Dinge verwendet wird. Du meinst zwar das richtige, aber es gibt im Bereich TCP/IP schlichtweg keinen Begriff "Handler" - dafür jedoch in anderen Gebieten, die nichts mit TCP/IP zu tun haben, was dann wieder nur totale Verwirrung stiftet.

Wenn Du's formalistisch ganz korrekt haben willst:

Ein Port wird als "offen" bezeichnet, wenn ein Socket, das vorher an den Port gebunden wurde, in den Listen-Modus versetzt wurde.

Oder, wenn Du's lieber einfach - dafür aber ohne Terminologieverirrungen haben willst:

Ein Port wird als "offen" bezeichnet, wenn ein Programm hinter ihm auf Anfragen lauscht.

Aber das klärt immer noch nicht die Frage, wie man einen Port nennt, der (wie Du es nennst) einfach nur an der Kommunikation teil nimmt.

Man gibt ihm gar keinen Namen. Der Port ist wie gesagt eine schlichte Nummer, NICHT MEHR, NICHT WENIGER. Es ist möglich (und wird bei aktivem FTP zum Beispiel auch so eingesetzt), dass von dem SELBEN Port auf der CLIENT-Seite aus multiple Verbindungen initiiert werden - solange es unterschiedliche Ziele sind, kann der Kernel sie eindeutig zuordnen.

Rufe doch bitte mal das Programm netstat auf (gibt's sowohl unter Linux als auch unter Windows, wenn auch die Parameter etwas anders sind). Dort wird Dir eine Tabelle mit Verbindungen angezeigt, die Dein Kernel gerade kennt. Kommt nun ein Paket an, wird geschaut, ob es zu irgend einer Verbindung passt. Sollte dies der Fall sein, sucht sich der Kernel das zugehörige Programm und dort das zugehörige Socket und speichert die neuen Daten im Puffer des Sockets, damit das Programm beim nächsten Aufruf einer Socketfunktion diese Daten abfragen kann. Es gibt schlichtweg keine Tabelle "Port X ist in Zustand Y", nur eine Tabelle mit Verbindungen (und den zugehörigen Programmen). Und wenn ein Programm sich an einen Port bindet und den dann in den Listen-Modus versetzt, dann wird das auch in die Verbindungstabelle geschrieben (netstat zeigt's per Default nur nicht an, nimm -l als Parameter unter Linux, unter Windows weiß ich's nicht) - halt nur mit einer speziellen Kennzeichnung - dann ordnet der Kernel Verbindungsaufbaupakete genauso zu.

Dass man Ports im Sprachgebrauch (!) überhaupt einen Zustand "offen" / "geschlossen" gibt hat praktische Gründe - denn diese Information ist relevant (lauscht hinter diesem Port überhaupt ein Dienst oder nicht?) - aber ob von einem Port jetzt nun eine Verbindung ausgeht oder von einem anderen (die werden ja sowieso zufällig zugewiesen, wenn das Programm nicht explizit einen bestimmten Port will), ist vollkommen irrelevant.

Man spricht hier von "Port", meint doch aber eigentlich den Status des zugeordneten Programmes.

DU sprichst hier von Port, nicht MAN.

(Der eigentliche Port auf Hardwareebene hat damit ja nur indirekt zu tun, oder?)

Herrjemine. Nur, weil "port" der englische Begriff für "Hafen" ist gehst Du doch auch nicht davon aus, dass ein Hafen mit einem TCP-Port auch nur im entferntesten etwas zu tun hat? (Von irgendwelcher Symbolik, die die Etymologie inspiriert haben könnte, mal abgesehen.)

Viele Grüße,
Christian