From e21ad368bb97dc7f87f64df05ac924a0549f9103 Mon Sep 17 00:00:00 2001 From: george Date: Mon, 12 Apr 2004 17:58:01 +0000 Subject: [PATCH] Page sur les langues exotiques en LaTeX. --- logiciels/latex/grec.tml | 10 +- logiciels/latex/index.tml | 3 +- logiciels/latex/langues.tml | 355 ++++++++++++++++++++++++++++++ theorie/encodages.tml | 5 +- theorie/internet.tml | 419 ++++++++++++++++++++++++++++++++++++ 5 files changed, 788 insertions(+), 4 deletions(-) create mode 100644 logiciels/latex/langues.tml create mode 100644 theorie/internet.tml diff --git a/logiciels/latex/grec.tml b/logiciels/latex/grec.tml index 1cd15fe..0df3ead 100644 --- a/logiciels/latex/grec.tml +++ b/logiciels/latex/grec.tml @@ -11,6 +11,14 @@

Le grec ancien sous LaTeX

+
+

+La méthode décrite ici fonctionne encore très bien, mais de nouveaux outils +sont maintenant disponibles, qui peuvent sembler plus confortables à +utiliser. Pour apprendre à s'en servir, allez voir la page sur +langues exotiques (oui, le grec, c'est exotique). +

+

Avant toute chose...

@@ -205,7 +213,7 @@ syst
Auteurs : Éveline Prioux (1998), adaptation en HTML : Marie-Lan Nguyen (2000). -Dernière modification : le . +Dernière modification : le .
diff --git a/logiciels/latex/index.tml b/logiciels/latex/index.tml index e2da48c..427d1fa 100644 --- a/logiciels/latex/index.tml +++ b/logiciels/latex/index.tml @@ -64,6 +64,7 @@ qu'un sujet important a
  • Faire des macros
  • Faire des références
  • Mathématiques élémentaires
  • +
  • Les langues exotiques
  • Le grec ancien sous LaTeX
  • Écrire une lettre
  • Utiliser différentes polices
  • @@ -161,7 +162,7 @@ href="mailto:tuteurs@clipper.ens.fr">mail
    Auteur : François-Xavier Coudert. Dernière modification le -2003-02-05. +.
    diff --git a/logiciels/latex/langues.tml b/logiciels/latex/langues.tml new file mode 100644 index 0000000..258c621 --- /dev/null +++ b/logiciels/latex/langues.tml @@ -0,0 +1,355 @@ + + + + +Langues exotiques + + + +

    Langues exotiques

    + +
    +

    +Dans cette page, nous allons voir comment utiliser LaTeX pour taper des +langues « exotiques ». Par là, nous entendons des langues qui s'écrivent +avec autre chose que l'alphabet latin, comme le russe ou le japonais. +

    +
    + +

    Le point sur la situation

    + +

    Anciennes et nouvelles méthodes

    + +

    +LaTeX a été conçu avant tout par des Américains, et à ce titre, prévu pour +taper de l'anglais. Comme l'auteur principal est quelqu'un de soigneux, il +est assez facile de rajouter des accents, et même de taper autre chose que +de l'alphabet latin. Mais facile ne veut pas dire pratique : avec la manière +directe de procéder, le code source d'un mot en grec ancien risque d'être +moins lisible que les jurons de Fantasio. +

    + +

    +Heureusement, LaTeX est programmable, et des extensions ont été écrites pour +permettre plus de confort. Hélas, ces extensions sont toutes plus ou moins +incompatibles entre elles, et souvent plutôt plus que moins. Par exemple, si +vous voulez taper du français et du grec, vous avez un choix exclusif entre +taper confortablement les caractères accentués français et taper +confortablement les mots grecs. +

    + +

    +Plus récemment, l'informatique a vu le développement d'Unicode, un système +qui résout les problèmes de langues dans les fichiers textes (un fichier +.tex est un fichier texte. L'architecture de LaTeX ne l'a pas +rendu facile, mais petit a petit, il est devenu possible de bénéficier de ce +progrès. +

    + +

    Difficultés encore présentes

    + +

    +Unicode résout certains problèmes, mais ne les résout pas tous. Le principal +est bien sûr celui des polices : votre texte aura beau contenir, +informatiquement parlant, des idéogrammes chinois, si ces idéogrammes ne +sont disponibles dans aucune police que connaît LaTeX, vous n'irez pas loin. +

    + +

    +Ensuite, Unicode est conçu pour la saisie du texte, pas son rendu : +Unicode traite des entités plus ou moins abstraites appelées caractères, qui +n'ont pas nécessairement un rapport direct avec les glyphes qu'on veut voir +dans un document imprimé. Pour les langues européennes, ça se passe plutôt +bien, mais certaines langues, l'arabe et surtout les langues indiennes, ont +des interactions entre caractères très complexes : ligatures, +réordonnancement, combinaisons, etc. Unicode n'aplanit pas ces difficultés, +il se contente de fournir un point d'entrée confortable à une extension qui +le fait — si elle existe. +

    + +

    +Enfin, LaTeX est conçu presque exclusivement pour l'écriture de gauche à +droite. Ses algorithmes sont incapables de gérer l'écriture de droite à +gauche de l'arabe et de l'hébreu, et l'écriture en colonnes. +

    + +

    Finalement, qu'est-ce qui marche ?

    + +

    +Après toutes ces considérations défaitistes, on en vient à se demander s'il +est possible de taper autre chose que de l'anglais. Voici une petite liste +de ce qui marche bien. +

    + + + +

    +La distribution standard de LaTeX comporte des polices latines, grecques et +cyrilliques. Des polices chinoises et japonaises sont également disponibles, +mais parfois plus techniques à installer. Il y en a installées à l'ENS. +

    + +

    Comment faire

    + +

    Préparation

    + +

    +Avant de commencer, il y a un pré-requis qui n'est pas spécifique à LaTeX : +savoir taper un texte quelconque, dans la langue qui vous intéresse, en +Unicode. Heureusement, nous avons une documentation sur les +éditeurs en Unicode, +que nous vous invitons à lire avant d'aller plus loin si ce n'est déjà fait. +

    + +

    +Tout ce que vous avez à faire maintenant, c'est de créer votre fichier LaTeX +avec votre éditeur en Unicode. Nous allons voir dans un instant ce qu'il +faut mettre dans le préambule. +

    + +
    +

    +Attention, sur certains PC FreeBSD, c'est une ancienne +version de LaTeX qui est installée. Si vous éprouvez des problèmes, regardez +la deuxième ligne des messages lors de la compilation : si elle indique +« LaTeX2e <1999/12/01> patch level 1 », changez de +machine (en vous loguant à distance, c'est le plus simple). +

    +
    + +

    Ce qu'il faut écrire

    + +

    +Dans le cas général, il n'y a quasiment rien à changer. Il suffit d'avoir la +ligne suivante dans le préambule : +

    +
    \usepackage[utf8]{inputenc}
    +

    +(à la place de l'habituel latin1). Avec cette ligne, un texte +en alphabet latin étendu (y compris œ, +, , , +, , , +, etc., tapés directement) fonctionne directement. +

    + +

    +Pour d'autres langues, il faut quelques options supplémentaires, et en +particulier informer babel du changement de langue. +

    + +

    Babel polyglotte

    + +

    +Jusqu'a présent, vous n'avez probablement utilisé du package babel que la +ligne \usepackage[francais]{babel}. Il est temps d'apprendre à +l'utiliser pour d'autres langues. Par chance, c'est assez simple. La +première chose à faire est de charger les bons modules : +

    +
    \usekackage[greek,russian,francais]{babel}
    +

    +La dernière langue mentionnée est la langue « principale » du document, +celle qui est sélectionnée s'il n'y a pas d'indication contraire. L'ordre +des autres langues n'a pas d'importance. +

    + +

    +Il faut ensuite, tout au long du texte, indiquer les changements de langue. +Trois commandes permettent de faire ça : +

    +
    \selectlanguage{langue}
    +

    +sélectionne une nouvelle langue pour tout le reste du texte, ou jusqu'à la +prochaine rencontre avec la même commande. De manière surprenante, cette +commande s'échappe des groupes et des environnements ; à utiliser avec +prudence donc. +

    + +
    +\begin{otherlanguage}{langue}
    +\end{otherlanguage}
    +
    +

    +sélectionne une langue pour l'étendue de l'environnement. Aucune surprise +ici. +

    + +
    \foreignlanguage{langue}{blabla}
    +

    +sélectionne une langue pour le texte « blabla », et s'utilise de la même +manière que \emph. +

    + +

    +Souvent, des commandes plus compactes sont disponibles spécifiquement pour +une langue donnée (comme \textgreek pour +\foreignlanguage{greek}). +

    + +
    +

    +Attention, il est souvent nécessaire de +bien informer LaTeX du changement de langue. En effet, le changement de +langue s'accompagne d'un changement de police (plus précisément, +d'encodage de police), ce dont LaTeX ne prend pas l'initiative tout +seul. +

    +
    + +

    +Dans le cas d'un texte comportant beaucoup de mots étrangers, par exemple le +commentaire en français d'un texte grec, changer sans arrêt de langue est +fastidieux, même en ayant défini une macro très courte. Il est possible +d'automatiser ça en utilisant le package autofe. Attention +cependant si vous optez pour cette solution : si dans un mot certains +caractères sont disponibles dans la police actuelle et d'autres pas, ce mot +sera rendu avec un mélange de polices, ce qui peut être très laid, et vous +n'aurez aucun avertissement. De plus, au delà de quelques mots, il faut +quand même expliciter le changement de langue, faute de quoi la typographie +et, plus grave, la césure ne respecteront pas les règles spécifiques. +

    + +

    Langue par langue, en détail

    + +

    Le grec

    + +

    +Le nom pour babel est simplement greek. La commande +\textgreek{blabla} est définie pour avoir le même +effet que \foreignlanguage{greek}{blabla}. Le +changement de langue est nécessaire pour que la police soit disponible. +

    + +

    +Quand le grec est actif, LaTeX utilise une sorte de translittération depuis +l'alphabet latin, avec des conventions pour les accents et les esprits. Mais +comme nous travaillons en UTF-8, c'est inutile et nous n'en parlons pas. +

    + +

    Le cyrillique

    + +

    +Le nom pour babel est russian, et le changement de langue est +nécessaire pour que la police soit disponible. Rien d'autre à signaler. +

    + +

    Le chinois

    + +

    +Là, ça se complique un peu, il faut quelques packages supplémentaires. Voici +ce qu'il faut mettre dans le préambule pour du chinois traditionnel : +

    +
    +\usepackage[cjkbg5]{ucs}
    +\usepackage[utf8]{inputenc}
    +\usepackage[C00,T1]{fontenc}
    +\DeclareFontSubstitution{C00}{sng}{m}{n}
    +
    +

    +et pour du chinois simplifié : +

    +
    +\usepackage[cjkgb]{ucs}
    +\usepackage[utf8]{inputenc}
    +\usepackage[C10,T1]{fontenc}
    +\DeclareFontSubstitution{C10}{sng}{m}{n}
    +
    + +

    +Les deux ont la même structure. La première ligne indique quelle +interprétation choisir pour un caractère qui aurait le mauvais goût d'être +commun au chinois simplifié, au chinois traditionnel et au japonais. La +troisième ligne charge l'encodage nécessaire (C00 pour le chinois +traditionnel, C10 pour le simplifié), ainsi que l'encodage occidental (faute +de quoi ça ne marche pas). Enfin, la dernière ligne indique quelle famille +de police employer par défaut pour cet encodage, ici Arphic SungtiL +(sng). Deux autres polices sont disponibles ici, Arphic KaitiM +(kai), très ornée, et Bitstream Cyberbit (cyb), +qui n'est pas libre. Il est possible de changer de police en modifiant la +ligne \DeclareFontSubstitution ou en utilisant la commande +\fontfamily. +

    + +

    +Quelques points supplémentaires à savoir. D'abord, babel n'a pas de mode +pour le chinois. Pour éviter des bizarreries typographiques, il peut être +bon de passer babel en mode anglais pour un bout de chinois. Ensuite, ce +mode de saisie n'est pas capable de couper automatiquement entre les +idéogrammes ; il est nécessaire d'insérer des espaces à la main. Peut-être +dans un avenir proche un package résoudra-t-il le problème. +

    + +
    +

    +L'installation de polices chinoises pour LaTeX est assez acrobatique, et +pas complètement standard. Les indications ci-dessus fonctionneront +normalement sur l'installation LaTeX de l'ENS, mais il n'est pas sûr du tout +que ce soit le cas ailleurs ; en particulier, les noms des polices (pour le +\DeclareFontSubstitution) peuvent varier considérablement. +

    +
    + +

    Le japonais

    + +

    +Là, ça se complique un peu, il faut quelques packages supplémentaires. Voici +ce qu'il faut mettre dans le préambule : +

    +
    +\usepackage[cjkjis]{ucs}
    +\usepackage[utf8]{inputenc}
    +\usepackage[C42,T1]{fontenc}
    +\DeclareFontSubstitution{C42}{dg}{m}{n}
    +
    + +

    +La première ligne indique quelle +interprétation choisir pour un caractère qui aurait le mauvais goût d'être +commun au japonais et au chinois. La +troisième ligne charge l'encodage nécessaire (C42 pour le japonais), ainsi +que l'encodage occidental (faute de quoi ça ne marche pas). Enfin, la +dernière ligne indique quelle famille de police employer par défaut pour cet +encodage, ici Wadalabe DG (dg). Trois autres polices Wadalabe +sont disponibles ici, dm, mc et mr. +Il est possible de changer de police en modifiant la ligne +\DeclareFontSubstitution ou en utilisant la commande +\fontfamily. La police (non-libre) Bitstream Cyberbit est +également disponible sous le nom cyb, mais il faut dans ce cas +remplacer partout C42 par C40, et donc exclure d'utiliser les polices +Wadalabe. +

    + +

    +Quelques points supplémentaires à savoir. D'abord, babel n'a pas de mode +pour le japonais. Pour éviter des bizarreries typographiques, il peut être +bon de passer babel en mode anglais pour un bout de japonais. Ensuite, ce +mode de saisie n'est pas capable de couper automatiquement entre les +caractères ; il est nécessaire d'insérer des espaces à la main. Peut-être +dans un avenir proche un package résoudra-t-il le problème. +

    + +
    +

    +L'installation de polices japonaises pour LaTeX est assez acrobatique, et +pas complètement standard. Les indications ci-dessus fonctionneront +normalement sur l'installation LaTeX de l'ENS, mais il n'est pas sûr du tout +que ce soit le cas ailleurs ; en particulier, les noms des polices (pour le +\DeclareFontSubstitution) peuvent varier considérablement. +

    +
    + +
    +Auteur : Nicolas George. +Dernière modification le . +
    + + + diff --git a/theorie/encodages.tml b/theorie/encodages.tml index 51b7f1a..912e7ab 100644 --- a/theorie/encodages.tml +++ b/theorie/encodages.tml @@ -283,11 +283,12 @@ tous les c avec Vim ou Emacs (ou dans un terminal)
  • Gérer son courrier électronique en Unicode avec Mutt
  • -
  • Taper du LaTeX en Unicode : pour bientôt.
  • +
  • Taper du LaTeX en + Unicode
  • -Auteur : Nicolas George. Dernière modification le . +Auteur : Nicolas George. Dernière modification le .
    diff --git a/theorie/internet.tml b/theorie/internet.tml new file mode 100644 index 0000000..9959dab --- /dev/null +++ b/theorie/internet.tml @@ -0,0 +1,419 @@ + + + + +Internet + + + +

    Comment marche Internet

    + +

    Relier les ordinateurs

    + +

    Le principe

    + +

    +Un câble, d'un côté quelqu'un qui envoit du courant par intermittence, de +l'autre quelqu'un qui regarde quand il y a du courant. C'est le principe du +télégraphe, avec le code Morse. Et ça s'adapte vraiment parfaitement aux +ordinateurs. Les ordinateurs peuvent même faire mieux : ils ont des +métronomes (dans le domaine informatique on parle d'horloges) qui battent +très précisément la mesure ; à chaque tic, ils peuvent envoyer ou pas le +courant, ça fait un bit d'information à chaque fois. +

    + +

    +Nous ne rentrerons pas dans les détails de la réalisatoin physique : ça +peut aller d'une bête paire de fils sur à peine plus d'un mètre à un +faisceau de fibres optiques, en passant par un câble coaxial. Ça peut +également être des ondes radio, ou bien le fait de dire ou de ne pas dire +bip sur une ligne téléphonique. Bref, il y a plein de manières pour deux +ordinateurs de se dire 0 ou 1. +

    + +

    +Ça, c'est bien pour relier deux ordinateurs. Mais comment faire s'il y en a +plusieurs ? Tirer un câble entre chaque paire n'est pas envisageable. La +solution la moins coûteuse, et donc celle qui a été rapidement préférée, est +d'utiliser un seul câble qui connecte tous les ordinateurs. Quand un +ordinateur veut parler, il parle à tous les autres, et il faut inventer des +moyens pour que deux ne parlent pas en même temps. Le système de ce genre le +plus répandu consiste en un câble coaxial où tous les ordinateurs sont +branchés en sérié ; plus récemment on a adopté une structure en étoile +autour d'un appareil bon marché appelé hub, plus efficace et plus robuste +que la structure en série. +

    + +

    +Plusieurs ordinateurs, c'est bien, mais relier beaucoup d'ordinateur, c'est +mieux. La technologie des câbles impose des limites de longueur, et il est +rarement possible de relier directement un câble coaxial de réseau +domestique à un faisceau de fibres optiques transatlantique. La solution +consiste alors à avoir une machine branchée sur les deux (ou plus) réseaux, +avec pour tâche de faire suivre l'information de l'un à l'autre ; quand un +ordinateur d'un réseau veut parler à un ordinateur de l'autre réseau, il +adresse son message à cette machine, avec une étiquette indiquant le +destinataire. On appelle une telle machine un routeur. +

    + +

    Comment on fait, en vrai, sur Internet

    + +

    +Pour les réseaux locaux (les +LAN quand on veut faire +moderne), la technologie employée est ethernet. Elle fonctionne +soit avec un câble coaxial en série, soit avec un câble simple (à huit fils +dont peu sont vraiment utilisés) organisé en étoile autour d'un hub. Avec +ethernet, les données sont envoyées par blocs appelés trames qui font au +plus environ 1,5 ko. Il n'y a pas de système pour s'assurer a priori +que deux ordinateurs sur le câble ne parlent pas en même temps : la +détection se fait a posteriori par le fait que le signal est alors +incompréhensible ; les deux ordinateurs réémettent alors après un délai +aléatoire, qui sera probablement différent ; en pratique, ce système marche +plutôt bien. +

    + +

    +Au début de chaque trame ethernet, ou trouve ce qu'on appelle un +entête : quelques octets réservés par le protocole ethernet +lui-même pour son fonctionnement interne. Toutes les cartes réseau ethernet +possèdent une adresse +MAC depuis l'usine (mais +les cartes modernes permettent de la changer), qui est code unique de six +octets. Par exemple clipper a pour adresse MAC +08:00:20:b0:24:32. Dans l'entête ethernet, on trouve l'adresse +MAC de l'ordinateur auquel la trame est adressée (ainsi que celle de +l'ordinateur qui envoit). En temps normal, le filtrage se fait directement +au niveau de la carte réseau, de sorte que parmi les ordinateurs sur un même +câble, seul celui qui est concerné voit effectivement un message. +

    + +

    +Dans l'entête ethernet, on trouve également un numéro de protocole. C'est un +petit nombre, sur deux octets, qui décrit très brièvement ce qu'on prévoit +de faire avec les données de la trame. +L'IANA +tient à jour une +table des numéros +ethernet attribués. Ainsi, le système d'exploitation de l'ordinateur qui +a reçu la trame peut immédiatement appeler le bon sous-système, ou ignorer +la trame s'il ne sait pas quoi en faire. Pour illustrer, quand on utilise +ethernet pour faire passer de l'« Internet », le numéro est 513. Ce +mécanisme de numéros décrivant le genre d'utilisation d'un système est très +général, et on le retrouve à tous les niveaux des protocoles Internet. +

    + +

    +Quand on utilise une ligne téléphonique, le protocole employé est le +Point to Point (PPP). Il a des mécanismes différents +parce qu'il ne relie que deux ordinateurs, mais sous des contraintes +différentes (ligne moins fiable et temps de latence supérieur). +

    + +

    Relier les réseaux

    + +

    Le routage

    + +

    +Mettez une lettre à la poste. Si le destinataire habite dans la même ville, +elle lui sera distribuée directement. S'il habite dans une ville voisine, le +facteur transmet la lettre à son collègue de cette ville. S'il habite plus +loin, le facteur transmettra la lettre au centre de tri dont il dépend. Et à +son tour, le centre de tri va faire suivre la lettre à qui de droit. La +lettre va donc passer par différentes étapes où elle sera redirigée en +fonction de l'adresse qui est écrite dessus. +

    + +

    +Les réseaux informatiques, dès qu'ils dépassent les quelques dizaines de +machines qu'on peut brancher sur un même câble, fonctionnent de la même +manière : les données sont découpées en paquets, qui jouent le +rôle de notre enveloppe. Quand il n'est pas possible de transmettre le +paquet directement à son destinataire, il est transmis à un ordinateur +(défini dans la configuration du réseau) appelé routeur. Cet +ordinateur est censé être capable de faire suivre le paquet ; ça suppose par +exemple qu'il est relié par un autre câble à un autre réseau. +

    + +

    +Pour pouvoir marcher, ce système a besoin que les ordinateurs soient dotés +d'une adresse qui reflète leur position dans le réseau global. L'adresse MAC +ne convient pas pour cette tâche, d'une part parce que elle est (plus ou +moins) immuable et ne correspond en rien à la position sur le réseau (un +portable qu'on débranche d'un endroit et rebranche a un autre ne change pas +d'adresse MAC), et d'autre part parce qu'on souhaite que ça fonctionne avec +différents types de connexion (les modems pour les connexions PPP, par +exemple, n'ont pas d'adresse MAC). On invente alors un nouveau système +d'adresses, indépendant du protocole utilisé pour connecter les ordinateurs. +

    + +

    Le protocole IP

    + +

    +Ce qui fait Internet, c'est +IP (et l'on découvre que le +titre de cette section est un pléonasme). Ce protocole décrit la structure +des adresses utilisée, la manière d'écrire ces adresses dans les paquets, et +les moyens d'assurer leur bonne circulation. +

    + +

    +Nous utilisons actuellement la version 4 d'IP, ce qu'on indique parfois par +IPv4. Dans cette version, les adresses sont constituées de 32 chiffres +binaires (bits), ce qu'on écrit généralement sous la forme de quatre nombres +entre 0 et 255. Par exemple, l'adresse IP de clipper est 129.199.129.1. Une +nouvelle version d'IP, IPv6, est progressivement mis en place ; les adresses +y font 128 bits, et sont écrites en hexadécimal ; l'ENS n'est pas reliée en +IPv6, mais si vous voulez un exemple, 2001:660:3001:4002:2C0:4FFF:FE4E:41D3 +est l'adresse IPv6 du serveur web de +Renater. +

    + +

    +Tout ordinateur relié à Internet possède (au moins) une adresse IP, et il +est le seul à la posséder (dans Internet). Ces adresses sont structurées en +réseaux et sous-réseaux, en fixant les chiffres de gauche à droite. Ainsi, +toutes les adresses en 129.199.x.y sont dans l'ENS, et celles en +129.199.129.y sont plus particulièrement dans la salle S. De l'extérieur, +quelqu'un qui veut envoyer un paquet à 129.199.129.1 a seulement à savoir +qu'il doit l'envoyer à l'ENS. C'est ensuite à nos routeurs de finir le +travail. +

    + +

    +Les paquets IP comportent tous l'adresse IP de l'expéditeur, celle du +destinataire, une somme de contrôle qui permet de vérifier qu'il est intact, +et un numéro de protocole indiquant à quoi va servir ce paquet. Ils +comportent également un compteur qui limite le nombre de routeurs par lequel +il peut passer (de manière à ce qu'un paquet perdu ne reste pas éternellement +à circuler entre des routeurs mal configurés), ainsi que quelques autres +options. Un des principes d'Internet, c'est que les routeurs font le strict +minimum : ils doivent se contenter de faire suivre les paquets sans les +altérer (sauf le compteur ; si un paquet a atteint la limite, le routeur +l'arrête et envoit un paquet à l'expéditeur pour signaler l'erreur). Un des +autres principes est que tous les ordinateurs sont égaux : du point de vue +du protocole, rien ne distingue le super ordinateur central de la NASA de +votre petit PC personnel ; en particulier, rien ne distingue un serveur d'un +poste client. +

    + +

    +IP est conçu sur un principe de best effort (meilleur +effort) : les infrastructures (les routeurs) font leur possible pour faire +parvenir vos paquets, mais sans aucune garantie. Un paquet peut disparaître +sans laisser de trace, ou bien se perdre au mauvais endroit (mais il n'ira +en général pas bien loin), ou encore être retardé et arriver après un paquet +pourtant parti plus tard. Il arrive même qu'un paquet arrive en plusieurs +exemplaires. Bien sûr, en général, les paquets arrivent bien, et +dans l'ordre. Ce principe du meilleur effort a l'avantage d'être simple et +léger ; il est ensuite possible de concevoir un système d'accusés de +réception et de numéros d'ordre pour assurer la fiabilité de la +transmission. +

    + +

    Relier les programmes

    + +

    Trier les paquets

    + +

    +C'est bien gentil de dire que votre ordinateur peut envoyer des paquets qui +arriveront (peut-être) à n'importe quel ordinateur dans le monde, mais vous, +ce qui vous intéresse, c'est de surfer sur le web et d'envoyer du courrier +en même temps, et que les informations arrivent. Pourtant, le web et le +courrier électronique ne sont pas toujours dans le même logiciel : il faut +donc que plusieurs applications puissent se partager le réseau, et que l'une +n'aille pas recevoir les données de l'autre. +

    + +

    +Quand on programme une application réseau, on amierait en général avoir une +sorte de tuyau : tout ce qu'on dit d'un côté, l'application à l'autre bout +le reçoit, dans l'ordre, sans perte, et une seule fois, et inversement, on +reçoit tout ce qu'elle dit. Si les ordinateurs aux deux bouts sont d'accord, +un tel tuyau peut être simulé : on découpe ce qui doit passer dans le tuyau +en morceaux assez petits pour tenir dans des paquets, et on les expédie avec +un numéro d'ordre ; à l'autre bout, l'ordinateur répond par un paquet +accusant la réception, et utilise les numéros pour remettre de l'ordre. Si +on constate qu'un accusé de réception tarde, on réexpédie le paquet +incriminé, au pire il arrivera en double et ce n'est pas grave. +

    + +

    +Tant qu'on en est à rajouter des numéros aux paquets, on peut ajouter encore +quelques informations. Par exemple l'identité du programme qui l'a envoyé, +ou l'identité du programme qui doit le recevoir. Avec tout ça, on peut +concevoir des connexions réseau : un tuyau virtuel entre un +ordinateur et un autre, avec une extrémité qui envoit des paquets, attend +des accusés de réception, et réexpédie les paquets qui se perdent, et +l'autre extrémité qui reçoit les paquets et les remet dans l'ordre. Quand un +paquet arrive sur un ordinateur, le système réseau consulte son contenu pour +voir ses références, et trouve dans ses tables à quelle connexion il +appartient. +

    + +

    +Tout ceci est normalement fait par le système d'exploitation des +ordinateurs, et caché aux programmes. Les programmes, eux, se contentent de +réclamer une connexion, et ensuite d'utiliser le tuyau. Les données passent, +ils n'ont pas à se soucier de toute la machinerie interne. +

    + +

    Le protocole TCP

    + +

    +Sur internet, le protocole qui sert à établir des connexions est +TCP. Pour +distinguer les connexions, TCP utilise un numéro de port, un +petit nombre (entre 1 et 65535), qu'on peut voir un peu comme le casier d'un +élève, alors que l'adresse IP correspond à « 45 rue d'Ulm ». Une connexion est +identifiée par quatre données : +

    + +

    +Chaque paquet échangé dans le cadre d'une connexion rappelle ces quatre +références. On peut remarquer que sur un ordinateur donné, le même port peut +participer à plusieurs connexions. De fait, ça arrive assez souvent, mais +jamais aux deux extrémités à la fois (même si rien ne l'interdit +fondamentalement). +

    + +

    +Les connexions TCP sont toujours doubles : dans un sens et dans l'autre +entre les mêmes extrémités. +

    + +

    +Du point de vue du programme, une connexion est un objet sur lequel on peut +lire et écrire des données. Sous Unix, ça se présente presque de la même +manière qu'un fichier. Le système d'exploitation sait à quel programme +chaque connexion active « appartient », et fait tout le nécessaire. +

    + +

    Clients et serveurs

    + +

    +Comme dans toutes relations de couple, aux débuts d'une connexion, il faut +que l'un des deux fasse le premier pas, alors que l'autre se contente +d'attendre. En informatique, l'extrémité de la future connexion qui attend +s'appelle un serveur (eh oui, c'est le contraire du restaurant, +où le serveur vient à votre table prendre la commande), tandis que +l'extrémité qui fait le premier pas (qui envoit le premier paquet) s'appelle +le client. Après l'échange de quelques paquets (trois, avec TCP) +pour vérifier qu'il y a bien un serveur au port demandé, pour se mettre +d'accord sur la taille des paquet, etc., la connexion est établié. +

    + +

    +Une fois que c'est fait, il n'y a du point de vue du réseau plus de +différence entre les deux extrémités. Cependant, le dialogue entre les +programmes ne sera probablement pas symétrique : une fois une connexion +établie entre votre navigateur web et +Google, c'est bien votre navigateur web +qui va poser une question à Google et non l'inverse. Il arrive néanmoins que +ça finisse par être symétrique, en particulier dans le cas de dialogue en +direct (avec ytalk par exemple) ou de jeux en réseau sans serveur central. +

    + +

    +L'important est que les deux extrémités se comprennent. Pour ça, elles +doivent encore une fois coder leurs données d'une certaine manière : encore +un protocole. Cette manière n'est d'ailleurs pas la même s'il s'agit de web, +de mail, ou d'autres activités tout aussi passionnantes. +

    + +

    +Les plus attentifs doivent se poser une question : il y a sur l'ordinateur +de Google (dont l'adresse IP est 216.239.59.99) 65535 ports différents, +comment notre navigateur web a-t-il deviné le quel contacter ? La réponse +est simple : le web, c'est sur le port 80. Pourquoi 80 ? C'est comme ça. Les +services importants ont des numéros de port qui leur sont dédiés, l'IANA les +recense. Les +services moins répandus prennent un port plus ou moins au hasard, en +espérant ne pas entrer en conflit avec un autre service, et comme c'est la +même personne qui écrit les programme client et serveur c'est le même qui +est utilisé des deux côtés. +

    + +

    +Sous Unix, il faut des droits spéciaux pour créer un serveur sur un port en +dessous de 1024, ce qui permet d'être sûr, quand on donne son mot de passe à +SSH (port 23) ou à IMAP (port 143), d'être bien en train de parler au +programme autorisé. Au dessus de 1024, c'est libre. Certains se rappellent +peut-être que le serveur web des élèves était +http://www.eleves.ens.fr:8080/. Ceci veut dire +qu'il était sur le port 8080 au lieu du 80 habituel, justepent parce qu'il +aurait fallu des droits supplémentaires pour avoir 80. +

    + +

    +Pour le client, c'est en général plus simple : le programme laisse le +système d'exploitation choisir un port inutilisé. Certains programmes +forcent l'utilisation d'un port en dessous de 1024 pour prouver qu'ils ne +sont pas n'importe quel utilisateur, mais cette pratique tombe en désuétude +au profit de méthodes cryptographiques. +

    + +

    Plus pour nous faciliter la vie

    + +

    Le DNS

    + +

    +Se rappeler les adresses IP, ce n'est pas facile. Et ce sera encore pire +avec IPv6. Mais le problème n'est pas nouveau : on a le même avec les +numéros de téléphone, et pour le résoudre on a inventé l'annuaire. +L'annuaire pour Internet s'appelle le +DNS, et fonctionne bien +entendu en réseau. +

    + +

    +À l'échelle d'un site, ou d'un fournisseur d'accès, il y a un (ou plusieurs) +ordinateur, que tous les autres connaissent par son adresse IP, et sur +lequel tourne un programme qui écoute sur le port 53 et qui se charge de +répondre aux questions du genre « quelle est l'adresse IP de +www.google.com ? ». +

    + +

    +Ce programme n'a en général pas la réponse, mais il a l'adresse d'autres +ordinateurs à qui demander, qui eux-mêmes peuvent ne pas savoir mais avoir +l'adresse d'autres ordinateurs, etc. Le système est hiérarchique. Il y a à +la racine quelques ordinateurs (une douzaine) qui savent qui s'occupe des +.com, qui s'occupe des .org, qui s'occupe des +.fr, etc. Dans le cas des .fr, il y a encore +quelques ordinateurs, gérés par des organismes français (enfin, pas tous), +qui savent à qui s'adresser pour chaque domaine. Et ainsi de suite. +

    + +

    +Par exemple, pour connaître l'adresse de clipper.ens.fr, il +faut commencer par interroger l'un des serveurs racine, par exemple +198.41.0.4, qui répond qui'il ne sait pas, mais que les .fr +sont gérés par 192.93.0.1, 193.51.208.13, et quelques autres. Si on +interroge l'un d'entre eux, on apprend qu'il ne sait pas non plus, mais il +nous informe que ens.fr est géré par 129.199.96.11 (on +reconnaît le 129.199 : c'est un ordinateur de l'ENS) et quelques autres. +Enfin, on interroge 129.199.96.11, et on obtient la réponse, à savoir +129.199.129.1 +

    + +

    +Bien sûr, tous les programmes pour faire ça sont déjà écrits : quand on +programme une nouvelle application réseau, il suffit d'utiliser la bonne +fonction de la bibliothèque standard. +

    + +
    +Auteur : Nicolas George. +Dernière modification le . +
    + + +