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