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. |