Unix Socket - Ports et services

Lorsqu'un processus client souhaite connecter un serveur, le client doit disposer d'un moyen d'identifier le serveur auquel il souhaite se connecter. Si le client connaît l'adresse Internet 32 ​​bits de l'hôte sur lequel réside le serveur, il peut contacter cet hôte. Mais comment le client identifie-t-il le processus serveur particulier en cours d'exécution sur cet hôte?

Pour résoudre le problème d'identification d'un processus serveur particulier s'exécutant sur un hôte, TCP et UDP ont défini un groupe de ports bien connus.

Pour notre propos, un port sera défini comme un nombre entier compris entre 1024 et 65535. En effet, tous les numéros de port inférieurs à 1024 sont considérés comme connus - par exemple, telnet utilise le port 23, http utilise 80, ftp utilise 21, etc.

Les affectations de port aux services réseau se trouvent dans le fichier / etc / services. Si vous écrivez votre propre serveur, vous devez prendre soin d'attribuer un port à votre serveur. Vous devez vous assurer que ce port ne doit être attribué à aucun autre serveur.

Normalement, il est courant d'attribuer un numéro de port supérieur à 5000. Mais il existe de nombreuses organisations qui ont écrit des serveurs ayant des numéros de port supérieurs à 5000. Par exemple, Yahoo Messenger fonctionne sur 5050, SIP Server sur 5060, etc.

Exemples de ports et de services

Voici une petite liste de services et de ports associés. Vous pouvez trouver la liste la plus à jour des ports Internet et des services associés sur IANA - Affectations de ports TCP / IP .

Service Port Number Service Description
écho sept UDP / TCP renvoie ce qu'il reçoit.
Jeter 9 UDP / TCP jette l'entrée.
jour 13 UDP / TCP renvoie l'heure ASCII.
charger 19 UDP / TCP renvoie des caractères.
ftp 21 Transfert de fichiers TCP.
telnet 23 Connexion à distance TCP.
smtp 25 Courriel TCP.
jour 37 UDP / TCP renvoie l'heure binaire.
tftp 69 Transfert de fichiers trivial UDP.
doigt 79 Informations TCP sur les utilisateurs.
http 80 TCP World Wide Web.
s'identifier 513 Connexion à distance TCP.
qui 513 UDP informations différentes sur les utilisateurs.
Xserver 6000 Fenêtres TCP X (NB> 1023).

Fonctions de port et de service

Unix fournit les fonctions suivantes pour récupérer le nom du service dans le fichier / etc / services.

  • struct servent *getservbyname(char *name, char *proto) - Cet appel prend le nom du service et le nom du protocole, et renvoie le numéro de port correspondant pour ce service.

  • struct servent *getservbyport(int port, char *proto) - Cet appel prend le numéro de port et le nom du protocole, et renvoie le nom de service correspondant.

La valeur de retour de chaque fonction est un pointeur vers une structure de la forme suivante -

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

Voici la description des champs membres -

Attribut Valeurs La description
Le nom de http C'est le nom officiel du service. Par exemple, SMTP, FTP POP3, etc.
s_aliases ALIAS Il contient la liste des alias de service. La plupart du temps, il sera défini sur NULL.
sport 80 Il aura le numéro de port associé. Par exemple, pour HTTP, ce sera 80.
s_proto

TCP

UDP

Il est défini sur le protocole utilisé. Les services Internet sont fournis en utilisant TCP ou UDP.