NNTP : que signifie Network News Transfer Protocol ?
Bien avant le World Wide Web, une plateforme mondiale d’échange d’informations a été créée au début des années 1980 : Usenet (à l’origine le réseau d’utilisateurs UNIX) qui existe encore aujourd’hui en tant que service Internet de manière indépendante en parallèle au Web. Toutefois, les newsgroups, comme on appelle les différents domaines de Usenet, ont perdu beaucoup de leur importance au cours des dernières décennies du fait des nouveaux médias numériques tels que les forums ou réseaux sociaux.
La valeur historique de Usenet, qui est structuré de manière hiérarchique et qui repose sur l’échange classique de messages entre le client et le serveur, est néanmoins incontestable. Raison suffisante pour jeter un coup d’œil au NNTP (Network News Transfer Protocol) qui se trouve derrière le réseau d’information et qui est indispensable à la communication entre les différents serveurs et les clients.
Qu’est-ce que le NNTP (Network News Transfer Protocol) ?
Le Network News Transfer Protocol ou NNTP, est un protocole de transfert TCP/IP pour les newsgroups. Ces newsgroups sont principalement utilisés dans le cadre de ce que l’on appelle Usenet, et offrent, en tant que pionniers des forums Internet modernes, un espace pour échanger un nombre illimité de messages texte sur une grande variété de sujets. La première spécification du protocole NNTP, qui a été enregistrée dans la RFC 977 qui remonte à 1986, mais depuis, le protocole a été révisé plusieurs fois et la version actuelle se trouve dans la RFC 3977. Depuis 2009, il existe également une Request for Comments avec la RFC 5536, qui précise également le format de message du transfert NNTP.
Jusqu’au développement et la publication du NNTP, l’échange de données se faisait dans Usenet par lignes téléphoniques en utilisant le protocole UNIX UUCP (Unix to Unix copy) !
Où le protocole NNTP est-il utilisé ?
Aujourd’hui, le NNTP ne joue plus un rôle majeur dans la communication numérique, ce qui est principalement dû au fait que Usenet n’est également utilisé que sporadiquement et dans les milieux spécialisés. Pour le réseau d’information, le Network News Transfer Protocol est indispensable depuis 1986 et est utilisé aussi bien du côté serveur que du côté client. Outre l’échange de messages personnels directs, Usenet se caractérise par les newsgroups susmentionnés qui, grâce au protocole, peuvent être créés et gérés de manière individuelle. De cette manière, de nombreux sous-groupes ont été intégrés au fil du temps dans la hiérarchie de base existante de Usenet.
À noter : les huit principaux sujets de Usenet, également connus sous le nom de « Big Eight », sont les suivants :
- comp: informatique
- sci: sciences et technologies
- soc: société
- talk: thémes généraux
- rec: sujets liés loisirs, divertissement, art et culture
- news: informations et news sur Usenet lui-même
- misc: divers
- humanities: sciences humaines
Comment fonctionne le Network News Transfer Protocol ?
NNTP est un protocole basé texte qui permet l’échange alterné entre le client et le serveur. Ainsi, chaque demande NNTP doit recevoir une réponse NNTP. Pour cette communication, l’IANA (Internet Assigned Numbers Authority) a prévu le port TCP 119, qui ici est même exclusivement réservé au protocole de transfert - un réseau TCP/IP comme Internet est donc à la base de la plateforme d’information. Le protocole NNTP, qui fonctionne lui-même sur la couche application, est basé directement sur le protocole TCP, ce qui a l’avantage de garantir une transmission de données à la fois sûre et fiable.
Le concept de base de Usenet est qu’un nouveau message envoyé par un client NNTP à un serveur NNTP quelconque est conservé sur ce serveur. Les autres clients qui souhaitent participer à la conversation en question peuvent télécharger les messages à tout moment pour être mis à jour sur le groupe. Cela signifie que lorsqu’un client se connecte à un serveur NNTP, il télécharge d’abord tous les messages qui ont été postés depuis la dernière fois qu’il s’est connecté à ce serveur. Ainsi, plus un client est resté longtemps « hors ligne », et plus il faut de temps pour que le processus de mise à jour se termine après l’établissement de la connexion.
Dès qu’un serveur reçoit un nouveau message via le Network News Transfer Protocol, un identifiant unique est attribué au message selon le format "<numéroSéquentiel@News-Server >". Il est utilisé pour la récupération et le référencement si d’autres clients ou utilisateurs veulent réagir ou répondre.
Afin de diffuser les nouveaux messages sur l’ensemble du réseau Usenet, les différents serveurs transmettent également les messages reçus à tous les autres serveurs NNTP connus. Avant d’y procéder, leur nom est ajouté sur l’en-tête du chemin d’accès du message NNTP afin qu’il ne soit pas reçu plusieurs fois.
NNTP : exemple d’échange de messages
Après avoir expliqué les principes de base du Network News Transfer Protocol dans les sections précédentes, nous allons maintenant illustrer la communication entre les clients et les serveurs à l’aide d’un exemple concret. Le point de départ est le client 1, à partir duquel un nouveau message est introduit dans le Usenet :
Les différentes étapes de la transmission du message, que l’on peut voir dans ce schéma, peuvent être résumées comme suit :
- L’utilisateur derrière le client NNTP 1 écrit un nouveau message et envoie ces données au serveur NNTP 1.
- Le serveur NNTP 1 donne au message un identifiant unique et ajoute son nom à l’en-tête. Il connaît les serveurs NNTP 2 et NNTP 3 et leur transmet le message.
- Le serveur NNTP 2 reçoit le message et ajoute son nom à l’en-tête. Le serveur NNTP 3 reçoit également le message, ajoute son nom à l’en-tête et transmet le message au serveur NNTP 4, qu’il connaît.
- Le serveur NNTP 4 reçoit et traite également le message : l’en-tête est prolongé par son nom. Il contacte ensuite le serveur NNTP 5 qu’il connaît et lui fournit les données.
- Le serveur NNTP 5 ajoute sa marque à l’en-tête. Il prend en compte les saisies de l’en-tête et ne tente donc pas de transmettre le message aux serveurs 2 et 3 qu’il connaît (les flèches rouges signifient donc qu’il y a eu omission de transmission).
- Pendant ce temps, dès qu’ils sont en ligne, les clients récupèrent le message sur leur serveur d’information. Le client NNTP 2 reçoit par exemple les informations directement du serveur 1, tandis que le client 6 les reçoit du serveur 4.
Aperçu des codes de statut et commandes NNTP
Les clients et les serveurs utilisent des commandes ASCII pour communiquer avec le protocole NNTP. Par conséquent, à chaque requête NNTP, un client envoie automatiquement une de ces commandes. Le serveur répond par un message de statut et envoie au client les données demandées. Les commandes les plus importantes pour la communication NNTP sont résumées dans le tableau suivant :
Commande NNTP | Fonction |
---|---|
LIST | Demande une liste des newsgroups disponibles (avec notamment le premier et dernier numéro d’article) |
NEWGROUPS | Interroge tous les nouveaux groupes disponibles |
NEWNEWS | Interroge tous les nouveaux articles disponibles créés à partir d’une certaine date |
GROUP | Précise le groupe auquel une demande doit s’appliquer |
ARTICLE | Permet d’interroger un poste spécifique via son numéro dans le groupe ou l’identifiant du message |
HEADER | Demande l’en-tête d’un article uniquement |
BODY | Demande le corps d’un article uniquement |
STAT | Nécessaire pour spécifier l’ID de message d’un article |
NEXT | Sélectionne l’article suivant dans le newsgroup |
POST | Informe le serveur qu’un nouveau message ou article est en cours d’envoi |
QUIT | Interrompt la connexion au serveur NNTP |
Le message d’état que le serveur renvoie comme réponse NNTP (avec les données demandées) est un code à trois chiffres. Le premier chiffre revêt les significations suivantes :
Code pour le statut du serveur NNTP | Signification |
---|---|
1xx | Informations générales |
2xx | Commande reçue, exécution réussie |
3xx | Commande reçue, des informations complémentaires sont nécessaires |
4xx | Commande reçue, exécution non réussie |
5xx | Commande inconnue |
Avec le deuxième chiffre du code numérique, le serveur transmet les informations suivantes :
Code pour le statut du serveur NNTP | Signification |
---|---|
x0x | Informations sur la connexion, l’installation etc. |
x1x | Informations sur le newsgroup sélectionné |
x2x | Informations sur les articles sélectionnés |
x3x | Informations sur le transfert de messages |
x4x | Informations sur les articles envoyés |
x5x | Réponse d’authentification |
x8x | Message pour les commandes étendues non normalisées |
x9x | Message de débogage |