Toujours en utilisant notre analogie ordinateur <-> immeuble, voyons maintenant la notion de ports.
En bas d'un immeuble, on peut trouver un certain nombre de commerces, ouverts ou fermés, ou vides. Et dans les étages, on trouvera un certain nombre de fenêtres : certaines ouvertes ou fermées, d'autre avec des habitants entrain de parler avec leurs voisins de l'immeuble d'en face (encore faut il qu'ils aient suffisamment de voix...)
Sur un ordinateur, c'est un peu la même chose. Une machine fonctionnant sur un réseau IP possède 65535 ports de connexion (numérotés de 1 à 65535), équivalents aux magasins et fenêtres de notre immeuble. Tous ces ports sont interchangeables, c'est à dire que chacun peut servir à :
- Émettre des données.
- Recevoir des données.
- Émettre et recevoir des données à tour de rôle.
Lorsqu'un logiciel d'une machine cliente va vouloir accéder aux informations d'une machine serveur, ce logiciel va :
- ouvrir un port (comme un habitant ouvrirait une fenêtre de son immeuble).
- envoyer une requête à la machine serveur, sur le port qui héberge l'information qu'il désire.
- recevoir cette information via le port qu'il avait précédemment ouvert (*).
- refermer son port.
(*) Remarque : Avec certains protocoles particuliers, comme le FTP, l'information demandé arrivera par un 2nd port ouvert sur la machine cliente.
Par contre, en aucun cas un port d'une même machine ne peut être utilisé par deux logiciels différents. Par analogie, on ne peut pas avoir deux habitants utilisant en même temps la même fenêtre pour parler avec ses voisins d'en face.
|
Ports TCP ouverts, fermés, en cours d'utilisation
|
D'une manière générale :
- Les ports dont le numéro est inférieur à 1024 serviront à recevoir des informations. En fait, derrière ces ports se trouverons des logiciels de type serveur (et que l'on appellera par la suite tout simplement "serveur") qui attendrons des requêtes d'autres ordinateurs, afin de fournir une certaine information. Ces ports là sont comme les portes de boutiques dans lesquelles attendent des commerçants. Voici quelques exemples de ports et leur utilisation type :
Numéro du port | Type de service |
21 | FTP : File Transfert Protocol (Échange de fichiers) |
23 | Telnet : Terminal en mode texte |
25 | SMTP : Simple Mail Transfert Protocol (envoi de mails) |
80 | HTTP : HyperText Transfert Protocol (le web, que vous utilisez lorsque vous tapez "http://www...." dans votre navigateur) |
110 | POP3 : Réception de mails |
Cependant, et comme écrit plus haut, n'importe quel port peut abriter un serveur, y compris ceux supérieur à 1024. Ainsi sur une machine Linux/Unix, les ports 6000 et au-delà servent au serveur graphique X11.
De même, ce n'est pas parce qu'un port est actif sur une machine servant de serveur que forcément celui-ci sert à un usage précis. On peut en effet très bien déclarer sur une machine un serveur logiciel HTTP sur le port 21, au lieu du 80. Simplement, il faudra que le logiciel qui se connecte sur cette machine sache que, si il veut avoir du HTTP, il doit contacter le port 21, et non le port 80.
Pour résumer : Il y a des règles dans la déclaration des ports utilisés par les serveurs logiciels, mais celles-ci peuvent être ignorées.
- Les ports compris entre 32768 et 61000 sont généralement utilisés par les logiciels clients pour dialoguer avec les ports serveurs d'une autre machine.
- Les autres ports peuvent servir à n'importe quel usage (serveur ou client)...
Une erreur qui est communément faite à propos des ports, est de penser qu'un logiciel client doit utiliser un port symétrique par rapport au serveur qu'il contacte. Par exemple on peut penser qu'un navigateur web (HTTP donc) doit ouvrir son propre port 80 pour accéder au serveur web d'une machine distante (toujours sur le port 80). Comme vu précédemment, ceci est complètement faux ! En effet, pour se connecter au port 80 du serveur, le client peut ouvrir un autre port, par exemple le 32768. Et il recevra la page HTML qu'il a demandé sur ce même port.
En fait, c'est très logique car :
- Le logiciel client pourrait fort bien vouloir accéder à un logiciel serveur qui se trouve sur la même machine. Et dans ce cas là, le port 80 ne peut pas servir à la fois pour le logiciel serveur et le logiciel client.
- Sur une même machine, plusieurs logiciels peuvent accéder à plusieurs serveurs en même temps, en utilisant des services identiques. Par exemple, vous pouvez très bien faire une recherche sur www.google.fr tout en lisant des informations sur linuxfr.org, et en téléchargeant la dernière version de la distribution Debian sur www.debian.org.
Enfin, vous trouverez une liste (non exhaustive) des principaux ports IP en consultant le fichier "/etc/services" sur votre Linux. A toutes fins utiles, en voici une à jour au 1er janvier 2003.
Pour ce qui est de la définition des termes TCP et UDP de ce fichier, vous trouverez l'explication un peu plus loin dans ce chapitre.
|
Connexions entre machines
|