
                                 Modems-HOWTO

Jean Michel VANSTEENE <vanstee@worldnet.net>

   13 Fvrier 1996
     _________________________________________________________________

   _Le modem est devenu aujourd'hui un produit  la mode. Que ce soit
   pour l'accs  Internet ou pour se connecter chez un particulier qui
   laisse bnvolement sa machine disponible, il faut un modem. Or, cet
   appareil, d'apparence fort simple, cache des choses trs sophistiques
   et son emploi peut engendrer bien des soucis. J'ai constat d'ailleurs
   que bon nombre d'utilisateurs se posaient des questions  son propos.
   (Et ceux qui ne s'en posent pas ont parfois des problmes qu'ils
   seraient aptes  rsoudre par eux-mme, s'ils connaissaient un peu son
   fonctionnement.) Ce document n'est ni un HOWTO ni une FAQ, ce qui est
    priori inhabituel pour un document Linux. J'ai longuement rflchi
   avant de me lancer dans cette aventure. Parmi mes priorits, la
   premire a t d'tre clair et de ne pas tomber dans le genre cours
   magistral... Le but de ce document est en fait d'claircir un peu des
   notions dont on a entendu parler : bande passante, bits/seconde, baud,
   modulation, interface srie, connexions  vingt-huit-huit ... Aprs
   avoir lu ce document, de deux choses l'une : soit vous vous dites
   c'est imbitable, et l vous sautez sur votre courrier- prfr pour
   m'engueu... me le dire, soit vous pensez que ca vous a apport
   quelque-chose et l, vous sautez sur votre courrier-... pour me le
   dire. En tout cas, toute remarque sera la bienvenue, comme d'habitude._
     _________________________________________________________________

1. Introduction

   La communication a toujours t, est et sera toujours un change de
   signaux entre un metteur et un rcepteur. Afin d'avoir les ides
   claires sur ce que nous allons aborder, dcomposons les diffrentes
   tapes de la communication. Le meilleur modle que nous allons prendre
   est l'homme qui l'utilise depuis fort longtemps.

   _Premire tape _: prenons un homme, bien ras de prfrence, propre
   et prt  se rendre au travail. Justement il a un mot  dire  sa
   femme avant de partir. C'est l'information  transmettre.

   _Deuxime tape _: comment la transmettre. Si elle est l, il crie
   (bon, il parle), sinon il crit le message sur un bout de papier.
   Notre homme est donc capable (voyez-vous a, il est  peine 7h30 du
   matin !) de coder son information en fonction de la manire dont il
   transmet son message.

   Pour communiquer, nous utilisons des lments de base dont l'ensemble
   forme l'alphabet. Une succession de ces lments dfinit un
   vocabulaire. En fait il s'agit ni plus ni moins que d'un code,
   complexe certes, mais comprhensible par tous ceux qui l'adoptent.
   Moins il est ambigu, plus il est prcis. (Vous pouvez essayer de
   donner trois sens diffrents  cette phrase pour comprendre que notre
   langue est parfois ambigu : il est normment bte .) Pour
   s'exprimer, il est ensuite capable de dcouper une suite de mots
   (lments continus) en phonmes (lments discontinus), que le
   rcepteur saura rassembler.

   En informatique, l'information de base est _binaire_, donc code sur
   deux valeurs logiques que l'on note habituellement 0 et 1. C'est le
   code sans doute le plus lmentaire qui soit. Aussi il existe un
   certain nombre de codes intermdiaires. Nous citerons par exemple le
   code ASCII, permettant de coder les lettres et chiffres.

   _Troisime tape _: sa femme dcouvre le message (ou l'entend). Elle
   est capable de le reconstituer. Les lettres (respectivement les
   phonmes) forment des mots qui forment des phrases qui forment le
   message. Ouf ! On y est.

1.1 Rsumons un peu

   _Dcoupage horizontal_. La communication n'est possible que s'il
   existe un code commun.  tout niveau il faut s'assurer non seulement
   que le code employ a un sens, mais en plus qu'il a le mme pour
   l'metteur et le rcepteur. On parle alors de _protocole_. Au niveau
   le plus bas, un signal est utilis comme un moyen de communication. Il
   transporte en effet un message sous une forme particulire appel
   _codage_ ou _modulation_. Un signal a une nature physique et un modle
   mathmatique. Nous nous tendrons davantage sur sa nature que sur le
   modle qui, bien qu'intressant, nous amnerait trop loin. Le signal
   s'appuie sur un support.

   _Dcoupage vertical_. De l'ide au code employ : plusieurs niveaux de
   traitement sont utiliss pour transformer un message complexe en
   lments plus simples aptes  tre vhiculs et compris par une entit
   homologue.

   Or s'il y a un signal, il faut forcment un support de transmission,
   permettant de le vhiculer d'un point  un autre. Nous verrons cela un
   peu plus loin. Celui qui nous intresse concerne les transmissions
   tlphoniques.

   Voici donc jetes les bases de la communication. Nous allons
   maintenant claircir un peu tout cela dans les diffrentes parties qui
   vont suivre. La premire tape consiste  consolider les bases sur les
   signaux, ensuite nous verrons leur transmission.

2. Un peu de thorie du signal...

   La voix est un bon exemple de signal permettant de vhiculer une
   information. Ce signal est caractris par sa _bande passante_,
   c'est--dire le domaine de frquences sur lequel elle peut s'tendre.
   En gnral cette bande est continue et comprise entre 30 et 15000 Hz.
   Ce signal est de type sinusodal.

   Sans entrer dans des dtails mathmatiques, disons qu'un signal est
   compos d'une frquence principale et d'harmoniques. Il est possible
   d'en donner une reprsentation mathmatique grce aux sries de
   Fourier, mais nous n'irons pas plus loin. Disons simplement que ce
   signal est appel signal "analogique", parce qu'il peut prendre
   n'importe quelle valeur de faon continue entre deux instants : le
   signal est "modul".

2.1 Les supports de transmission

   Un signal quel qu'il soit, n'a d'intrt que s'il peut tre
   transport. Il faut savoir qu'un systme de transmission n'est jamais
   en mesure d'mettre des signaux sans leur faire subir de
   dformations : selon leur nature, on parle de distorsion,
   d'affaiblissement, de diaphonie ... Comme nous le verrons plus loin,
   les lignes tlphoniques ne font pas exception  cette rgle.

   Chaque type de support est caractris entre autres par son aptitude 
   transmettre un signal plus ou moins fidlement. De nombreux supports
   sont utiliss en transmission de donnes : les supports avec guide
   physique (cbles, fibres, ...) et les supports sans guide physique
   (ondes radio, ondes lumineuses). Pour donner une ide, de la qualit
   des supports, disons que les cbles lectriques  paires torsades
   sont les moins fiables, suivis par les cbles coaxiaux. Les fibres
   optiques offrent actuellement le meilleur compromis
   fiabilit/performance.

3. Les tlcommunications analogiques et numriques

3.1 Les tlcommunications analogiques

   C'est un mode de communication utilis depuis trs longtemps notamment
   dans la technologie tlphonique. Il s'agit en effet d'une activit
   beaucoup moins consommatrice de ressources, tant financires que
   technologiques que la transmission numrique. On n'est pas tout  fait
   prt  pouvoir s'en passer.

3.2 Le signal tlphonique

    l'origine, le tlphone a t conu pour transmettre la voix.
   Malheureusement, il n'est pas possible, tant donn le support
   utilis, de vhiculer le signal complet, c'est--dire l'ensemble des
   frquences le constituant. Le domaine de frquences (on parle de
   largeur de bande) que peuvent transmettre les lignes tlphoniques est
   officiellement compris entre 300 et 3400 hertz

     Les _codecs_ (codeurs-dcodeurs) modernes utiliss dans les
     centraux tlphoniques actuels ont une bande passante de l'ordre de
     200  3700 Hz et la qualit des lignes des abonns s'en trouve
     gnralement amliore.

   . On applique donc au signal de dpart un _filtre passe-bande_ qui
   restreint l'espace de frquence attribu  la transmission du signal
   sur cette liaison. Ceci correspond heureusement  90% de nettet de la
   voix.

   Selon le principe bien admis que tout traitement a un cot, le plus
   simple et le moins coteux en tlcommunications est de transmettre le
   signal avec le moins de transformations possible. C'est bien ce qui se
   passe pour la voix par tlphone. Les seules transformations sont
   d'ordre analogique comme l'amplification par exemple.

3.3 Les tlcommunications numriques

   Nous avons dj voqu prcdemment que le fonctionnement de nos chers
   ordinateurs tait fond sur la seule information binaire. Celle-ci est
   reprsente, ds lors qu'il s'agit de la visualiser (oscilloscope) ou
   de la transporter, par un signal rectangulaire  deux niveaux.

   Pour transporter un tel signal, le plus simple et le moins coteux
   consiste  lui faire subir le moins de traitement possible, voire  le
   transporter tel quel. On imagine aisment que pour transmettre ce
   signal sur un support, il suffise de dfinir deux signaux lectriques
   reprsentant les niveaux logiques 0 et 1. De plus ce type de
   transmission offre des performances considrablement suprieures  la
   transmission analogique, ceci pour deux raisons.

   La premire est un faible taux d'erreurs. En effet, alors qu'en
   transmission numrique, les signaux sont transmis avec des tensions
   d'amplitude variable, en transmission numrique le nombre de niveaux
   est limit. Les signaux parasites s'infiltrant dans un signal
   analogique sont donc trs difficiles  supprimer et engendrent des
   erreurs. En transmission numrique, les dfauts sont plus facilement
   reprables et les quipements rgnrent plus facilement un signal
   parasit ou affaibli.

   La deuxime raison tient au fait que l'on sait mieux traiter une
   information numrique. Ainsi, en utilisant les mthodes de
   multiplexage, de compression, l'acheminement des donnes se fait
   beaucoup plus rapidement. De plus le cot du matriel de traitement
   diminue considrablement.

3.4 Alors pourquoi l'analogique ?

   Cette question est bien entendu la premire que l'on se pose
   maintenant. La rponse tient en quelques mots : essentiellement pour
   des raisons financires. Lorsque les ordinateurs sont organiss en
   petits groupes ferms, l'infrastructure  mettre en place pour les
   relier est bien sr numrique. Mais ds lors que les communications
   s'tablissent sur de grandes distances, elles doivent empreinter
   l'infrastructure existante, qui est analogique. L'volution se fait
   lentement vers le tout numrique, Numris en est l'exemple prometteur.

3.5 De l'analogique au numrique et rciproquement

   Puisqu'il faut s'adapter  un monde fait de numrique et d'analogique,
   il faut savoir passer de l'un  l'autre. C'est essentiellement ce qui
   va se passer avec les modems. Faisons d'abord un point rapide sur les
   mthodes de conversion entre l'analogique et le numrique.

  De l'analogique au numrique

   L'information de dpart est reprsente par un signal qui, si on le
   transforme en tensions lectriques, peut prendre une infinit de
   valeurs (dans un intervalle fini, heureusement !) entre deux instants.
   Pour le transcrire dans un monde fait d'un nombre limit de niveaux
   significatifs, il faut le coder. Un des principes de codage les plus
   simples consiste  prlever  intervalle rgulier la valeur de la
   tension, puis de la reprsenter en binaire sur 7 ou 8 bits. Le
   prlvement est usuellement appel _chantillonnage_ et la frquence
   d'chantillonnage correspond au nombre d'chantillons prlevs par
   seconde. Un codeur-dcodeur prlve en gnral 8000 chantillons par
   seconde.

  Du numrique  l'analogique

   A l'inverse, la transformation d'une information numrique en
   analogique consiste  moduler un signal de base en fonction de cette
   information. C'est le rle du modulateur-dmodulateur (modem).

   Considrons maintenant ce signal de base. S'agissant d'un signal
   analogique, c'est donc une sinusode dont la frquence peut varier,
   dans le cas qui nous intresse, de 1000  2000 hertz. C'est la
   porteuse. La modulation de ce signal va consister ensuite  en faire
   varier un ou plusieurs paramtres : la _phase_, _l'amplitude_ ou la
   _frquence_.

   La modulation d'amplitude consiste  modifier l'amplitude de la
   porteuse, selon l'information binaire  transmettre. Par exemple une
   valeur de l'amplitude est attribue au 0 et une autre au 1.

   La modulation de frquence correspond  la mme notion, mais ici les
   deux valeurs sont reprsentes par des frquences diffrentes.

   Enfin, la modulation de phase, consiste  faire varier la phase de la
   porteuse, de 45, 135, 225 ou 315 degrs par exemple.

   La _rapidit de modulation_ caractrise la vitesse  laquelle ces
   changements s'effectuent. C'est la caractristique essentielle qui
   permet de dfinir la bande passante.

   Arrtons-nous l un instant pour voquer maintenant la notion de
   dbit. Il est en effet facile d'imaginer pouvoir faire varier un
   signal  volont, mais ce serait ne pas tenir compte de certaines
   caractristiques physiques des supports qui nous contraignent
   fortement.

3.6 Des bits et des dbits

   Une des valeurs caractristique des supports de transmission est le
   dbit maximum qu'ils peuvent supporter. Comment s'empcher de comparer
   un support  une route. Le nombre maximum de vhicules qu'une
   autoroute est capable de supporter par heure est trs suprieur 
   celui d'une route dpartementale (mme si vous n'aimez pas les routes
   dpartementales, mais ceci est une autre histoire ...).

   En ce qui concerne les supports de transmission, leur dbit maximum
   est directement li  la largeur de la bande passante. Chose promise,
   chose due, pas trop de mathmatiques ici. Mais il est impossible de ne
   pas parler de deux valeurs fondamentales qui vont permettre de
   comprendre ce qui se passe avec les modems : ce sont le _dbit binaire
   maximum_ et la _capacit de transmission maximale_.

  Le dbit binaire maximum

   Sur un canal de transmission dont la bande passante est B, il est
   montr qu'un signal peut tre entirement reconstitu  l'arrive, si
   on le transmet en prenant 2B chantillons par seconde. Le dbit
   maximum s'crit alors :

        Dmax = 2B

   Si, de plus, le signal peut prendre plus de deux valeurs
   significatives, la formule se gnralise en :

        Dmax = 2B log  V
                     2

   o _V_ correspond au nombre de niveaux significatifs (ou tats) que
   peut prendre le signal : c'est sa _valence_. Par exemple, V=4 si le
   signal peut prendre les valeurs +10 volts, +5 volts, -5 volts et
   -10 volts.

   Ceci pour vous montrer qu'en thorie, sur une ligne tlphonique dont
   la bande passante est de 3000 hertz, le dbit maximum est de 6000
   bits/s avec deux niveaux significatifs (un pour le 0, un pour le 1),
   12000 bits/s avec quatre niveaux, etc. Le dbit maximum est
   thoriquement infini.

  La capacit de transmission maximale

   Un des inconvnients supplmentaires des supports est le _bruit_. Or
   la quantit de bruit prsente sur une ligne s'exprime par rapport  la
   puissance utile du signal transmis : c'est le _rapport signal/bruit_.
   Plus ce rapport est grand, meilleure est la qualit. La capacit de
   transmission maximale est une fonction de ce rapport. Pour une ligne
   tlphonique, cette capacit maximale atteint 30000 bits/s. Cela
   signifie bien que sur ces lignes _on ne peut transmettre  plus de
   30000 bits/s_

     C'est bien une capacit maximale physique,  ne pas confondre avec
     des dbits logiques aprs compression de donnes.

   quels que soient la valence et la frquence du signal. C'est une
   limite au dbit binaire maximum.

4. Le modem

   Le rle du modem est d'adapter les signaux rectangulaires de donnes,
   que le rseau tlphonique ne peut pas transmettre tels quels, en
   signaux transmissibles par ce rseau.

   Il a en fait deux fonctions :

     * un rle d'_adaptation du signal_ aux lignes du rseau utilis,
       c'est--dire de modulation et de dmodulation ;
     * un rle de _dialogue_ avec l'quipement informatique auquel il est
       reli.

   Il tient donc exactement le mme rle fonctionnel qu'une couche de
   communication (TCP, par exemple). Il possde une _interface_
   permettant un dialogue avec un utilisateur se trouvant  un niveau
   suprieur. Ici il s'agit d'une interface physique (y compris
   lectrique). Il communique avec une entit paire (un autre modem)
   selon un _protocole_.

   La structure interne d'un modem est dcrite ci-dessous :


+-----+      +--------+         +-------------+       +----------------+
|  J  +----->| codeur +-------> |  modulateur +------>|                |
|  O  |      +--------+         +-------------+       |                |
|  N  |                                               |                |
|  C  |                                               | transformateur |
|  T  |                                               |                |
|  I  |                                               |     ligne      |
|  O  |      +----------+       +--------------+      |                |
|  N  |<-----+ decodeur |<------+ demodulateur |<-----|                |
+-----+      +----------+       +--------------+      +----------------+

   Les paramtres caractrisant un modem sont :
     * le _dbit d'information_ en bits/s ;
     * le _mode de transmission_ : synchrone ou asynchrone ;
     * le _support de transmission utilis_ : rseau ou ligne
       spcialise ;
     * le _mode de couplage_  la ligne : lectrique ou acoustique.

   Nous aborderons assez rapidement l'ensemble de ces paramtres, selon
   l'utilisation que nous aurons  en faire. La notion de dbit devrait
   maintenant tre assimile.

   Penchons-nous rapidement sur les modes et les supports de transmission
   utiliss. Voyons ensuite plus prcisment le rle d'adaptation du
   signal du modem, puis le dialogue qui met en jeu la jonction et la
   ligne.

   Commenons par dfinir un vocabulaire commun.

4.1 Vocabulaire

   Un _avis_ est une recommandation dicte par l'U.I.T (Union
   Internationale des Tlcommunications), organisation
   intergouvernementale comptente en tlcommunications. Les avis ont
   valeur de norme au sein de l'Europe, puisque les organismes de Tlcom
   nationaux ont encore le monopole. Les recommandations sont issues de
   travaux de diverses commissions d'tudes et sont adoptes lors des
   assembles pleinires (dlai de l'ordre de neuf mois, tant donn
   l'volution rapide des technologies). La section Etat actuel de la
   normalisation dcrit les diffrents avis actuellement en vigueur.

   Dans sa normalisation, l'U.I.T dfinit l'quipement informatique comme
   un _ETTD_ (_quipement Terminal de Traitement de Donnes_) et le modem
   comme un _ETCD_ (_quipement Terminal de Circuit de Donnes_). La
   connexion d'un quipement informatique  un modem, par exemple, est
   ralise par l'intermdiaire d'une _jonction_ ou _interface_.

   On appelle half-duplex (bidirectionnel  l'alternat), une transmission
   s'effectuant dans un seul sens  la fois. On appelle full duplex
   (bidirectionnel simultan), une transmission pouvant s'effectuer dans
   les deux sens en mme temps. Ces transmissions peuvent avoir lieu
   indiffremment sur liaison 2 ou 4 fils.

4.2 Le mode de transmission

   Une transmission de donne est toujours lie au facteur temps. Dans
   les transmissions en srie qui constituent la majorit des
   transmissions, l'metteur et le rcepteur doivent travailler  la mme
   cadence. Dans le mode _synchrone_, ils sont cals sur le mme rythme
   grce  des signaux d'horloge mis avant la transmission. Dans le mode
   _asynchrone_, l'horloge du rcepteur n'est dclenche puis arrte que
   sur rception de bits de dbut et de fin. On les appelle bits de
   _start_ et de _stop_. Ce mode, bien que moins performant, est le plus
   utilis actuellement dans les communications  travers le rseau
   public.

4.3 Le support de transmission ou ligne

   Un modem est utilisable principalement sur deux types de supports : le
   _rseau commut_ ou la _ligne spcialise_. Sur chaque type de
   support, les liaisons peuvent tre  deux ou quatre fils.

   Dans le cas qui nous intresse, le modem est reli au rseau
   tlphonique commut et la liaison est  deux fils. Nous l'utilisons
   soit en half duplex, soit en full duplex selon l'avis (voir dfinition
   de ce mot au paragraphe Vocabulaire.

   A ce propos, rflchissons un peu sur l'utilisation qui est faite
   actuellement du Rseau Tlphonique Commut (appel aussi RTC). Nous
   l'utilisons bien souvent en full duplex sur liaison deux fils (avis
   V.32 ou V.34). Lorsqu'on utilise des lignes  quatre fils, il est
   facile d'imaginer que l'on consacre deux fils  chaque sens de
   transmission. Pour chaque sens, considrant les vitesses de
   modulations maximales possibles, on conoit qu'il faut combiner
   plusieurs types de modulations pour obtenir des dbits maintenant
   courants de l'ordre de 28800 bits/s.

   Or le RTC n'utilise que _deux_ fils. Pour travailler en full-duplex 
   des dbits relativement faibles (en fait jusqu' l'avis V22 bis), il
   tait possible de partager la bande de frquence en deux moitis, une
   pour chaque sens. Avec les dbits employs actuellement ce n'est plus
   possible. Pour travailler en full-duplex  d'importants dbits, il est
   fait appel  des algorithmes complexes dits "de suppression d'cho"
   (proche et lointain). Imaginez le travail  raliser : chaque modem
   reoit les donnes envoyes par le distant mlanges  ses propres
   donnes. Le tout est encore pollu par de l'cho ! Et pour compliquer
   le tout, tout ceci varie dans le temps, et bien sr d'une
   communication  l'autre.

   Vous comprendrez donc qu'avec une telle utilisation du RTC, les modems
   soient continuellement soumis  rude preuve pour ce qui est de la
   correction, ceci pouvant conduire  des dbits variables selon le
   moment.

4.4 L'adaptation du signal

   Nous avons vu aux sections prcdentes ce qu'taient une modulation et
   un dbit. Rassemblons maintenant un peu toutes ces ides. Bien
   souvent, c'est sur ce point dlicat que les esprits se perdent. Nous
   avons vu que la rapidit de modulation est une caractristique
   essentielle de la bande passante. Plus cette rapidit est grande, plus
   la bande passante demande est large. Sur le rseau tlphonique, la
   bande maximale officielle est de 3100 hertz (300  3400 Hz). Dans les
   centraux tlphoniques modernes, elle va jusqu' 3500 Hz.

   Pour bien comprendre le mcanisme de l'adaptation du signal, imaginez
   maintenant que nous disposions d'un appareil lectrique capable
   d'mettre quatre niveaux de tensions possibles.

   Les donnes  transmettre sont quant  elles toujours prsentes sous
   forme d'un flot ininterrompu (ou presque) d'informations binaires.

   L'ide serait de regrouper les bits deux par deux et de les faire
   passer par ce dispositif, afin d'obtenir en sortie le niveau de
   tension correspondant. Un tel signal en sortie est dit de _valence_ 4.
   Plus gnralement, la valence d'un signal est le nombre d'tats qu'il
   peut prendre. Cette transformation du signal est appele _codage_.

   Afin d'adapter ce signal de sortie au support, il faut maintenant le
   moduler, par exemple en choisissant d'effectuer une modulation de
   phase. Etant donne sa valence, nous avons besoin de quatre dcalages
   de phase.

   A chaque fois que _deux_ bits se prsentent, il est possible
   d'effectuer _une_ modulation. A l'autre bout, l'quipement est capable
   de regnrer deux bits. Le dbit (en _bits/s_) est donc bien double de
   la vitesse de modulation (exprime en _bauds_).

  Exemple

   Vous configurez un modem  4800 bits par seconde (V.27 ter). Que
   va-t-il se passer  ? Selon cette norme, le modem va raliser une
   modulation de phase diffrentielle octovalente. Il va donc regrouper
   les bits par trois (_tribits_) pour moduler le signal. La vitesse de
   modulation est donc de 1600 bauds et le dbit de 4800 bits/seconde.
   Pour obtenir un dbit de 9600 bits par seconde, il faudra combiner un
   autre type de modulation. La section Dbits et modulations prsente
   l'essentiel des modulations utilises dans les diffrentes normes
   actuelles.

  Rsum

   L'adaptation du signal peut se faire de trois manires :
     * par une simple modulation approprie ;
     * par un codage puis une modulation ;
     * par un simple codage. Ce type d'adaptation est prsent dans
       certains modems dits "bande de base" qui transmettent directement
       ce code sur la ligne. Ce ne sont pas ceux que nous utilisons
       couramment.

   La rapidit de modulation s'exprime en _bauds_. Elle correspond au
   nombre de changements d'tats du signal par seconde sur la ligne de
   transmission. Une rapidit de _b_ bauds ne correspond pas forcment 
   _b_ bits/s sur la ligne. Une configuration binaire (un ou plusieurs
   bits selon la valence) correspond  un tat du signal.

4.5 Le dialogue

   Intressons-nous maintenant au dialogue entre l'quipement
   informatique et la jonction.

  La jonction srie

   La jonction spcifie les caractristiques mcaniques, lectriques et
   fonctionnelles des signaux. Bien entendu ces jonctions sont
   normalises (voir plus loin les tableaux rcapitulatifs sur l'tat
   actuel de la normalisation) et celle qui nous intresse plus
   particulirement est rfrence sous le nom V.24 par l'U.I.T,
   sensiblement quivalente de la norme RS-232C dfinie par l'E.I.A

     Electronic Industries Association.

   .

   Voici une description des signaux de l'interface V.24 les plus
   couramment utiliss :

+------+-----------+-----------+--------+------+-------------------------------
-+
| Code | No broche | No broche | RS-232 | V.24 |        Signification
 |
|      | ISO  2110 |   DB 9    |        |      |
 |
+------+-----------+-----------+--------+------+-------------------------------
-+
| 101  |     1     |           |  PG    | TP   |  Terre de protection
 |
|      |           |           |        |      |
 |
| 102  |     7     |    5      |  SG    | TS   |  Terre de signalisation
 |
+------+-----------+-----------+--------+------+-------------------------------
-+
| 103  |     2     |    3      |  TD    | ED   |  Emission de donnees
 |
|      |           |           |        |      |
 |
| 104  |     3     |    2      |  RD    | RD   |  Reception de donnees
 |
+------+-----------+-----------+--------+------+-------------------------------
-+
| 105  |     4     |    7      |  RTS   | DPE  |  Demande pour emettre
 |
|      |           |           |        |      |
 |
| 106  |     5     |    8      |  CTS   | PAE  |  Pret a emettre
 |
|      |           |           |        |      |
 |
| 107  |     6     |    6      |  DSR   | PDP  |  Poste de donnees pret
 |
|      |           |           |        |      |
 |
| 108  |    20     |    4      |  DTR   | TDP  |  Terminal de donnees pret
 |
|      |           |           |        |      |
 |
| 109  |     8     |    1      |  DCD   | DS   |  Detection du signal de ligne
 |
+------+-----------+-----------+--------+------+-------------------------------
-+
| 125  |    22     |    9      |  RI    | IA   |  Indicateur d'appel
 |
+------+-----------+-----------+--------+------+-------------------------------
-+

   Brochage des prises ct soudures :

      +-----------+          +---------------------------------------+
      | 5 4 3 2 1 |          | 13 12 11 10 9  8  7  6  5  4  3  2  1 |
      \  9 8 7 6  /          \  25 24 23 22 21 20 19 18 17 16 15 14  /
       `---------'            `-------------------------------------'
          DB 9                              ISO IS 2110

  Le dialogue proprement dit

   Prenons deux postes de travail quips d'un modem chacun et souhaitant
   communiquer.

   Nous passerons rapidement sur le fait que les quipements doivent tre
   relis  la masse. Ceci est ralis grce au circuit 101. D'autre
   part, il est ncessaire de dfinir une rfrence de signalisation :
   c'est le rle du circuit 102.

   Ds sa mise sous tension, l'ETTD prsente un tat logique "1" sur le
   circuit 108 : _Terminal de Donnes Prt_ (DTR). Ds la mise sous
   tension de l'ETCD, celui-ci prsente l'tat _Poste de Donnes Prt_
   (DSR) correspondant  un tat logique "1" sur le circuit 107, assurant
   ainsi que le modem est sous tension et connect  la ligne.

   L'ETTD ayant des donnes  mettre, demande  mettre. Il prsente sur
   la jonction l'information _Demande Pour mettre_ (RTS) sur le circuit
   105. Ceci valide le modulateur de l'ETCD qui met alors une porteuse.

   Du cot appel, l'ETCD dtecte la prsence de la porteuse sur la ligne
   de transmission et le signale  l'ETTD sur le circuit 109 : _Dtection
   de signal_ (porteuse). Les circuits 107 et 108 auront t initialiss
   au pralable comme ci-dessus.

   L'ETTD ayant signal son intention d'mettre sur le circuit 105 reoit
   en rponse peu de temps aprs le signal _Prt  mettre_ (CTS) sur le
   circuit 106.

   Les donnes peuvent ensuite circuler via les circuits 103 et 104.

  Le contrle de flux

   Lorsqu'un metteur met de faon systmatique plus de donnes que le
   rcepteur ne peut en accepter, il se pose alors un problme qui ne
   peut tre rsolu que grce au mcanisme de _contrle de flux_.

   Le contrle de flux peut tre de diffrents types :

   _logiciel_
          Le modem insre des caractres de contrles dans le flot de
          donnes circulant entre l'ETCD et l'ETTD : _XOFF_ pour arrter
          l'envoi et _XON_ pour le reprendre.

   _matriel_
          Gnralement appel _CRTSCTS_, il met en oeuvre l'emploi des
          circuits 105 (RTS) et 106 (CTS). Ce symbole est en fait le nom
          donn  la constante du fichier d'inclusion _termios.h_.

   Le fonctionnement du contrle de flux matriel pendant la transmission
   peut se rsumer ainsi :

   Avant d'mettre, le terminal doit lever son signal RTS (Request To
   Send).  partir de ce moment, le modem, s'il est en mesure d'mettre,
   lve le signal CTS (Clear To Send). Lorsque le buffer du modem est
   plein, le modem descend CTS. Il le remonte ensuite. Dans l'autre sens
   de transmission, lorsque le buffer du terminal est plein, le terminal
   descend RTS.

4.6 La connexion au rseau tlphonique commut

   Maintenant, plusieurs questions se posent, et j'imagine que parmi
   celles que vous vous posez il y a :

     * et sous Linux, le fonctionnement est-il identique ?
     *  quel moment le numro du correspondant a t-il t compos ?
     * mon modem est configur en rception/mission, comment a marche ?
     * etc.

   Nous allons maintenant tenter de rpondre.

   Eclaircissons un peu les choses. Le dialogue que nous venons de voir
   concerne le dialogue _thorique_ ETTD-ETCD et ETCD-ETTD sans se
   soucier d'ventuelles contraintes pouvant provenir du systme
   d'exploitation. Il est toujours vrai. Nanmoins, il ne suffit pas
   forcment pour qu'une communication soit tablie, notamment via le
   RTC. Nous allons tudier ce fonctionnement point par point en prenant
   un bon systme d'exploitation (_Linux_, mais ce n'est qu'un exemple),
   un bon port srie et du courage. Vous continuez ?

   Tout d'abord, nous avons vu qu'une communication commenait toujours
   par le premier change DTR/DSR, ou si vous prfrez 108/107. La monte
   du circuit 108 est ralise sous Linux  l'ouverture du port srie
   (ex.  fopen ("/dev/ttyS0", ...)). Cela se voit trs bien sur un modem
   externe, le voyant TR est allum. La rponse du modem par le circuit
   107 est un peu diffrente. Dans la section Le dialogue proprement dit,
   pour des raisons de simplicit, nous supposions que le modem rpondait
   sur le circuit 107 aprs un dlai trs bref, c'est--dire qu'il tait
   instantanment connect  la ligne.

   Cette rponse est maintenant conditionne par la connexion  la ligne
   via le rseau tlphonique commut.

  Initialisation du modem

   En gnral, c'est juste aprs l'ouverture du port srie que le modem
   est initialis. Cela se fait grce aux commandes AT que nous ne
   dtaillerons pas. Simplement, ces commandes sont envoyes au modem
   (par l'intermdiaire du circuit 103) (ex.  write sur le _descripteur
   de fichier_ du priphrique) et interprtes par lui, lorsque :

     * le circuit 108 est ferm (tat "1") ;
     * le modem est en mode commande.

  tablissement de la connexion

   L'une des commandes d'initialisation permet la composition d'un
   numro. Le modem dcroche (eh oui, ce terme barbare veut dire que
   suite  la fermeture du relais, le central local envoie une tonalit 
   la frquence de 440 Hz :-)) puis compose le numro.

   Sur l'quipement distant, le circuit 108 est galement mont. Le modem
   appel dtecte l'appel. Le signal d'indication d'appel (circuit 125)
   est utilis en interne pour mmoriser l'appel, le modem ralisant donc
   lui-mme la connexion  la ligne. Cette mmorisation est maintenue par
   DTR (jusqu' dconnexion).

    ce moment prcis, le modem appel rpond en validant son modulateur
   qui met la porteuse.

   Le modem appelant, en tat de dcrochage et attendant la porteuse, met
   son metteur en service. Aprs ngociation, le circuit 109 (DCD) est
   alors valid. Du ct de l'appel, le circuit 109 est galement
   valid. La prise de contact est termine. Les circuits 107 (DSR) des
   deux modems sont alors monts en rponse  DTR (asservissement des
   circuits 107-109).

  Rponse automatique ou manuelle

   Du ct de l'appel, il est possible de mettre le modem en mode
   rponse automatique. Il rpond alors tout seul  l'appel aprs
   quelques sonneries. Le registre S0 des modems est gnralement rserv
    la configuration de ce mode.

   Lorsque ce registre contient la valeur 0, (ATS0=0), le modem est en
   rponse manuelle. Sous Linux, c'est assez souvent l'option choisie, et
   c'est le logiciel (notamment _getty_) qui gre l'appel. En effet les
   gestionnaires, de _tty_ tels que _getty_ prfrent prendre en charge
   la connexion : ce n'est pas au modem  rpondre  un appel mais 
   _getty_ lui mme. Lorsque le modem reoit un appel, il met simplement
   le message _RING_ (bien sr, si le mode verbeux est bien configur :
   ATE1). Sur ce, _getty_ envoie la commande ATA qui valide le mode
   rponse et la porteuse.

   Enfin,  la fermeture du port, les signaux 108/107 repassent  l'tat
   _0_.

   Voici  titre d'information l'organigramme d'un appel :


                     +---------------------------------------+
                     | Detection de l'invitation a numeroter |
                     +---------------------------------------+
                                         |
                           +--------------------------+
                           |       Numerotation       |
                           +--------------------------+
                                         |
                        +---------------------------------+
                        | Emission de la tonalite d'appel |
                        +---------------------------------+
                                         |
                           +--------------------------+
         +------- NON -----|   Detection de tonalite  |- OUI
         |                 +--------------------------+    |
         |                    |                            |
         |         +--------------+            +--------------------------+
         |         |   Occupe     |            |     Retour d'appel       |
         |         +--------------+            +--------------------------+
         |           |                                     |
         |           |                         +--------------------------+
         +------------------------- NON -------| Detection arret tonalite |
         |           |                         +--------------------------+
         |           |                                     |
         |           |                      +-------------------------------+
         |           |    +-------- NON ----| Detection tonalite de reponse |
         |           |    |                 +-------------------------------+
         |           |    |                                |
         |           |    |                   +--------------------------+
         |           |    |            +-NON--| Prise de contact aboutie |
         |           |    |            |      +--------------------------+
         |           |    | NO         |                   |
 TIMEOUT |     BUSY  |    | ANSWER     | TIMEOUT           | CONNECT
    +--------------------------+   +-------------+  +--------------------------
+
    |    Appel infructueux     |   | Deconnexion |  | Transmission de donnees
|
    +--------------------------+   +-------------+  +--------------------------
+

  Dconnexion

   Plusieurs mthodes permettent de mettre fin  un appel :

     * _Mode commande._ Mettre le modem en mode commande et envoyer la
       chane +++ATH ;
     * _Perte de porteuse._ L'une des causes est la dconnexion normale
       de l'autre modem ;
     * _Ouverture du circuit 108_ (DTR). C'est la mthode la plus
       couramment employe.

5. Etat actuel de la normalisation

   Voici un tableau rsumant l'tat actuel de la normalisation concernant
   les classes de dbits supports.


+----------+--------------------------------------------+
|   Avis   |              Signification                 |
+----------+--------------------------------------------+
| V.21     | Utilisation sur RTC a 300 bits/s           |
|          |                                            |
| V.22     | Utilisation a 1200 bits/s sur RTC 2 fils   |
|          | full duplex                                |
| V.22 bis | idem a 2400 bits/s                         |
|          |                                            |
| V.23     | Utilisation a 600 ou 1200 bits/s sur RTC   |
|          | ou 1200/75 bits/s                          |
|          |                                            |
| V.25 et  | Composition automatique du numero et/ou    |
| V.25 bis | reponse automatique a un appel sur RTC     |
|          |                                            |
| V.26     | Utilisation a 2400 bits/s sur LS(*) 4 fils |
|          |                                            |
| V.26 bis | Modem 2400 bits/s (1200 en repli) sur RTC  |
|          |                                            |
| V.27     | Modem 4800 bits/s pour LS                  |
|          |                                            |
| V.27 bis | Modem 4800 bits/s (2400 en repli) pour     |
|          | donnees synchrones                         |
|          |                                            |
| V.27 ter | Modem 4800 bits/s (2400 en repli) meme     |
|          | modulation mais pour le RTC                |
|          |                                            |
| V.29     | Modem 9600 bits/s pour LS                  |
|          |                                            |
| V.32     | 9600 bits/s (4800 en repli) duplex 2 fils  |
|          | sur RTC                                    |
|          |                                            |
| V.32 bis | 14400 bits/s                               |
|          |                                            |
| V.34     | 28800 bits/s sur RTC                       |
|          |                                            |
| V.42     | Correction d'erreurs LAP-M et MNP4         |
|          |                                            |
| V.42 bis | Correction d'erreurs +                     |
|          | compression de donnees  MNP5               |
|          |                                            |
| V.54     | Normalise les boucles de tests             |
+----------+--------------------------------------------+

* LS = Ligne Specialisee

5.1  propos du V.42 bis

   Un tout petit mot  propos de la norme V.42 bis qui permet la
   compression de donnes. L'algorithme utilise un dictionnaire de
   chanes de caractres. Lorsqu'une chane apparat, un _token_ est
   transmis qui n'est autre que l'index de cette chane dans le
   dictionnaire. La longueur maximale d'une chane ainsi que la taille
   maximale du dictionnaire sont ngocies au dbut de la connexion. La
   norme V.42 bis autorise une longueur de chane comprise entre 6 et 250
   caractres. La taille minimale du dictionnaire est de 512 entres
   (soit 9 bits pour coder le rang d'un entre). Le taux maximal de
   compression dans ce cas est de :

250 * 8 : 9 = 222.2

   soit un taux de 222:1. Un bon taux de compression est plus une affaire
   de taille mmoire et d'efficacit en fonction des donnes  coder
   qu'une affaire de puissance de processeur.

5.2 Dbits et modulations

     Merci  Christian 'naddy' Weisgerber de son aide pour la rdaction
     de cette partie.

   Voici rassembls dans les tableaux suivants les dbits et les
   modulations correspondantes utiliss dans les principales normes pour
   liaisons tlphoniques  2 fils. Les _normes_ qui ne sont pas cites
   ci-aprs sont peu utilises voire oublies aujourd'hui (liaisons  4
   fils, V.32 terbo, Bell xxx, V.FC, ZyXEL, HST, PEP... certaines n'tant
   d'ailleurs pas de vritables normes).

+------------------------------------------------------------------------+
| Avis             b/s             bauds        modulation     remarques |
+------------------------------------------------------------------------+
| V.21             300             300            FSK                    |
|                                                                        |
| V.22            1200             600            DPSK                   |
|                                                                        |
| V.22bis         2400             600            QAM                    |
|                                                                        |
| V.23            1200            1200            FSK                    |
|                  600             600            FSK                    |
|                   75              75            FSK             [1]    |
|                                                                        |
| V.32            9600            2400            QAM+TCM                |
|                 9600            2400            QAM                    |
|                 4800            2400            QAM                    |
|                                                                        |
| V.32bis        14400            2400            QAM+TCM                |
|                12000            2400            QAM+TCM                |
|                 9600            2400            QAM+TCM                |
|                 7200            2400            QAM+TCM                |
|                 4800            2400            QAM                    |
|                                                                        |
| V.34            (voir tableau suivant)                                 |
|                                                                        |
| V.27ter         4800            1600            DPSK                   |
|                 2400            1200            DPSK                   |
|                                                                        |
| V.29            9600            2400            QAM                    |
|                 7200            2400            QAM                    |
|                 4800            2400            QAM             [2]    |
|                                                                        |
| V.17           14400            2400            QAM+TCM                |
|                12000            2400            QAM+TCM                |
|                 9600            2400            QAM+TCM                |
|                 7200            2400            QAM+TCM                |
+------------------------------------------------------------------------+

[1] Bande de retour.
[2] Pas utilise pour fax.

V.21, V.22, V.22bis, V.32, V.32bis, V.34 sont "full duplex".
V.27ter, V.29, V.17 sont "half duplex" et utilises pour fax.
V.23 est "half duplex" et asymetrique.

Les modulations:

FSK :  Frequency Shift Keying           (modulation de frequence)
DPSK : Differential Phase Shift Keying  (modulation de phase differentielle)
QAM :  Quadrature Amplitude Modulation  (modulation d'amplitude en quadrature)
TCM :  Trellis Coded Modulation         (modulation codee en treillis)

   Dans le cas de l'avis V.34, les choses se compliquent un peu. Cette
   norme a des vitesses de modulation obligatoires (2400, 3000, 3200
   bauds) et des vitesses facultatives (2743, 2800, 3429 bauds). La
   modulation est toujours de type QAM (modulation d'amplitude en
   quadrature) avec une des trois mthodes TCM choisie par le rcepteur.
   Les combinaisons suivantes sont possibles :

+-------------------------------------------------------------+
|         2400    2743    2800    3000    3200    3429  bauds |
|  b/s                                                        |
+-------------------------------------------------------------+
|  2400     x                                                 |
|  4800     x       x       x       x       x       x         |
|  7200     x       x       x       x       x       x         |
|  9600     x       x       x       x       x       x         |
| 12000     x       x       x       x       x       x         |
| 14400     x       x       x       x       x       x         |
| 16800     x       x       x       x       x       x         |
| 19200     x       x       x       x       x       x         |
| 21600     x       x       x       x       x       x         |
| 24000             x       x       x       x       x         |
| 26400                             x       x       x         |
| 28800                                     x       x         |
+-------------------------------------------------------------+

6. Foire Aux Questions

   _Comment puis-je changer facilement un paramtre de mon port srie ?_
          La meilleure faon de le faire, aussi bien manuellement que
          dans un script est de rediriger le priphrique sur l'entre
          standard de _stty_. Exemple :

        stty crtscts < /dev/ttyS0

          activera le contrle de flux matriel sur le premier port srie
          utilis en entre.

        stty -a < /dev/cua0

          affichera tous les paramtres du premier port srie utilis en
          sortie.

   _Pourquoi faut-il configurer CRTSCTS sur le port srie ?_
          Pour grer le contrle de flux matriel. Ce n'est pas une
          obligation, c'est une garantie que l'change de donnes entre
          ETTD et ETCD se fera dans les meilleures conditions. Il faut
          bien entendu que votre modem puisse le faire. Contrairement 
          une ide reue, si vous mettez l'option CRTSCTS dans le fichier
          /etc/gettydefs, il n'est pas ncessaire d'effectuer en plus un
          stty crtscts </dev/port\#. Par contre, il faut le mettre  la
          fois dans la partie _initiale_ et _finale_ de gettydefs. Notez
          qu'il s'agit bien d'un contrle de flux local, et en aucun cas
          il ne faut s'inquiter de ce que fait le correspondant dans ce
          domaine.

   _Je remarque que agetty modifie les droits du fichier /dev/ttyS0,
          bizarre non ?_
          Ca peut effectivement paratre bizarre. Il s'agit en fait de
          l'tablissement d'une _session_ d'utilisation du priphrique.
          Celui-ci prend alors les droits du "chef" de session (_session
          leader_) qui se protge ainsi des utilisations du mme tty par
          d'autres processus.

   _Aurais-je accs  mon tlphone ?_
          Cette question a t rellement pose. Si vous n'avez qu'une
          ligne tlphonique, la rponse est non. De plus, en dcrochant
          le combin tlphonique, vous pertuberez la ligne et le modem
          risque fort de diminuer le dbit (pour le remonter si tout va
          bien ensuite).

   _Lorsque je me connecte chez mon fournisseur, comment mon adresse IP
          est gnre ?_
          Cette question montre  l'vidence une confusion entre toutes
          les notions rseaux. Bien qu'elle ait t pose suite  un
          problme relatifs aux modems, la rponse ne devrait
          thoriquement pas se trouver dans ce document. Nanmoins, le
          chapitre suivant rappelle quelques principes de base des
          empilements protocolaires afin de clarifier un peu tout cela.

7. Un mot sur les empilements protocolaires couramment utiliss

   Un tel titre pourrait faire croire  une erreur de mise en page ou de
   _copier-coller_ tant donn le sujet du document. En fait, il n'en est
   rien.

   La connexion d'une machine  un fournisseur d'accs  Internet met en
   jeu un ensemble de protocoles de communications : TCP, UDP, IP, SLIP,
   PPP, etc. De nombreux utilisateurs souhaitent raliser ce type de
   connexion depuis chez eux, via un modem et rencontrent parfois
   quelques problmes de configuration.

   Il est vident qu'il est  la fois difficile et inutile de tout
   connatre de ces protocoles. Il faut vraiment _tre du mtier_ pour
   bien les connatre, et encore ! Cependant il semble raisonnable de
   penser que la mise en oeuvre de telles connexions, sous Linux par
   exemple, ne peut se faire dans de bonnes conditions sans un minimum de
   connaissances sur l'architecture de communication utilise.

   La lecture du forum _fr.comp.os.linux_ montre parfois une certaine
   confusion dans toutes les fonctions mises en oeuvre et qui engendrent
   invitablement de mauvais paramtrages.

   Les quelques schmas qui suivent donnent une ide de la faon dont
   tous ces _engrenages_ sont placs pour que "a tourne" !

7.1 TCP/UDP/IP

   Ces sigles sont trs frquemment utiliss aujourd'hui et pour cause :
   ces empilements de couches de communications tendent  se rpandre 
   vive allure. C'est  l'origine un ensemble de protocoles dvelopps
   dans le cadre du projet ARPANET, cr par ARPA (aujourd'hui DARPA),
   l'agence pour les projets de recherche avance du Ministre de la
   Dfense des Etats-Unis.

     * TCP

     Transmission Control Protocol
       est une entit de niveau Transport charge de vhiculer des
       donnes de manire fiable entre deux machines souhaitant
       dialoguer ;
     * UDP

     User Datagram Protocol
       est une entit de niveau Transport charge de vhiculer des
       donnes entre deux machines souhaitant dialoguer ;
     * IP

     Internet Protocol
       est une entit de niveau Rseau charge de vhiculer des donnes
       entre deux noeuds d'un rseau.

7.2 PPP/SLIP

   PPP

     Point-to-Point Protocol

   et SLIP

     Serial Line IP

   proposent une mthode d'encapsulation des datagrammes IP sur des
   liaisons point  point, par exemple les lignes asynchrones srie. En
   quelques mots, disons que SLIP est un protocole trs simple, assez
   ancien, datant d'une poque o certains problmes n'taient pas aussi
   importants qu'aujourd'hui : adressage, identification rciproque,
   dtection et correction d'erreurs, compression (extrait du RFC-1055).
   PPP est quant  lui beaucoup plus complet et c'est pourquoi il est
   gnralement prfr par les connaisseurs. Il offre toutes ces
   caractristiques regroupes en trois sous-ensembles :

     * une mthode d'encapsulation de type HDLC sur circuit commut ou
       permanent, synchrone ou asynchrone ;
     * un protocole LCP (Link Control Protocol) permettant d'tablir, de
       configurer et de tester une connexion ;
     * une famille de protocoles NCP (Network Control Protocols) pour
       l'tablissement et la configuration des protocoles rseaux.

   Pour obtenir de plus amples renseignements, vous pouvez vous reporter
   aux documents concernant ces protocoles : _RFC-1055_ (SLIP), _RFC-1171_
   et _RFC-1172_ (PPP) et le _PPP-HOWTO_.

7.3 Mise en oeuvre


+----------------+-------+ +--------+ +--------+ +------+ +-----+
|  Applications  |  FTP  | | TELNET | |  SMTP  | | TFTP | | ... |
+----------------+---+---+ +---+----+ +--------+ +--+---+ +-----+
                     |         |      |             |
+----------------+---+---------+------++------------+-----+
| Transport      |         TCP         |        UDP       |
+----------------+---------------------+------------------+
| Reseau         |                                        |
|                |                    IP                  |
|                |      _____         _____     ______    |
| (interfaces)   |     / eth \       / ppp \   / slip \   |
+----------------+-----------------^---------+------------+
| Liaison        |       LLC       |   PPP   |   SLIP     |
|                |       MAC       |         |            |
+----------------+-------++--------+--------+-+-----------+
                         ||                 | |
+----------------+-------++--------+--------+-+-----------+
| Interfaces     |      LAN        |       V.24           | Fonctionnelle
|                |  (non decrit)   |       V.28           | Electrique
|                |                 |  ISO.2110 (25 br)    | Physique
+----------------+-------++--------+--------+-+----------------+
                         ||                 | |
              Ethernet  +--+              +-+-+-+  Modem
              ==========|  |=====         |\     \-------
              Fddi      +--+              \ \_____\     /
                                           \|_0_0_|    ---------

   La mise en oeuvre de tels protocoles se fait toujours de bas en haut
   (des couches basses aux couches hautes) puisque la demande se fait de
   haut en bas. Prenons un exemple :

   Supposons que vous souhaitiez faire un _ftp_ de chez vous sur
   _ftp.samachine.fr_. L'application _ftp_ demande  TCP d'tablir une
   connexion. Pour qu'elle puisse s'tablir, PPP doit dj fonctionner.
   Pour que PPP fonctionne, le modem doit tre en ligne :

     * premire tape : tablissement d'une communication entre deux
       modems. Cette tape est suppose connue, maintenant ;
     * deuxime tape : mise en route de PPP, avec ventuellement
       authentification ;
     * troisime tape : configuration de l'interface IP correspondante.
       Il s'agit en gnral, sous Linux, de l'interface _ppp0_. Une
       adresse IP pouvant provenir soit d'une configuration locale, soit
       de votre fournisseur, est affecte  l'interface. Dans ce dernier
       cas, celui-ci la fournit lors de l'initialisation PPP. Dans les
       deux cas, c'est le dmon PPP qui configure l'adresse de
       l'interface ;
     * quatrime tape : tablissement d'une connexion TCP, puis
       initialisation de _ftp_. A partir de l, si tout s'est bien pass,
       vous pouvez transfrer vos fichiers.

   Vous pouvez maintenant imaginer le droulement d'une dconnexion.

7.4 Les fichiers de configuration

  Les applications

   Vous comprendrez qu'il est difficile de dcrire ici l'emplacement des
   fichiers de configuration des applications. Prenez soin de lire les
   fichiers README ou INSTALL et d'excuter l'installation correctement.

  Les couches de communication : TCP/UDP/IP

   Pour une configuration standard de votre machine, vous devez compiler
   le noyau avec les options "rseau" suivantes :

Networking support              y

Network firewalls               n
Network aliasing                n
TCP/IP networking               y

IP: forwarding/gatewaying       n
IP: multicasting                n
IP: accounting                  n
IP: PC/TCP compatibility mode   n
IP: Reverse ARP                 n
IP: Disable Path MTU Discovery
        (normally enabled)      n
IP: Disable NAGLE algorithm
        (normally enabled)      n
IP: Drop source routed frames   y
IP: Allow large windows
        (not recommended
        if <16Mb of memory)  n

The IPX protocol                n
... autres protocoles           n

   Le fichier _resolv.conf_ doit contenir :

domain <domaine de votre fournisseur>
nameserver <adresse IP du serveur de nom de votre fournisseur>

8. Le Minitel

   Bien que ce merveilleux appareil commence  prendre de l'ge, il est
   difficile de ne pas en parler un peu, notamment en raison de ses
   spcificits. Pourquoi ne pas envisager en effet de faire un serveur
   Minitel chez vous ou tout simplement de l'utiliser comme terminal.
   Nous nous contenterons ici d'en donner quelques caractristiques
   intressantes dans le cadre d'une utilisation avec Linux.

   Les STUM 1B

     Spcifications Techniques d'Utilisation du Minitel 1B.

   dcrivent l'ensemble des caractristiques des divers modules du
   Minitel 1B :

     * l'cran ;
     * le clavier ;
     * le modem ;
     * la prise pri-informatique.

     A ce propos, je tiens  votre disposition un schma lectronique
     d'un montage permettant l'adaptation RS232-Minitel. Il met en
     oeuvre le circuit MAX232 permettant une parfaite adaptation des
     tensions.

8.1 L'cran

   Le minitel 1B est capable d'afficher 24 lignes de 40 ou 80 caractres
   et 8 couleurs (ou niveaux de gris).

   Le mode 40 colonnes correspond au standard _Videotex_, le mode 80
   colonnes au standard _tl-informatique_. C'est en gnral celui-ci
   que l'on utilisera s'il sert de terminal. Les squences de touches
   permettant de passer d'un mode  l'autre sont indiques dans le
   tableau suivant dans lequel on retrouvera galement quelques squences
   utiles :

+-------------+----------------------------------+
|   Touches   |          Signification           |
+-------------+----------------------------------+
| <Fcnt T> A  | Mode tele-informatique americain |
|             | (pas d'accents)                  |
| <Fcnt T> F  | Mode tele-informatique francais  |
|             | accents (codage particulier)     |
| <Fcnt T> V  | Mode Videotex                    |
+-------------+----------------------------------+
| <Fcnt T> E  | Valide/invalide l'echo local     |
|             |                                  |
| <Fcnt E> P  | Mode page (retour haut de page   |
|             | en fin d'ecran)                  |
| <Fcnt E> R  | Mode rouleau (par defaut)        |
|             |                                  |
| <Fcnt C> M  | Verouillage minuscules (defaut   |
|             | en mode tele-informatique)       |
+-------------+----------------------------------+

8.2 Le clavier

   Il s'agit d'un clavier _AZERTY_ permettant la saisie de la plupart des
   caractres courants pour un terminal. Il est notamment possible de
   verouiller les minuscules grce  la squence <Fcnt C> M. A noter une
   correspondance, dans le mode tl-informatique, de certaines touches :

+-------------+-----------------------------------+
|   Touches   | Correspondance terminal classique |
+-------------+-----------------------------------+
| Sommaire    |   PF1                             |
|             |                                   |
| Annulation  |   PF2                             |
|             |                                   |
| Retour      |   PF3                             |
|             |                                   |
| Repetition  |   PF4                             |
|             |                                   |
| Envoi       |   Enter (Entree)                  |
+-------------+-----------------------------------+

   La touche _Entre_ correspond galement  la squence de touches
   <Ctrl J>

8.3 Le modem

   Le modem du minitel permet des dbits de 300  4800 ou 9600 bits/s

     Tous les modles de minitel n'autorisent pas tous ces dbits.

   . Il est associ  un coupleur travaillant sur 7 bits de donnes, un
   bit de parit paire, un bit de _start_ et un bit de _stop_, soit 10
   bits par caractre. Le tableau suivant donne les squences de touches
   permettant de configurer le modem  ces diffrents dbits.

+-------------+--------------+
|   Touches   |    Debit     |
+-------------+--------------+
| <Fcnt P> 3  |  300 bits/s  |
|             |              |
| <Fcnt P> 1  | 1200 bits/s  |
|             |              |
| <Fcnt P> 4  | 4800 bits/s  |
|             |              |
| <Fcnt P> 9  | 9600 bits/s  |
+-------------+--------------+

   En standard V.23, il est possible de _retourner_ le modem (vitesse
   mission-rception) avec la squence <Fcnt M> R.

8.4 Utilisation du Minitel comme simple terminal

   D'aprs les conseils aviss de _Pierre Ficheux_, voici un exemple de
   configuration permettant de connecter un Minitel :

  Configuration de getty

   Une mthode simple consiste  compiler un _getty_ un peu particulier.
   Les sources se trouvent dans le paquetage _getty_ps-2.0.7h_, en
   gnral disponible par _ftp_ (ftp.ibp.fr) sous
   _/pub/linux/tsx-11/sources/sbin_.

   Il s'agit ensuite de modifier le fichier _tune.h_ comme suit :

#ifdef V23
#define DEF_CFL  (CS7|PARENB)                   /* Pour connexion V.23 */
#else
#define DEF_CFL  (CS8)                  /* default word-len/parity */
#endif /* V23 */

   Puis de compiler l'ensemble avec l'option -DV23 vous donnant un
   fichier excutable _uugetty_ que vous pourrez renommer _uugetty_v23_.
   Ensuite, il faut ajouter quelques entres au fichier
   _/etc/gettydefs_ :

#
# Pour la connexion V.23
#
9600v23# B9600 CS7 PARENB -PARODD CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S login:
 #4800v23

4800v23# B4800 CS7 PARENB -PARODD CLOCAL # B4800 SANE -ISTRIP CLOCAL #@S login:
 #2400v23

2400v23# B2400 CS7 PARENB -PARODD CLOCAL # B2400 SANE -ISTRIP CLOCAL #@S login:
 #1200v23

1200v23# B1200 CS7 PARENB -PARODD CLOCAL # B1200 SANE -ISTRIP CLOCAL #@S login:
 #1200v23

   Enfin, vous modifiez le fichier _inittab_ de faon  dmarrer
   _uugetty_v23_ comme dans l'exemple ci-dessous :

d4:45:respawn:/sbin/uugetty_v23 ttyS1 9600v23

   Une solution diffrente consisterait  seulement modifier
   _/etc/gettydefs_. La mthode prcdente ne fait, finalement, que
   redfinir l'option SANE qui ne comporte pas moins de 16 paramtres, en
   modifiant l'un d'eux : DEF_CFL. Il est possible de la redfinir par
   configuration en la remplaant par l'ensemble des paramtres, sauf CS8
   que l'on remplacera par CS7 PARENB. Les entres de _/etc/gettydefs_
   sont  modifier comme l'exemple ci-aprs :

#
# Pour la connexion V.23
#
9600v23# B9600 CS7 PARENB -PARODD CLOCAL # B9600 ISTRIP CS7 PARENB -PARODD (*)
 CLOCAL BRKINT IGNPAR ICRNL IXON IXANY OPOST ONLCR CREAD HUPCL ISIG ICANON (*)
 ECHO ECHOE ECHOK #@S login: #4800v23

(*) a continuer sur la meme ligne

[reste du ficher]

   Bien que cela puisse paratre lourd, il est prfrable d'utiliser
   cette mthode. On a trop tendance  recompiler des sources pour les
   adapter  trente-six situations alors qu'ils fournissent gnralement
   un niveau de configurabilit extrmement complet et puissant. C'est le
   cas ici. Les sources de _getty_ prvoient d'analyser tous ces
   paramtres, et cela fonctionne parfaitement.

8.5 Utilisation du Minitel pour un accs distant

   Deux cas peuvent se prsenter :

     * soit vous souhaitez ddier votre ligne aux seuls accs Minitel,
       auquel cas il est souhaitable d'envisager de configurer votre
       systme comme ci-dessus. Il faut simplement modifier le fichier
       _/etc/gettydefs_ en remplaant l'option CLOCAL par CRTSCTS dans la
       premire partie (options initiales) et par CRTSCTS HUPCL dans le
       partie suivante (options finales) ;
     * soit vous souhaitez seulement _pouvoir_ utiliser le Minitel comme
       terminal distant, sans que ce soit un accs ddi. Dans ce cas il
       n'y a rien  faire sur votre systme (rien de plus que la
       configuration que vous avez dj d mettre en place : getty,
       gettydefs, inittab, ...). Sur le Minitel, il sera prfrable de le
       configurer en mode tl-informatique (<Fcnt T> F).

9. Un modem particulier: le cble null-modem

   Un cble _null-modem_ est tout simplement un cble inverseur
   permettant de relier ensemble deux ETTD sans passer par
   l'intermdiaire de deux ETCD. Il est conforme aux normes du
   C.C.I.T.T., c'est  dire qu'il simule les diffrents signaux. Son seul
   inconvnient est que la liaison ainsi ralise ne peut dpasser 250
   mtres.

   Voici le schma du cble  raliser :

+------+-------+---------------------------------+------+-------+
| Code | V.24  |     Cablage (No de broche)      | Code | V.24  |
+------+-------+---------------------------------+------+-------+
| 101  |  TP   |    1 o-------------------o 1    | 101  |  TP   |
|      |       |                                 |      |       |
| 102  |  TS   |    7 o-------------------o 7    | 102  |  TS   |
|      |       |                                 |      |       |
| 103  |  ED   |    2 o-------------------o 3    | 104  |  RD   |
|      |       |                                 |      |       |
| 104  |  RD   |    3 o-------------------o 2    | 103  |  ED   |
|      |       |                                 |      |       |
| 105  |  DPE  |    4 o-|               |-o 4    | 105  |  DPE  |
|      |       |        |               |        |      |       |
| 106  |  PAE  |    5 o-|               |-o 5    | 106  |  PAE  |
|      |       |        \        ,------'        |      |       |
|      |       |         -------(---------o 8    | 109  |  DS   |
| 109  |  DS   |    8 o---------'                |      |       |
|      |       |                                 |      |       |
| 107  |  PDP  |    6 o------------------o 20    | 108  |  TDP  |
|      |       |                                 |      |       |
| 108  |  TDP  |   20 o------------------o 6     | 107  |  PDP  |
|      |       |                                 |      |       |
+------+-------+---------------------------------+------+-------+

10. Choix d'un modem

   Si vous tes sur le point d'investir dans un modem, il y a au moins
   trois facteurs dterminants pour vous :

   _Le cot_
          Ce facteur est gnralement le plus important. Vous vous tes
          certainement fix une somme que vous ne pourrez dpasser que
          dans des limites raisonnables (moins de 500 francs environ) et
          moyennant un service supplmentaire non ngligeable. On trouve
           l'heure actuelle d'excellents modems dans une gamme de prix
          de l'ordre de 1000 FF  2000 FF.

   _Le dbit_
          La rponse pourrait tre vague : tout dpend de l'utilisation.
          En fait, il semble que la plupart d'entre vous se connectera 
          Internet et la plupart des fournisseurs proposent dsormais des
          accs  28800 bits/s. Il semble raisonnable d'investir dans un
          tel modem, d'autant plus que leur cot est rarement suprieur 
          2000 FF. Vous pouvez d'ailleurs esprer gagner un peu sur les
          temps de connexions lors de transferts de fichiers ou de
          navigation "WEB".

   _Le type de modem : interne ou externe_
          Pour rpondre rapidement, on pourrait dire que le modem interne
          a, en France, tous les dfauts. Hors de France, il a beaucoup
          de dfauts. C'est un avis, il vaut ce qu'il vaut, mais il
          semble partag par bon nombre d'utilisateurs :

     * le premier dfaut est qu'il est interne et occupe donc un
       emplacement sur le _bus_. En externe le modem est de plus
       facilement transportable d'un PC  un autre, par exemple ;
     * le deuxime est que notre oprateur national demande  ce qu'un
       numro soit "brl" lorsqu'un appel choue plusieurs fois. Une
       fois le numro brl, le modem refuse de le composer. La seule
       solution est alors d'teindre le modem et de recommencer. Au fait,
       comment teignez-vous un modem interne ?
     * le troisime est plutt li au confort. La plupart des modems
       externes possdent en effet des voyants indiquant l'tat de la
       connexion. Il est agrable de constater rapidement que la
       connexion est perdue ou que le transfert est perturb.

   Le seul inconvnient du modem externe est qu'il occupe un port srie.
   De plus il vaut mieux possder un port srie rapide de type 16550A
   (les 16550 sont bogus). Notez cependant que les ports srie de type
   8250 (les anciens) supportent des dbits pouvant aller jusqu' 57600
   bits/s. Contrairement  ce que l'on dit, ils ne sont pas si mauvais
   que cela. Qui est dj mont  des dbits suprieurs ?

11. Quelques chiffres

   Beaucoup d'utilisateurs se posent des questions sur ce qu'ils peuvent
   attendre de leur modem et du cot des communications. Bien souvent, la
   facture surprend tous les deux mois.

11.1 Dbit rel

   Un petit tableau vaut mieux qu'un long discours, voici quelques
   valeurs de dbits rels. Evidemment, il n'est pas tenu compte des
   problmes de lignes, de disponibilit des serveurs qui rduisent
   parfois les taux de transfert effectifs. De plus, les valeurs sont
   indiques sans compression logicielle. En cas de compression, il
   faudra multiplier les valeurs par au plus 2, ce qui est dj
   optimiste.

   Il faut savoir qu'en transmission asynchrone 8 bits, tant donns les
   bits de _start_ et de _stop_, le rendement est d'environ 80%.

+---------------+--------------+-------------------+
| Debit affiche |  Debit reel  |  Ko/s  | Mo/heure |
+---------------+--------------+--------+----------+
|   9600 b/s    |   7680 b/s   |  0,96  |   3,4    |
|               |              |        |          |
|  14400 b/s    |  11520 b/s   |  1,44  |   5,2    |
|               |              |        |          |
|  19200 b/s    |  15360 b/s   |  1,92  |   6,9    |
|               |              |        |          |
|  21600 b/s    |  17280 b/s   |  2,16  |   7,8    |
|               |              |        |          |
|  26400 b/s    |  21120 b/s   |  2,64  |   9,5    |
|               |              |        |          |
|  28800 b/s    |  23040 b/s   |  2,88  |  10,4    |
+---------------+--------------+--------+----------+

11.2 Cots de connexion

   Le meilleur indicateur pour ce genre de calcul est bien entendu France
   Tlcom. Essayons ici de dgager quelques grands chiffres. Les prix
   sont indiques pour un appel  Paris :

+---------------+---------------------------------+
|               |  Prix / heure de connexion      |
+---------------+---------------------------------+
| Appel de :    | Tarif plein |   50%   |   65%   |
+---------------+-----------------------+---------+
|     Paris     |   14,84 F   |  7,42 F |  5,20 F |
|               |             |         |         |
|  Proche       |   22,26 F   | 11,13 F |  7,79 F |
|  Banlieue     |             |         |         |
|               |             |         |         |
|  Province     |  127,20 F   | 63,60 F | 44,52 F |
+---------------+---------------------------------+

   Prix de l'unit Tlcom : 0,742 FF.

12. Envisager d'crire des applications

   Vous avez srement plein d'ides d'applications intressantes, mais
   envisager de contrler une jonction srie vous fait peur ? Voici
   quelques petites indications.

12.1 Et si c'tait simple ?

   Sous Unix, donc sous Linux, les seuls objets manipuls lors des
   entres/sorties sont les _fichiers_. (Tiens, au fait, on aurait
   peut-tre d commencer par l ! Bon, vous le saviez dj, ce n'est pas
   un cours Unix). La jonction srie n'chappe pas  cette rgle et le
   pilote vous la prsente ainsi. Ici, il s'agit d'un (ou plutt deux
   comme on le verra plus loin) fichier particulier, bien sr, puisque se
   cache derrire un pilote (_driver_) en mode caractre, mais la faon
   de raliser les entres sorties est la mme : _open, read, write,
   ioctl, close_. Il y a quand mme quelques petites choses  savoir.

   Le pilote srie s'est enregistr,  l'initialisation du noyau, comme
   un _tty_. Il est donc gr comme un tty classique. Il apporte bien
   entendu quelques caractristiques supplmentaires que nous verrons
   rapidement dans la section concernant la commande _ioctl_. Toujours
   est-il que si vous savez grer un _tty_ sous Unix (commande _stty_),
   vous saurez sans problme grer ce pilote.

  open, close

   La mthode d'ouverture et de fermeture d'un port srie est classique.
   Nanmoins un mcanisme particulier se cache derrire la primitive
   _open_ qui est rapidement dcrit  la section Appels entrants (Dial-in)
   et appels sortants (Call-out) sous Linux.

  read, write

   Rien  signaler de particulier.

  ioctl

   Le contrle de tout systme d'entre/sortie se fait avec la commande
   systme _ioctl_. Elle est souvent masque par des commandes de haut
   niveau (setserial, stty, modemstat, ...), mais elle est leur moteur.

   Selon que vous souhaitez vous adresser aux fonctionnalits classiques
   d'un _tty_ ou aux fonctions spcialises du pilote srie, vous
   utiliserez deux sous-ensembles de commandes diffrentes. Vous les
   retrouverez dans le fichier  inclure _linux/termios.h_. Dcrivons-les
   rapidement (on dborde un tout petit peu du sujet :-)) :

   _TCGETS - TCSETS_
          et quelques drivs avec WAIT, FLUSH... Elles permettent de
          rcuprer (resp. positionner) les attributs standard _tty_ dans
          une structure _termios_ (voir le fichier _linux/termios.h_)

   _TIOCSTTY - TIOCNOTTY_
          permettent de dfinir (resp. annuler) une session d'utilisation
          du _tty_. Ceci est visible car, entre autres choses, une
          consquence est le changement des droits du fichier
          correspondant

Avant:
        crw-rw-rw-   1 root     tty        4,  64 Nov 26 20:47 ttyS0
Apres:
        crw--w--w-   1 root     root       4,  64 Nov 26 20:49 ttyS0

   _TCFLSH et compagnie_
          positionnement d'indicateurs (voir la commande stty)

   _TIOCGSERIAL - TIOCSSERIAL_
          permettent de rcuprer (resp. positionner) les informations
          gnrales dans une (resp.  partir d'une) structure
          _serial_struct_ (voir le fichier _linux/serial.h_) : le type de
          port srie, la ligne, le port, l'irq le port utilis... ni plus
          ni moins ce que fait _setserial_.

   _TIOCMGET - TIOCMSET_
          permettent de rcuprer (resp. positionner) les informations
          plus spcifiques  la jonction proprement dite (dans un entier,
          sous forme de bits positionns selon que l'indicateur
          correspondant est vrai ou faux) :

+------------------------------------------------------------------------------
-------------+
|   //     DSR      RNG       CAR        CTS        //   //    RTS            D
TR         //|
|  //   (Data Set  (Ring)  (Carrier)  (Clear To    //   //   (Request   (Data T
erminal   // |
| //      Ready)                        Send)     //   //     To Send)      Rea
dy)      //  |
+------+----------+-------+----------+-----------+----+----+-----------+-------
--------+----+
 31   9     8         7        6          5        4    3        2          1
          0

12.2 Appels entrants (Dial-in) et appels sortants (Call-out) sous Linux

  Introduction

   Le pilote srie du noyau de Linux propose de grer un mme port srie
    la fois pour les appels entrants et pour les appels sortants
   exploitant ainsi pleinement leur caractristique bi-directionnelle. Il
   offre donc  l'utilisateur deux types de fichiers :

     * /dev/ttyS<n> : sont gnralement utiliss en entre ;
     * /dev/cua<n> : sont gnralement utiliss en sortie.

  Gestion

   Chaque port srie est enregistr deux fois auprs du grant _tty_ :
   une fois en mode _entre_ (ttyS, majeur 4) et une fois en mode _sortie_
   (cua, majeur 5). Voyons rapidement comment le pilote gre ensuite les
   "deux" ports :

     * les ports sries /dev/cua sont grs en mode _non-bloquant_. Leur
       ouverture n'est possible que si la ligne /dev/ttyS correspondante
       n'est pas ouverte et active (sinon errno retourne EBUSY) ;
     * les ports sries /dev/ttyS sont grs en mode bloquant ou
       non-bloquant, c'est donc un peu plus compliqu. Si l'indicateur
       CLOCAL est positionn, l'ouverture en mode _bloquant_ est
       effective si la ligne /dev/cua est libre. Si l'indicateur CLOCAL
       n'est pas positionn, elle est effective si les deux conditions
       suivantes sont runies :
          + la ligne est libre (le /dev/cua correspondant n'est pas
            utilis),
          + la porteuse (circuit 109) a t dtecte.
       Dans ce mode et pendant que l'ouverture est bloque, la ligne
       n'est pas occupe, ce qui signifie qu'une application peut
       toujours effectuer un appel sortant. Si le port est en cours de
       fermeture, l'ouverture choue (EAGAIN).
       L'ouverture en mode non-bloquant, quant  elle, est effective si
       le port n'est pas dj ouvert et actif (sinon errno retourne
       EBUSY)

     Les applications utilisent de plus le mcanisme des fichiers de
     verrouillage garantissant l'unicit d'utilisation de la ressource.
       .

   C'est le mode qu'utilisent beaucoup d'applications comme _getty_ qui
   souhaitent dans un premier temps initialiser la ligne (pour viter des
   instabilits lies aux connexions prcdentes) voire ensuite pour
   initialiser l'quipement (modem). Elles ne s'intressent qu'au fait
   que la ligne soit occupe, en fermeture ou libre. Si celle-ci n'est
   pas libre, l'application se termine et le mcanisme du _respawn_ se
   charge de les relancer.

   Pour la gestion de la connexion proprement dite, l'application _getty_
   (pour prendre un exemple courant) ouvre la ligne, soit en mode
   bloquant si vous laissez le modem en rponse automatique, soit en mode
   non-bloquant si vous souhaitez qu'elle gre activement la connexion.
   Elle est alors en attente bloquante en lecture (sur _read_).

13. Quelques applications intressantes

13.1 Un numroteur

   Cette ide va faire plaisir  _Xavier CAZIN_ : c'est la sienne. Le
   mieux est de le laisser parler :

     En fait, je trouverais trs utile de cliquer sur un bouton pour
     appeler une personne retrouve dans une base de donnes par
     exemple. Surtout si elle se trouve  l'tranger (minimum 12
     chiffres depuis ici). Donc, ce que j'aimerais, ce sont les
     renseignements ncessaires au programmeur pour pouvoir construire
     un frontal qui demande au modem de composer le numro choisi, puis
     affiche un message (si le poste n'est pas occup) du style "Le
     tlphone sonne, prenez le combin". Ces petites choses toutes
     simples demandent de comprendre ce que signifie prendre la ligne et
     la relcher, pour un modem.

   Excellent exercice. Alors avec tout ce que l'on vient de dire, au
   travail :-). En laissant de ct la partie base de donnes,
   l'algorithme  utiliser correspond  _l'organigramme d'un appel_ donn
    titre d'information au chapitre Le modem, auquel il faut rajouter :

     * au pralable, ouvrir le port srie (/dev/cua<n>), le configurer.
       Le mieux est de prendre exemple sur ce que fait _getty_ ;
     * envoyer ensuite les commandes AT d'initialisation puis de
       numrotation (utiliser la fonction chat()) qui fait ceci trs
       bien ;
     * enfin se mettre en lecture sur le port afin de dtecter les
       messages mis par le modem. Le seul problme ici est qu'il sera
       difficile d'attendre certains d'entre-eux (NO ANSWER, TIMEOUT)
       tant donn qu'il faut prvenir l'utilisateur qu'il peut
       dcrocher.

   Par contre les messages NO DIALTONE (modem pas branch), et BUSY sont
   fort intressants et permettent d'informer l'utilisateur
   immdiatement.

13.2 modemstat et compagnie

   Vous trouverez sur les _serveurs ftp_ habituels quelques petits
   programmes permettant d'afficher l'tat de la jonction. Vous pourrez
   vous intresser particulirement  la faon de rcuprer les
   informations (plutt que sur l'interface utilisateur qui est l'exemple
   mme de ce qu'il ne faut pas faire).

/pub/linux/sunsite/system/Serial/modem-stats-1.0.tar.gz
/pub/linux/sunsite/system/Serial/statserial-1.1.tar.gz
/pub/linux/sunsite/system/Serial/modemstat-0.2.tgz

   Un bon point pour statserial aussi simple que bien prsent, en mode
   texte.

13.3 Un dtecteur de signal 109 (CD)

   Lu dans _comp.os.linux.development.apps_ cette demande

     Existe-t-il un utilitaire que je pourrais utiliser dans un
     _shell-script_ et retournant une valeur, disons 1, si le signal
     _Dtection de porteuse_ est mont et 0 sinon ?

   Le message ne dit pas quel en serait l'usage mais peu importe c'est un
   excellent exemple d'utilitaire assez facile  raliser. Voici
   d'ailleurs un exemple de code source possible :
     _________________________________________________________________

------------------------- debut de carrier.c -------------------------
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>

main(int argc, char *argv[])
{
  char *whoami, *device;
  int fd;
  int modem_bits;

  whoami = (whoami = strrchr(argv[0], '/')) ? whoami + 1 : argv[0];

  if (argc != 2) {
    fprintf(stderr, "Usage: %s device-file\n", whoami);
    return(EXIT_FAILURE);
  }

  device = argv[1];

  if ((fd = open(device, O_RDONLY | O_NDELAY)) < 0) {
    fprintf(stderr, "%s: error opening \"%s\": %s\n", whoami, device,
            strerror(errno));
    return(EXIT_FAILURE);
  }

  if (ioctl(fd, TIOCMGET, & modem_bits) < 0) {
    fprintf(stderr, "%s: error getting modem line statuses for \"%s\": %s\n",
            whoami, device, strerror(errno));
    return(EXIT_FAILURE);
  }

  if (modem_bits & TIOCM_CAR) {
    printf("1\n");
    return(EXIT_SUCCESS);
  }

  printf("0\n");
  return(EXIT_FAILURE);
}
------------------------- fin de carrier.c -------------------------
     _________________________________________________________________

   On pourra ensuite l'utiliser dans un _shell_ de la manire suivante :
     _________________________________________________________________

if [ `carrier /dev/modem` -eq 1 ]; then
        ... choses a faire si la porteuse est detectee ...
else
        ... choses a faire s'il n'y a pas de porteuse ...
fi
     _________________________________________________________________

14. Remerciements

   Ce document n'aurait vu le jour sans un certain nombre de gens fort
   sympathiques et plein de bonnes ides appartenant pour la plupart  la
   mailing list de traduction :

   Ren COUGNENC,\\ Xavier CAZIN,\\ Bernard CHOPPY,\\ Franois AUDIBERT\\
   Eric DUMAS,\\ Pierre FICHEUX, \\ Herv MIGNOT, \\ Pierre VASSELLERIE,
   \\ Jacques LAVIGNOTTE, \\ et tous les autres.
