Академический Документы
Профессиональный Документы
Культура Документы
Un livre de Wikibooks.
Aller à : Navigation, rechercher
Regroupés au sein de Usenet, les groupes de discussion gérés par le protocole NNTP (Networks
News Transfer Protocol) ont encore de beaux jours devant eux malgré l'avancée des forums
(PhpBB et consorts) sur les pages web. On peut s'y abonner, les consulter en tout temps et poster
des messages. Nous allons utiliser Python pour réaliser un petit lecteur de nouvelles qui
permettra de rapatrier les messages d'un groupe.
Sections
[masquer]
• 1 Introduction
• 2 Aperçu du protocole NNTP
• 3 Le format des messages sur USENET
• 4 Mise en œuvre avec Python
• 5 Exemple complet
• 6 Liens utiles (en anglais)
[modifier] Introduction
À la fin des années 70, les protocoles pour utiliser les réseaux se multiplient. En 1972, le courriel
apparaît, suivi de TCP/IP une année plus tard. Si le courriel est intéressant pour quelques
échanges, la solution apparaît moins commode pour établir des discussions entre plusieurs
utilisateurs. Le concept de « mailing-list » est alors inventé pour permettre des envois à plusieurs
correspondants abonnés. En 1979, des étudiants de la Duke University en Caroline du Nord,
Tom Truscott et Jim Ellis planchent sur une innovation en la matière : réaliser un réseau qui se
chargerait de stocker les messages qui pourraient être consultés à tout moment. C'est ainsi que
débute l'histoire d'Usenet, contraction de « Unix User Network ». Aidés par d'autres étudiants, ils
réalisent un réseau entre leur université et la University of North Carolina.
Un protocole est spécialement développé pour gérer la diffusion des nouvelles : UUCP. Le
réseau de nouvelles se répand rapidement au travers d'ARPANET et d'autres types de connexions
(BBS, Fidonet, X.25, etc.). En 1984, le nombre de serveurs UUCP se monte à plus de 900 mais
devant un tel succès, des modifications doivent être envisagées. Une des plus importantes est le
passage à TCP/IP qui le lie à Internet. De plus, UUCP constitue un gouffre à ressources : chaque
serveur transmet un nouveau message à un autre serveur sans vérifier si ce dernier le possède
déjà. Les serveurs croulent ainsi sous des messages inutiles qui saturent le réseau. Avec
l'expansion de Usenet, la masse de messages devient rapidement ingérable.
Le protocole UUCP est alors abandonné au profit de NNTP (Networks News Transfer Protocol),
présenté en février 1986 par Brian Kantor et Phil Lapsley dans la RFC-977 (puis mis à jour par
C.Feather dans la RFC-3977 en Octobre 2006). NNTP résout ce problème en introduisant la
notion d'interaction entre les serveurs. Un serveur peut demander la liste de groupes et d'articles
d'un autre serveur et rapatrier les messages désirés. Le réseau peut aussi être fragmenté entre gros
et petits serveurs, ces derniers s'occupant par exemple d'une liste plus restreinte de groupes ou
faisant office de cache.
Plusieurs universités dont Berkeley travaillent sur les applications côté serveur en essayant
d'optimiser la gestion des messages et le système est remodelé pour obtenir la structure que nous
connaissons aujourd'hui. Usenet devient une vitrine de prédilection, des annonces importantes y
sont faites et des groupes concernant les sujets les plus divers allant de l'anodin au sulfureux
(alt.sex, groupes de secte, etc.) se répandent. Le 6 août 1991, Tim Berners-Lee annonce dans
alt.hypertext la création du « WorldWideWeb project ». Dans l'ordre des choses, le spam y fait
son apparition dès 1994. On attribue la paternité du spam sur Usenet à Clarence Thomas avec le
message « Global Alert For All : Jesus is Coming Soon » (17 janvier 1994). Il sera suivi peu
après par un spam sur le génocide arménien puis le premier véritable spam commercial sur
Usenet orchestré par deux avocats américains.
Exemple simple de Dialogue NNTP pour le post d'un article par un client:
[C] POST (1)
[S] 340 Input article; end with <CR-LF>.<CR-LF> (2)
[C] From: "Macstras" mactras@ulp.u-strasbg.fr (3)
[C] Newsgroups: misc.test (3)
[C] Subject: Demo pour l’expose MGP2i (3)
[C] Organization: Personnel (3)
[C] (3)
[C] Article de demonstration. (3)
[C] . (3)
[S] 240 Article received OK (4)