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.

Remarque

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.

Remarque

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 :

  1. L’utilisateur derrière le client NNTP 1 écrit un nouveau message et envoie ces données au serveur NNTP 1.
  2. 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.
  3. 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.
  4. 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.
  5. 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).
  6. 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