Unix Socket - Ports und Dienste

Wenn ein Client-Prozess eine Verbindung zu einem Server herstellen möchte, muss der Client eine Möglichkeit haben, den Server zu identifizieren, zu dem eine Verbindung hergestellt werden soll. Wenn der Client die 32-Bit-Internetadresse des Hosts kennt, auf dem sich der Server befindet, kann er diesen Host kontaktieren. Aber wie identifiziert der Client den bestimmten Serverprozess, der auf diesem Host ausgeführt wird?

Um das Problem der Identifizierung eines bestimmten Serverprozesses zu lösen, der auf einem Host ausgeführt wird, haben sowohl TCP als auch UDP eine Gruppe bekannter Ports definiert.

Für unseren Zweck wird ein Port als eine Ganzzahl zwischen 1024 und 65535 definiert. Dies liegt daran, dass alle Portnummern, die kleiner als 1024 sind, als bekannt gelten. Beispielsweise verwendet Telnet Port 23, http verwendet 80, ftp verwendet 21, und so weiter.

Die Portzuweisungen für Netzwerkdienste finden Sie in der Datei / etc / services. Wenn Sie Ihren eigenen Server schreiben, muss darauf geachtet werden, Ihrem Server einen Port zuzuweisen. Sie sollten sicherstellen, dass dieser Port keinem anderen Server zugewiesen wird.

Normalerweise ist es üblich, eine Portnummer von mehr als 5000 zuzuweisen. Es gibt jedoch viele Organisationen, die Server mit Portnummern von mehr als 5000 geschrieben haben. Beispielsweise läuft Yahoo Messenger auf 5050, SIP Server auf 5060 usw.

Beispiel für Ports und Dienste

Hier ist eine kleine Liste von Diensten und zugehörigen Ports. Die aktuellste Liste der Internet-Ports und des zugehörigen Dienstes finden Sie unter IANA - TCP / IP-Portzuweisungen .

Service Port Number Service Description
Echo 7 UDP / TCP sendet zurück, was es empfängt.
verwerfen 9 UDP / TCP wirft Eingaben weg.
tagsüber 13 UDP / TCP gibt die ASCII-Zeit zurück.
chargen 19 UDP / TCP gibt Zeichen zurück.
ftp 21 TCP-Dateiübertragung.
Telnet 23 TCP-Remote-Anmeldung.
smtp 25 TCP-E-Mail.
tagsüber 37 UDP / TCP gibt die Binärzeit zurück.
tftp 69 UDP triviale Dateiübertragung.
Finger 79 TCP-Informationen zu Benutzern.
http 80 TCP World Wide Web.
Anmeldung 513 TCP-Remote-Anmeldung.
Wer 513 UDP verschiedene Informationen zu Benutzern.
Xserver 6000 TCP X-Fenster (NB> 1023).

Port- und Servicefunktionen

Unix bietet die folgenden Funktionen zum Abrufen des Dienstnamens aus der Datei / etc / services.

  • struct servent *getservbyname(char *name, char *proto) - Dieser Aufruf verwendet den Dienstnamen und den Protokollnamen und gibt die entsprechende Portnummer für diesen Dienst zurück.

  • struct servent *getservbyport(int port, char *proto) - Dieser Aufruf übernimmt die Portnummer und den Protokollnamen und gibt den entsprechenden Dienstnamen zurück.

Der Rückgabewert für jede Funktion ist ein Zeiger auf eine Struktur mit der folgenden Form:

struct servent {
   char  *s_name;
   char  **s_aliases;
   int   s_port;
   char  *s_proto;
};

Hier ist die Beschreibung der Mitgliedsfelder -

Attribut Werte Beschreibung
s_name http Es ist der offizielle Name des Dienstes. Zum Beispiel SMTP, FTP POP3 usw.
s_aliases ALIAS Es enthält die Liste der Service-Aliase. Meistens wird es auf NULL gesetzt.
Sport 80 Es wird die zugehörige Portnummer haben. Für HTTP sind es beispielsweise 80.
s_proto

TCP

UDP

Es wird auf das verwendete Protokoll eingestellt. Internetdienste werden entweder über TCP oder UDP bereitgestellt.