Bien avant le World Wide Web, une pla­te­forme mondiale d’échange d’in­for­ma­tions a été créée au début des années 1980 : Usenet (à l’origine le réseau d’uti­li­sa­teurs UNIX) qui existe encore aujourd’hui en tant que service Internet de manière in­dé­pen­dante en parallèle au Web. Toutefois, les news­groups, comme on appelle les dif­fé­rents domaines de Usenet, ont perdu beaucoup de leur im­por­tance au cours des dernières décennies du fait des nouveaux médias nu­mé­riques tels que les forums ou réseaux sociaux.

La valeur his­to­rique de Usenet, qui est structuré de manière hié­rar­chique et qui repose sur l’échange classique de messages entre le client et le serveur, est néanmoins in­con­tes­table. Raison suf­fi­sante pour jeter un coup d’œil au NNTP (Network News Transfer Protocol) qui se trouve derrière le réseau d’in­for­ma­tion et qui est in­dis­pen­sable à la com­mu­ni­ca­tion entre les dif­fé­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 news­groups. Ces news­groups sont prin­ci­pa­le­ment 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é­ci­fi­ca­tion du protocole NNTP, qui a été en­re­gis­tré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é­ve­lop­pe­ment et la pu­bli­ca­tion du NNTP, l’échange de données se faisait dans Usenet par lignes té­lé­pho­niques 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 com­mu­ni­ca­tion numérique, ce qui est prin­ci­pa­le­ment dû au fait que Usenet n’est également utilisé que spo­ra­di­que­ment et dans les milieux spé­cia­li­sés. Pour le réseau d’in­for­ma­tion, le Network News Transfer Protocol est in­dis­pen­sable depuis 1986 et est utilisé aussi bien du côté serveur que du côté client. Outre l’échange de messages per­son­nels directs, Usenet se ca­rac­té­rise par les news­groups sus­men­tion­nés qui, grâce au protocole, peuvent être créés et gérés de manière in­di­vi­duelle. De cette manière, de nombreux sous-groupes ont été intégrés au fil du temps dans la hié­rar­chie de base existante de Usenet.

À noter : les huit prin­ci­paux sujets de Usenet, également connus sous le nom de « Big Eight », sont les suivants :

  • comp: in­for­ma­tique
  • sci: sciences et tech­no­lo­gies
  • soc: société
  • talk: thémes généraux
  • rec: sujets liés loisirs, di­ver­tis­se­ment, art et culture
  • news: in­for­ma­tions et news sur Usenet lui-même
  • misc: divers
  • hu­ma­ni­ties: sciences humaines

Comment fonc­tionne 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 com­mu­ni­ca­tion, l’IANA (Internet Assigned Numbers Authority) a prévu le port TCP 119, qui ici est même ex­clu­si­ve­ment réservé au protocole de transfert - un réseau TCP/IP comme Internet est donc à la base de la pla­te­forme d’in­for­ma­tion. Le protocole NNTP, qui fonc­tionne lui-même sur la couche ap­pli­ca­tion, est basé di­rec­te­ment sur le protocole TCP, ce qui a l’avantage de garantir une trans­mis­sion 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 quel­conque est conservé sur ce serveur. Les autres clients qui sou­hai­tent par­ti­ci­per à la con­ver­sa­tion en question peuvent té­lé­char­ger 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’éta­blis­se­ment de la connexion.

Remarque

Dès qu’un serveur reçoit un nouveau message via le Network News Transfer Protocol, un iden­ti­fiant unique est attribué au message selon le format "<nu­mé­ro­Sé­quen­tiel@News-Server >". Il est utilisé pour la ré­cu­pé­ra­tion et le ré­fé­ren­ce­ment si d’autres clients ou uti­li­sa­teurs veulent réagir ou répondre.

Afin de diffuser les nouveaux messages sur l’ensemble du réseau Usenet, les dif­fé­rents serveurs trans­met­tent é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 main­te­nant illustrer la com­mu­ni­ca­tion 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 dif­fé­rentes étapes de la trans­mis­sion du message, que l’on peut voir dans ce schéma, peuvent être résumées comme suit :

  1. L’uti­li­sa­teur 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 iden­ti­fiant 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 trans­mettre le message aux serveurs 2 et 3 qu’il connaît (les flèches rouges sig­ni­fient donc qu’il y a eu omission de trans­mis­sion).
  6. Pendant ce temps, dès qu’ils sont en ligne, les clients ré­cu­pè­rent le message sur leur serveur d’in­for­ma­tion. Le client NNTP 2 reçoit par exemple les in­for­ma­tions di­rec­te­ment 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 com­mu­ni­quer avec le protocole NNTP. Par con­sé­quent, à chaque requête NNTP, un client envoie au­to­ma­ti­que­ment 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 im­por­tantes pour la com­mu­ni­ca­tion NNTP sont résumées dans le tableau suivant :

Commande NNTP Fonction
LIST Demande une liste des news­groups dis­po­nibles (avec notamment le premier et dernier numéro d’article)
NEWGROUPS Interroge tous les nouveaux groupes dis­po­nibles
NEWNEWS Interroge tous les nouveaux articles dis­po­nibles créés à partir d’une certaine date
GROUP Précise le groupe auquel une demande doit s’appliquer
ARTICLE Permet d’in­ter­ro­ger un poste spé­ci­fique via son numéro dans le groupe ou l’iden­ti­fiant du message
HEADER Demande l’en-tête d’un article uni­que­ment
BODY Demande le corps d’un article uni­que­ment
STAT Né­ces­saire pour spécifier l’ID de message d’un article
NEXT Sé­lec­tionne l’article suivant dans le newsgroup
POST Informe le serveur qu’un nouveau message ou article est en cours d’envoi
QUIT In­ter­rompt 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 sig­ni­fi­ca­tions suivantes :

Code pour le statut du serveur NNTP Sig­ni­fi­ca­tion
1xx In­for­ma­tions générales
2xx Commande reçue, exécution réussie
3xx Commande reçue, des in­for­ma­tions com­plé­men­taires sont né­ces­saires
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 in­for­ma­tions suivantes :

Code pour le statut du serveur NNTP Sig­ni­fi­ca­tion
x0x In­for­ma­tions sur la connexion, l’ins­tal­la­tion etc.
x1x In­for­ma­tions sur le newsgroup sé­lec­tionné
x2x In­for­ma­tions sur les articles sé­lec­tion­nés
x3x In­for­ma­tions sur le transfert de messages
x4x In­for­ma­tions sur les articles envoyés
x5x Réponse d’au­then­ti­fi­ca­tion
x8x Message pour les commandes étendues non nor­ma­li­sées
x9x Message de débogage
Aller au menu principal