Lorsqu’on parle de serveur, on pense au type qui nous apporte un café ou un demi. En informatique la notion de serveur est plus vaste. Un serveur, par définition, est quelqu’un qui nous rend un service. Lorsque nous l’interrogeons nous sommes le client. Dans le monde réel, un serveur est une personne physique.
Dans le monde informatique, le serveur est un programme qui rend le service. Mais on parle aussi de serveur pour désigner l’ordinateur physique sur lequel tourne le programme. Une bonne image est celle de la préfecture. Il s’agit d’un endroit où on accède à différents services : carte grise, papiers d’identité, … . Les personnes aux guichets de ces services sont des serveurs. La préfecture est le serveur physique qui rassemble ses services.
Dans le cas de la messagerie, le serveur est le programme qui permet d’envoyer des messages. Et c’est aussi la machine sur laquelle tourne ce programme. D’autres programmes peuvent tourner sur cette machine :
- un serveur de fichiers pour que chaque utilisateur connu puisse enregistrer des informations.
- Un serveur de base de données pour stocker et ordonner les données importante,
- Un serveur web pour diffuser les informations,
- Un serveur ‘applicatif’ pour créer des logiques métiers (pour simplifier, il s’agit d’automatismes qui réagissent aux demandes des clients).
Question. Comment un serveur connaît-il ses homologues ? Comment à partir d’une adresse mail, un serveur de messagerie sait-il quel serveur de messagerie interroger pour que le message arrive au bon destinataire ? La réponse est dans le nom de domaine. Chaque serveur a une adresse physique, la fameuse adresse IP, et un nom logique unique, le nom de domaine.
Pour qu’une machine puisse parler à une autre machine sur Internet, elle doit connaître son adresse IP. Le nom de domaine lui permet de retrouver cette adresse IP.
Une adresse mail classique ressemble à cela : prenom.nom@domaine.fr. Par exemple, pierre.bonnafous@gmail.com. Le nom de domaine de mon adresse mail c’est la partie à droite du ‘@’, ‘gmail.com’. Le ‘.’ est un séparateur. Ce nom de domaine se compose de deux parties. ‘gmail’ et ‘com’. Plus on est à droite et plus l’information est généraliste. La partie à gauche du signe ‘@’ est le nom d’utilisateur du domaine.
Le serveur de messagerie qui a reçu la demande du client ne connaît pas ce nom de domaine. Par contre, il connaît toujours au moins un serveur de domaine. Lorsqu’il va demander à ce serveur quelle est l’adresse IP derrière ce nom de domaine, s’il la connaît, il va lui renvoyer l’adresse IP, sinon, il va interroger un serveur de domaine plus généraliste dit racine.
Le serveur racine renverra sur le serveur qui peut répondre à la question quel serveur gère les noms de domaines en ‘.com’. Et le serveur de domaine spécialisé dans les domaine en ‘.com’ renverra l’adresse IP derrière le nom de domaine ‘gmail.com’.
Le serveur de messagerie, avant d’interroger son homologue, va être client du serveur de domaine pour trouver son adresse IP. Ensuite, il interrogera son homologue en utilisant le protocole SMTP. Le serveur smtp.gmail.com connaît l’utilisateur. Il va donc stocker le message. Lorsque le destinataire consultera sa boîte mail, via le protocole POP3 ou IMAP, il récupèrera le message.
A chaque échange, un dialogue est établi entre serveur et client. Ce dialogue est spécifique au service interrogé. On l’a vu dans l’article précédent pour le protocole SMTP. Derrière une demande simple comme envoyer un message à un collègue, ce sont de nombreux services qui peuvent être nécessaires, et donc de nombreux dialogue échangés entre clients et serveurs.
Je considère que tout se passe bien dans mes descriptions. En cas de difficulté, le dialogue entre les services changera pour essayer de passer outre la difficulté ou de prévenir l’utilisateur que le service ne peut être rendu.