Modems-HOWTO
Jean Michel VANSTEENE <
[email protected]>
13 Fevrier 1996
Le modem est devenu aujourd'hui un produit a la mode. Que ce soit
pour l'acces a Internet ou pour se connecter chez un partic-
ulier qui laisse benevolement sa machine disponible, il faut un modem.
Or, cet appareil, d'apparence fort simple, cache des choses tres
sophistiquees et son emploi peut engendrer bien des soucis. J'ai
constate d'ailleurs que bon nombre d'utilisateurs se posaient des
questions a son propos. (Et ceux qui ne s'en posent pas ont parfois
des problemes qu'ils seraient aptes a resoudre par eux-meme,
s'ils connaissaient un peu son fonctionnement.) Ce document
n'est ni un HOWTO ni une FAQ, ce qui est a priori inhabituel
pour un document Linux. J'ai longuement reflechi avant de me
lancer dans cette aventure. Parmi mes priorites, la premiere a ete
d'etre clair et de ne pas tomber dans le genre cours magistral... Le
but de ce document est en fait d'eclaircir un peu des notions _d_o_n_t
_o_n _a _e_n_t_e_n_d_u _p_a_r_l_e_r : bande passante, bits/seconde, baud,
modulation, interface serie, connexions a
vingt-huit-huit ... Apres avoir lu ce document, de deux choses
l'une : soit vous vous dites _c_'_e_s_t _i_m_b_i_t_a_b_l_e, et la vous sautez
sur votre courrier-e prefere pour m'engueu... me le dire, soit vous
pensez que ca vous a apporte quelque-chose et la, vous sautez sur
votre courrier-e... pour me le dire. En tout cas, toute remarque
sera la bienvenue, comme d'habitude.
11.. IInnttrroodduuccttiioonn
La communication a toujours ete, est et sera toujours un echange
de signaux entre un emetteur et un recepteur. Afin d'avoir les
idees claires sur ce que nous allons aborder, decomposons les
differentes etapes de la communication. Le meilleur modele
que nous allons prendre est l'homme qui l'utilise depuis fort
longtemps.
PPrreemmiieerree eettaappee : prenons un homme, bien rase de preference, propre et
pret a se rendre au travail. Justement il a un mot a dire a sa
femme avant de partir. C'est l'information a transmettre.
DDeeuuxxiieemmee eettaappee : comment la transmettre. Si elle est la, il crie
(bon, il parle), sinon il ecrit le message sur un bout de papier.
Notre homme est donc capable (voyez-vous ca, il est a peine 7h30 du
matin !) de coder son information en fonction de la maniere dont il
transmet son message.
Pour communiquer, nous utilisons des elements de base dont
l'ensemble forme l'alphabet. Une succession de ces elements definit
un vocabulaire. En fait il s'agit ni plus ni moins que d'un code,
complexe certes, mais comprehensible par tous ceux qui
l'adoptent. Moins il est ambigu, plus il est precis. (Vous pouvez
essayer de donner trois sens differents a cette phrase pour
comprendre que notre langue est parfois ambigue : il est
enormement bete .) Pour s'exprimer, il est ensuite
capable de decouper une suite de mots (elements
continus) en phonemes (elements discontinus), que
le recepteur saura reassembler.
En informatique, l'information de base est bbiinnaaiirree, donc codee sur
deux valeurs logiques que l'on note habituellement 0 et 1. C'est
le code sans doute le plus elementaire qui soit. Aussi il existe un
certain nombre de codes intermediaires. Nous citerons par exemple le
code ASCII, permettant de coder les lettres et chiffres.
TTrrooiissiieemmee eettaappee : sa femme decouvre le message (ou l'entend).
Elle est capable de le reconstituer. Les lettres (respectivement
les phonemes) forment des mots qui forment des phrases qui
forment le message. Ouf ! On y est.
11..11.. RReessuummoonnss uunn ppeeuu
DDeeccoouuppaaggee hhoorriizzoonnttaall. La communication n'est possible que s'il existe
un code commun. A tout niveau il faut s'assurer non seulement que le
code employe a un sens, mais en plus qu'il a le meme pour
l'emetteur et le recepteur. On parle alors de _p_r_o_t_o_c_o_l_e. Au
niveau le plus bas, un signal est utilise comme un moyen de
communication. Il transporte en effet un message sous une forme
particuliere appele _c_o_d_a_g_e ou _m_o_d_u_l_a_t_i_o_n. Un signal a une nature
physique et un modele mathematique. Nous nous etendrons davantage sur
sa nature que sur le modele qui, bien qu'interessant, nous
amenerait trop loin. Le signal s'appuie sur un support.
DDeeccoouuppaaggee vveerrttiiccaall. De l'idee au code employe :
plusieurs niveaux de traitement sont utilises pour transformer un
message complexe en elements plus simples aptes a etre vehicules
et compris par une entite homologue.
Or s'il y a un signal, il faut forcement un support de transmission,
permettant de le vehiculer d'un point a un autre. Nous verrons
cela un peu plus loin. Celui qui nous interesse concerne les
transmissions telephoniques.
Voici donc jetees les bases de la communication. Nous allons
maintenant eclaircir un peu tout cela dans les differentes parties
qui vont suivre. La premiere etape consiste a consolider les bases
sur les signaux, ensuite nous verrons leur transmission.
22.. UUnn ppeeuu ddee tthheeoorriiee dduu ssiiggnnaall......
La voix est un bon exemple de signal permettant de vehiculer une
information. Ce signal est caracterise par sa bbaannddee ppaassssaannttee,
c'est-a-dire le domaine de frequences sur lequel elle peut
s'etendre. En general cette bande est continue et comprise
entre 30 et 15000 Hz. Ce signal est de type sinusoidal.
Sans entrer dans des details mathematiques, disons qu'un signal
est compose d'une frequence principale et d'harmoniques.
Il est possible d'en donner une representation mathematique
grace aux series de Fourier, mais nous n'irons pas plus loin.
Disons simplement que ce signal est appele signal "analogique", parce
qu'il peut prendre n'importe quelle valeur de facon continue entre
deux instants : le signal est "module".
22..11.. LLeess ssuuppppoorrttss ddee ttrraannssmmiissssiioonn
Un signal quel qu'il soit, n'a d'interet que s'il peut etre
transporte. Il faut savoir qu'un systeme de transmission n'est
jamais en mesure d'emettre des signaux sans leur faire subir de
deformations : selon leur nature, on parle de distorsion,
d'affaiblissement, de diaphonie ... Comme nous le verrons plus loin,
les lignes telephoniques ne font pas exception a cette regle.
Chaque type de support est caracterise entre autres par son aptitude
a transmettre un signal plus ou moins fidelement. De nombreux
supports sont utilises en transmission de donnees :
les supports avec guide physique (cables, fibres, ...) et les
supports sans guide physique (ondes radio, ondes lumineuses).
Pour donner une idee, de la qualite des supports, disons que
les cables electriques a paires torsadees sont les moins fiables,
suivis par les cables coaxiaux. Les fibres optiques offrent
actuellement le meilleur compromis fiabilite/performance.
33.. LLeess tteelleeccoommmmuunniiccaattiioonnss aannaallooggiiqquueess eett nnuummeerriiqquueess
33..11.. LLeess tteelleeccoommmmuunniiccaattiioonnss aannaallooggiiqquueess
C'est un mode de communication utilise depuis tres longtemps
notamment dans la technologie telephonique. Il s'agit en effet
d'une activite beaucoup moins consommatrice de ressources, tant
financieres que technologiques que la transmission
numerique. On n'est pas tout a fait pret a pouvoir s'en passer.
33..22.. LLee ssiiggnnaall tteelleepphhoonniiqquuee
A l'origine, le telephone a ete concu pour transmettre la
voix. Malheureusement, il n'est pas possible, etant donne le
support utilise, de vehiculer le signal complet, c'est-a-dire
l'ensemble des frequences le constituant. Le domaine de
frequences (on parle de largeur de bande) que peuvent
transmettre les lignes telephoniques est officiellement
compris entre 300 et 3400 hertz (-- Les _c_o_d_e_c_s (codeurs-
decodeurs) modernes utilises dans les centraux telephoniques
actuels ont une bande passante de l'ordre de 200 a 3700 Hz et la
qualite des lignes des abonnes s'en trouve generalement
amelioree.--) . On applique donc au signal de depart un
_f_i_l_t_r_e _p_a_s_s_e_-_b_a_n_d_e qui restreint l'espace de frequence
attribue a la transmission du signal sur cette liaison. Ceci
correspond heureusement a 90% de nettete de la voix.
Selon le principe bien admis que tout traitement a un cout, le plus
simple et le moins couteux en telecommunications est de transmettre
le signal avec le moins de transformations possible. C'est bien ce
qui se passe pour la voix par telephone. Les seules transformations
sont d'ordre analogique comme l'amplification par exemple.
33..33.. LLeess tteelleeccoommmmuunniiccaattiioonnss nnuummeerriiqquueess
Nous avons deja evoque precedemment que le
fonctionnement de nos chers ordinateurs etait fonde sur la seule
information binaire. Celle-ci est representee, des lors qu'il s'agit
de la visualiser (oscilloscope) ou de la transporter, par un signal
rectangulaire a deux niveaux.
Pour transporter un tel signal, le plus simple et le moins couteux
consiste a lui faire subir le moins de traitement possible, voire a
le transporter tel quel. On imagine aisement que pour transmettre
ce signal sur un support, il suffise de definir deux signaux
electriques representant les niveaux logiques 0 et 1. De plus ce
type de transmission offre des performances
considerablement superieures a la transmission analogique,
ceci pour deux raisons.
La premiere est un faible taux d'erreurs. En effet, alors qu'en
transmission numerique, les signaux sont transmis avec des tensions
d'amplitude variable, en transmission numerique le nombre de niveaux
est limite. Les signaux parasites s'infiltrant dans un signal
analogique sont donc tres difficiles a supprimer et
engendrent des erreurs. En transmission numerique, les
defauts sont plus facilement reperables et les
equipements regenerent plus facilement un signal parasite ou
affaibli.
La deuxieme raison tient au fait que l'on sait mieux traiter une
information numerique. Ainsi, en utilisant les methodes de
multiplexage, de compression, l'acheminement des donnees se fait
beaucoup plus rapidement. De plus le cout du materiel de
traitement diminue considerablement.
33..44.. AAlloorrss ppoouurrqquuooii ll''aannaallooggiiqquuee ??
Cette question est bien entendu la premiere que l'on se pose
maintenant. La reponse tient en quelques mots :
essentiellement pour des raisons financieres. Lorsque les
ordinateurs sont organises en petits groupes fermes,
l'infrastructure a mettre en place pour les relier est bien
sur numerique. Mais des lors que les communications s'etablissent
sur de grandes distances, elles doivent empreinter
l'infrastructure existante, qui est analogique. L'evolution se fait
lentement vers le tout numerique, Numeris en est l'exemple
prometteur.
33..55.. DDee ll''aannaallooggiiqquuee aauu nnuummeerriiqquuee eett rreecciipprrooqquueemmeenntt
Puisqu'il faut s'adapter a un monde fait de numerique et
d'analogique, il faut savoir passer de l'un a l'autre. C'est
essentiellement ce qui va se passer avec les modems. Faisons
d'abord un point rapide sur les methodes de conversion entre
l'analogique et le numerique.
33..55..11.. DDee ll''aannaallooggiiqquuee aauu nnuummeerriiqquuee
L'information de depart est representee par un signal qui, si on le
transforme en tensions electriques, peut prendre une infinite de
valeurs (dans un intervalle fini, heureusement !) entre deux
instants. Pour le transcrire dans un monde fait d'un nombre limite
de niveaux significatifs, il faut le coder. Un des principes de
codage les plus simples consiste a prelever a intervalle
regulier la valeur de la tension, puis de la representer
en binaire sur 7 ou 8 bits. Le prelevement
est usuellement appele _e_c_h_a_n_t_i_l_l_o_n_n_a_g_e et la frequence
d'echantillonnage correspond au nombre d'echantillons preleves
par seconde. Un codeur-decodeur preleve en general
8000 echantillons par seconde.
33..55..22.. DDuu nnuummeerriiqquuee aa ll''aannaallooggiiqquuee
A l'inverse, la transformation d'une information numerique en
analogique consiste a moduler un signal de base en fonction de cette
information. C'est le role du modulateur-demodulateur (modem).
Considerons maintenant ce signal de base. S'agissant d'un signal
analogique, c'est donc une sinusoide dont la frequence peut
varier, dans le cas qui nous interesse, de 1000 a 2000 hertz.
C'est la porteuse. La modulation de ce signal va consister ensuite a
en faire varier un ou plusieurs parametres : la pphhaassee,
ll''aammpplliittuuddee ou la ffrreeqquueennccee.
La modulation d'amplitude consiste a modifier l'amplitude de la
porteuse, selon l'information binaire a transmettre. Par exemple
une valeur de l'amplitude est attribuee au 0 et une autre au 1.
La modulation de frequence correspond a la meme notion, mais ici les
deux valeurs sont representees par des frequences differentes.
Enfin, la modulation de phase, consiste a faire varier la phase de
la porteuse, de 45, 135, 225 ou 315 degres par exemple.
La rraappiiddiittee ddee mmoodduullaattiioonn caracterise la vitesse a laquelle
ces changements s'effectuent. C'est la caracteristique
essentielle qui permet de definir la bande passante.
Arretons-nous la un instant pour evoquer maintenant la notion de
debit. Il est en effet facile d'imaginer pouvoir faire varier un
signal a volonte, mais ce serait ne pas tenir compte de certaines
caracteristiques physiques des supports qui nous contraignent
fortement.
33..66.. DDeess bbiittss eett ddeess ddeebbiittss
Une des valeurs caracteristique des supports de transmission est le
debit maximum qu'ils peuvent supporter. Comment s'empecher de
comparer un support a une route. Le nombre maximum de
vehicules qu'une autoroute est capable de supporter par heure est
tres superieur a celui d'une route departementale
(meme si vous n'aimez pas les routes departementales, mais
ceci est une autre histoire ...).
En ce qui concerne les supports de transmission, leur debit maximum
est directement lie a la largeur de la bande passante. Chose promise,
chose due, pas trop de mathematiques 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
ddeebbiitt bbiinnaaiirree mmaaxxiimmuumm et la ccaappaacciittee ddee ttrraannssmmiissssiioonn mmaaxxiimmaallee.
33..66..11.. LLee ddeebbiitt bbiinnaaiirree mmaaxxiimmuumm
Sur un canal de transmission dont la bande passante est B, il
est montre qu'un signal peut etre entierement
reconstitue a l'arrivee, si on le transmet en prenant 2B echantillons
par seconde. Le debit maximum s'ecrit alors :
Dmax = 2B
Si, de plus, le signal peut prendre plus de deux valeurs
significatives, la formule se generalise en :
Dmax = 2B log V
2
ou VV correspond au nombre de niveaux significatifs (ou etats)
que peut prendre le signal : c'est sa vvaalleennccee. 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 theorie, sur une ligne
telephonique dont la bande passante est de 3000 hertz, le debit
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
debit maximum est theoriquement infini.
33..66..22.. LLaa ccaappaacciittee ddee ttrraannssmmiissssiioonn mmaaxxiimmaallee
Un des inconvenients supplementaires des supports est le bbrruuiitt.
Or la quantite de bruit presente sur une ligne s'exprime par rapport
a la puissance utile du signal transmis : c'est le rraappppoorrtt
ssiiggnnaall//bbrruuiitt. Plus ce rapport est grand, meilleure est la
qualite. La capacite de transmission maximale est une
fonction de ce rapport. Pour une ligne telephonique,
cette capacite maximale atteint 30000 bits/s. Cela signifie bien
que sur ces lignes oonn nnee ppeeuutt ttrraannssmmeettttrree aa pplluuss ddee 3300000000 bbiittss//ss (--
C'est bien une capacite maximale physique, a ne pas confondre
avec des debits logiques apres compression de donnees.--) quels
que soient la valence et la frequence du signal. C'est une limite
au debit binaire maximum.
44.. LLee mmooddeemm
Le role du modem est d'adapter les signaux rectangulaires de
donnees, que le reseau telephonique ne peut pas transmettre tels
quels, en signaux transmissibles par ce reseau.
Il a en fait deux fonctions :
+o un role d'aaddaappttaattiioonn dduu ssiiggnnaall aux lignes du reseau utilise,
c'est-a-dire de modulation et de demodulation ;
+o un role de ddiiaalloogguuee avec l'equipement informatique auquel il est
relie.
Il tient donc exactement le meme role fonctionnel qu'une couche de
communication (TCP, par exemple). Il possede une iinntteerrffaaccee
permettant un dialogue avec un utilisateur se trouvant a un niveau
superieur. Ici il s'agit d'une interface physique (y compris
electrique). Il communique avec une entite paire (un autre modem)
selon un pprroottooccoollee.
La structure interne d'un modem est decrite ci-dessous :
+-----+ +--------+ +-------------+ +----------------+
| J +----->| codeur +-------> | modulateur +------>| |
| O | +--------+ +-------------+ | |
| N | | |
| C | | transformateur |
| T | | |
| I | | ligne |
| O | +----------+ +--------------+ | |
| N |<-----+ decodeur |<------+ demodulateur |<-----| |
+-----+ +----------+ +--------------+ +----------------+
Les parametres caracterisant un modem sont :
+o le _d_e_b_i_t _d_'_i_n_f_o_r_m_a_t_i_o_n en bits/s ;
+o le _m_o_d_e _d_e _t_r_a_n_s_m_i_s_s_i_o_n : synchrone ou asynchrone ;
+o le _s_u_p_p_o_r_t _d_e _t_r_a_n_s_m_i_s_s_i_o_n _u_t_i_l_i_s_e : reseau ou ligne
specialisee ;
+o le _m_o_d_e _d_e _c_o_u_p_l_a_g_e a la ligne : electrique ou acoustique.
Nous aborderons assez rapidement l'ensemble de ces parametres, selon
l'utilisation que nous aurons a en faire. La notion de debit devrait
maintenant etre assimilee.
Penchons-nous rapidement sur les modes et les supports de
transmission utilises. Voyons ensuite plus precisement le
role d'adaptation du signal du modem, puis le dialogue qui met en jeu
la jonction et la ligne.
Commencons par definir un vocabulaire commun.
44..11.. VVooccaabbuullaaiirree
Un aavviiss est une recommandation edictee par l'U.I.T (Union
Internationale des Telecommunications), organisation
intergouvernementale competente en telecommunications. Les avis ont
valeur de norme au sein de l'Europe, puisque les organismes de Telecom
nationaux ont encore le monopole. Les recommandations sont
issues de travaux de diverses commissions d'etudes et
sont adoptees lors des assemblees pleinieres (delai de l'ordre
de neuf mois, etant donne l'evolution rapide des technologies). La
section ``Etat actuel de la normalisation'' decrit les differents
avis actuellement en vigueur.
Dans sa normalisation, l'U.I.T definit l'equipement
informatique comme un EETTTTDD (_E_q_u_i_p_e_m_e_n_t _T_e_r_m_i_n_a_l _d_e _T_r_a_i_t_e_m_e_n_t
_d_e _D_o_n_n_e_e_s) et le modem comme un EETTCCDD (_E_q_u_i_p_e_m_e_n_t _T_e_r_m_i_n_a_l
_d_e _C_i_r_c_u_i_t _d_e _D_o_n_n_e_e_s). La connexion d'un equipement informatique
a un modem, par exemple, est realisee par l'intermediaire
d'une jjoonnccttiioonn ou iinntteerrffaaccee.
On appelle half-duplex (bidirectionnel a l'alternat), une
transmission s'effectuant dans un seul sens a la fois. On appelle
full duplex (bidirectionnel simultane), une transmission pouvant
s'effectuer dans les deux sens en meme temps. Ces transmissions
peuvent avoir lieu indifferemment sur liaison 2 ou 4 fils.
44..22.. LLee mmooddee ddee ttrraannssmmiissssiioonn
Une transmission de donnee est toujours liee au facteur temps.
Dans les transmissions en serie qui constituent la majorite
des transmissions, l'emetteur et le recepteur doivent travailler a
la meme cadence. Dans le mode ssyynncchhrroonnee, ils sont cales sur le
meme rythme grace a des signaux d'horloge emis avant la transmission.
Dans le mode aassyynncchhrroonnee, l'horloge du recepteur
n'est declenchee puis arretee que sur reception de bits de debut et de
fin. On les appelle bits de ssttaarrtt et de ssttoopp. Ce mode, bien que
moins performant, est le plus utilise actuellement dans les
communications a travers le reseau public.
44..33.. LLee ssuuppppoorrtt ddee ttrraannssmmiissssiioonn oouu lliiggnnee
Un modem est utilisable principalement sur deux types de supports : le
rreesseeaauu ccoommmmuuttee ou la lliiggnnee ssppeecciiaalliisseeee. Sur
chaque type de support, les liaisons peuvent etre a deux ou
quatre fils.
Dans le cas qui nous interesse, le modem est relie au reseau
telephonique commute et la liaison est a deux fils. Nous
l'utilisons soit en half duplex, soit en full duplex selon l'avis
(voir definition de ce mot au paragraphe ``Vocabulaire''.
A ce propos, reflechissons un peu sur l'utilisation qui est faite
actuellement du Reseau Telephonique Commute (appele 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 a quatre
fils, il est facile d'imaginer que l'on consacre deux fils a chaque
sens de transmission. Pour chaque sens, considerant les
vitesses de modulations maximales possibles, on concoit qu'il faut
combiner plusieurs types de modulations pour obtenir des debits
maintenant courants de l'ordre de 28800 bits/s.
Or le RTC n'utilise que ddeeuuxx fils. Pour travailler en full-duplex
a des debits relativement faibles (en fait jusqu'a l'avis V22
bis), il etait possible de partager la bande de frequence en
deux moities, une pour chaque sens. Avec les debits employes
actuellement ce n'est plus possible. Pour travailler en full-duplex
a d'importants debits, il est fait appel a des algorithmes
complexes dits "de suppression d'echo" (proche et lointain).
Imaginez le travail a realiser : chaque modem recoit les
donnees envoyees par le distant melangees a ses propres donnees.
Le tout est encore pollue par de l'echo ! Et pour
compliquer le tout, tout ceci varie dans le temps, et bien sur d'une
communication a l'autre.
Vous comprendrez donc qu'avec une telle utilisation du RTC, les
modems soient continuellement soumis a rude epreuve pour ce qui est
de la correction, ceci pouvant conduire a des debits
variables selon le moment.
44..44.. LL''aaddaappttaattiioonn dduu ssiiggnnaall
Nous avons vu aux sections precedentes ce qu'etaient une modulation
et un debit. Rassemblons maintenant un peu toutes ces idees. Bien
souvent, c'est sur ce point delicat que les esprits se perdent.
Nous avons vu que la rapidite de modulation est une caracteristique
essentielle de la bande passante. Plus cette rapidite est grande,
plus la bande passante demandee est large. Sur le reseau
telephonique, la bande maximale officielle est de 3100 hertz (300 a
3400 Hz). Dans les centraux telephoniques modernes, elle va jusqu'a
3500 Hz.
Pour bien comprendre le mecanisme de l'adaptation du signal,
imaginez maintenant que nous disposions d'un appareil electrique
capable d'emettre quatre niveaux de tensions possibles.
Les donnees a transmettre sont quant a elles toujours presentees sous
forme d'un flot ininterrompu (ou presque) d'informations binaires.
L'idee 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 vvaalleennccee
4. Plus generalement, la valence d'un signal est le nombre
d'etats qu'il peut prendre. Cette transformation du signal est
appelee ccooddaaggee.
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 donnee sa valence, nous avons
besoin de quatre decalages de phase.
A chaque fois que ddeeuuxx bits se presentent, il est possible
d'effectuer uunnee modulation. A l'autre bout, l'equipement est
capable de regenerer deux bits. Le debit (en bbiittss//ss) est
donc bien double de la vitesse de modulation (exprimee en
bbaauuddss).
44..44..11.. EExxeemmppllee
Vous configurez un modem a 4800 bits par seconde (V.27 ter). Que
va-t-il se passer ? Selon cette norme, le modem va
realiser une modulation de phase differentielle octovalente. Il va
donc regrouper les bits par trois (ttrriibbiittss) pour moduler le
signal. La vitesse de modulation est donc de 1600 bauds et le debit
de 4800 bits/seconde. Pour obtenir un debit de 9600 bits par
seconde, il faudra combiner un autre type de modulation. La section
``Debits et modulations'' presente l'essentiel des
modulations utilisees dans les differentes normes actuelles.
44..44..22.. RReessuummee
L'adaptation du signal peut se faire de trois manieres :
+o par une simple modulation appropriee ;
+o par un codage puis une modulation ;
+o par un simple codage. Ce type d'adaptation est present 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 rapidite de modulation s'exprime en bbaauuddss. Elle correspond au
nombre de changements d'etats du signal par seconde sur la ligne de
transmission. Une rapidite de _b bauds ne correspond pas forcement
a _b bits/s sur la ligne. Une configuration binaire (un ou
plusieurs bits selon la valence) correspond a un etat du signal.
44..55.. LLee ddiiaalloogguuee
Interessons-nous maintenant au dialogue entre l'equipement
informatique et la jonction.
44..55..11.. LLaa jjoonnccttiioonn sseerriiee
La jonction specifie les caracteristiques mecaniques, electriques et
fonctionnelles des signaux. Bien entendu ces jonctions sont
normalisees (voir plus loin les tableaux recapitulatifs sur
l'etat actuel de la normalisation) et celle qui nous
interesse plus particulierement est referencee sous le nom V.24
par l'U.I.T, sensiblement equivalente de la norme RS-232C
definie par l'E.I.A (-- Electronic Industries Association.--)
Voici une description des signaux de l'interface V.24 les plus
couramment utilises :
+------+-----------+-----------+--------+------+--------------------------------+
| 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 cote 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
44..55..22.. LLee ddiiaalloogguuee pprroopprreemmeenntt ddiitt
Prenons deux postes de travail equipes d'un modem chacun et
souhaitant communiquer.
Nous passerons rapidement sur le fait que les equipements doivent
etre relies a la masse. Ceci est realise grace au circuit 101.
D'autre part, il est necessaire de definir une reference de
signalisation : c'est le role du circuit 102.
Des sa mise sous tension, l'ETTD presente un etat logique "1" sur
le circuit 108 : _T_e_r_m_i_n_a_l _d_e _D_o_n_n_e_e_s _P_r_e_t (DTR). Des la mise
sous tension de l'ETCD, celui-ci presente l'etat _P_o_s_t_e _d_e _D_o_n_n_e_e_s
_P_r_e_t (DSR) correspondant a un etat logique "1" sur le circuit 107,
assurant ainsi que le modem est sous tension et connecte a la ligne.
L'ETTD ayant des donnees a emettre, demande a emettre. Il presente
sur la jonction l'information _D_e_m_a_n_d_e _P_o_u_r _E_m_e_t_t_r_e (RTS) sur le
circuit 105. Ceci valide le modulateur de l'ETCD qui emet alors une
porteuse.
Du cote appele, l'ETCD detecte la presence de la porteuse sur la
ligne de transmission et le signale a l'ETTD sur le circuit 109 :
_D_e_t_e_c_t_i_o_n _d_e _s_i_g_n_a_l (porteuse). Les circuits 107 et 108 auront
ete initialises au prealable comme ci-dessus.
L'ETTD ayant signale son intention d'emettre sur le circuit 105
recoit en reponse peu de temps apres le signal _P_r_e_t _A _E_m_e_t_t_r_e
(CTS) sur le circuit 106.
Les donnees peuvent ensuite circuler via les circuits 103 et 104.
44..55..33.. LLee ccoonnttrroollee ddee fflluuxx
Lorsqu'un emetteur emet de facon systematique plus de donnees que
le recepteur ne peut en accepter, il se pose alors un probleme qui
ne peut etre resolu que grace au mecanisme de _c_o_n_t_r_o_l_e _d_e _f_l_u_x.
Le controle de flux peut etre de differents types :
llooggiicciieell
Le modem insere des caracteres de controles dans le flot de
donnees circulant entre l'ETCD et l'ETTD : XXOOFFFF pour arreter
l'envoi et XXOONN pour le reprendre.
mmaatteerriieell
Generalement appele CCRRTTSSCCTTSS, il met en oeuvre l'emploi des
circuits 105 (RTS) et 106 (CTS). Ce symbole est en fait le
nom donne a la constante du fichier d'inclusion
_t_e_r_m_i_o_s_._h.
Le fonctionnement du controle de flux materiel pendant la
transmission peut se resumer ainsi :
Avant d'emettre, le terminal doit lever son signal RTS (Request To
Send). A partir de ce moment, le modem, s'il est en mesure
d'emettre, leve 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.
44..66.. LLaa ccoonnnneexxiioonn aauu rreesseeaauu tteelleepphhoonniiqquuee ccoommmmuuttee
Maintenant, plusieurs questions se posent, et j'imagine que parmi
celles que vous vous posez il y a :
+o et sous Linux, le fonctionnement est-il identique ?
+o a quel moment le numero du correspondant a t-il ete
compose ?
+o mon modem est configure en reception/emission, comment ca marche ?
+o etc.
Nous allons maintenant tenter de repondre.
Eclaircissons un peu les choses. Le dialogue que nous venons de
voir concerne le dialogue _t_h_e_o_r_i_q_u_e ETTD-ETCD et ETCD-ETTD sans se
soucier d'eventuelles contraintes pouvant provenir du systeme
d'exploitation. Il est toujours vrai. Neanmoins, il ne suffit pas
forcement pour qu'une communication soit etablie, notamment via le
RTC. Nous allons etudier ce fonctionnement point par point en
prenant un bon systeme d'exploitation (LLiinnuuxx, mais ce n'est qu'un
exemple), un bon port serie et du courage. Vous
continuez ?
Tout d'abord, nous avons vu qu'une communication commencait toujours
par le premier echange DTR/DSR, ou si vous preferez 108/107. La
montee du circuit 108 est realisee sous Linux a l'ouverture du
port serie (ex. fopen ("/dev/ttyS0", ...)). Cela se voit tres
bien sur un modem externe, le voyant TR est allume. La reponse du
modem par le circuit 107 est un peu differente. Dans la
section ``Le dialogue proprement dit'', pour des raisons de
simplicite, nous supposions que le modem repondait sur le circuit
107 apres un delai tres bref, c'est-a-dire qu'il
etait instantanement connecte a la ligne.
Cette reponse est maintenant conditionnee par la connexion a la
ligne via le reseau telephonique commute.
44..66..11.. IInniittiiaalliissaattiioonn dduu mmooddeemm
En general, c'est juste apres l'ouverture du port serie que le
modem est initialise. Cela se fait grace aux commandes AT que nous
ne detaillerons pas. Simplement, ces commandes sont envoyees au
modem (par l'intermediaire du circuit 103) (ex. write sur le
_d_e_s_c_r_i_p_t_e_u_r _d_e _f_i_c_h_i_e_r du peripherique) et interpretees par
lui, lorsque :
+o le circuit 108 est ferme (etat "1") ;
+o le modem est en mode commande.
44..66..22.. EEttaabblliisssseemmeenntt ddee llaa ccoonnnneexxiioonn
L'une des commandes d'initialisation permet la composition
d'un numero. Le modem decroche (eh oui, ce terme barbare veut
dire que suite a la fermeture du relais, le central local envoie une
tonalite a la frequence de 440 Hz :-)) puis compose le numero.
Sur l'equipement distant, le circuit 108 est egalement monte.
Le modem appele detecte l'appel. Le signal d'indication d'appel
(circuit 125) est utilise en interne pour memoriser l'appel, le
modem realisant donc lui-meme la connexion a la ligne. Cette
memorisation est maintenue par DTR (jusqu'a deconnexion).
A ce moment precis, le modem appele repond en validant son
modulateur qui emet la porteuse.
Le modem appelant, en etat de decrochage et attendant la
porteuse, met son emetteur en service. Apres
negociation, le circuit 109 (DCD) est alors valide. Du cote de
l'appele, le circuit 109 est egalement valide. La prise de contact
est terminee. Les circuits 107 (DSR) des deux modems sont alors
montes en reponse a DTR (asservissement des circuits 107-109).
44..66..33.. RReeppoonnssee aauuttoommaattiiqquuee oouu mmaannuueellllee
Du cote de l'appele, il est possible de mettre le modem en mode
reponse automatique. Il repond alors tout seul a l'appel apres
quelques sonneries. Le registre S0 des modems est generalement
reserve a la configuration de ce mode.
Lorsque ce registre contient la valeur 0, (ATS0=0), le modem
est en reponse manuelle. Sous Linux, c'est assez souvent l'option
choisie, et c'est le logiciel (notamment _g_e_t_t_y) qui gere l'appel.
En effet les gestionnaires, de _t_t_y tels que _g_e_t_t_y
preferent prendre en charge la connexion : ce n'est pas au modem a
repondre a un appel mais a _g_e_t_t_y lui meme. Lorsque le modem
recoit un appel, il emet simplement le message RRIINNGG (bien sur, si
le mode verbeux est bien configure : ATE1). Sur ce, _g_e_t_t_y envoie la
commande ATA qui valide le mode reponse et la porteuse.
Enfin, a la fermeture du port, les signaux 108/107 repassent a
l'etat 00.
Voici a 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 |
+--------------------------+ +-------------+ +--------------------------+
44..66..44.. DDeeccoonnnneexxiioonn
Plusieurs methodes permettent de mettre fin a un appel :
+o MMooddee ccoommmmaannddee.. Mettre le modem en mode commande et envoyer la
chaine +++ATH ;
+o PPeerrttee ddee ppoorrtteeuussee.. L'une des causes est la deconnexion normale
de l'autre modem ;
+o OOuuvveerrttuurree dduu cciirrccuuiitt 110088 (DTR). C'est la methode la plus
couramment employee.
55.. EEttaatt aaccttuueell ddee llaa nnoorrmmaalliissaattiioonn
Voici un tableau resumant l'etat actuel de la normalisation concernant
les classes de debits supportes.
+----------+--------------------------------------------+
| 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
55..11.. AA pprrooppooss dduu VV..4422 bbiiss
Un tout petit mot a propos de la norme V.42 bis qui permet la
compression de donnees. L'algorithme utilise un dictionnaire de
chaines de caracteres. Lorsqu'une chaine apparait, un _t_o_k_e_n est
transmis qui n'est autre que l'index de cette chaine dans le
dictionnaire. La longueur maximale d'une chaine ainsi que la taille
maximale du dictionnaire sont negociees au debut de la connexion.
La norme V.42 bis autorise une longueur de chaine comprise entre 6
et 250 caracteres. La taille minimale du dictionnaire est de 512
entrees (soit 9 bits pour coder le rang d'un entree). 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 memoire et d'efficacite en fonction des donnees a
coder qu'une affaire de puissance de processeur.
55..22.. DDeebbiittss eett mmoodduullaattiioonnss
Merci a Christian 'naddy' Weisgerber de son aide
pour la redaction de cette partie.
Voici rassembles dans les tableaux suivants les debits et les
modulations correspondantes utilises dans les principales normes
pour liaisons telephoniques a 2 fils. Les _n_o_r_m_e_s qui ne sont pas
citees ci-apres sont peu utilisees voire oubliees aujourd'hui
(liaisons a 4 fils, V.32 terbo, Bell xxx, V.FC, ZyXEL, HST, PEP...
certaines n'etant d'ailleurs pas de veritables 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 methodes TCM choisie par le
recepteur. 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 |
+-------------------------------------------------------------+
66.. FFooiirree AAuuxx QQuueessttiioonnss
CCoommmmeenntt ppuuiiss--jjee cchhaannggeerr ffaacciilleemmeenntt uunn ppaarraammeettrree ddee mmoonn ppoorrtt
serie ?" La meilleure facon de le faire, aussi bien
manuellement que dans un script est de rediriger le
peripherique sur l'entree standard de _s_t_t_y. Exemple :
stty crtscts < /dev/ttyS0
activera le controle de flux materiel sur le premier port
serie utilise en entree.
stty -a < /dev/cua0
affichera tous les parametres du premier port serie
utilise en sortie.
PPoouurrqquuooii ffaauutt--iill ccoonnffiigguurreerr CCRRTTSSCCTTSS ssuurr llee ppoorrtt sseerriiee ??
Pour gerer le controle de flux materiel. Ce n'est pas une
obligation, c'est une garantie que l'echange de donnees entre
ETTD et ETCD se fera dans les meilleures conditions. Il faut
bien entendu que votre modem puisse le faire. Contrairement
a une idee recue, si vous mettez l'option CRTSCTS dans le
fichier /etc/gettydefs, il n'est pas necessaire d'effectuer
en plus un stty crtscts </dev/porta la fois dans la partie
_i_n_i_t_i_a_l_e et _f_i_n_a_l_e de gettydefs. Notez qu'il s'agit bien d'un
controle de flux local, et en aucun cas il ne faut
s'inquieter de ce que fait le correspondant dans ce domaine.
JJee rreemmaarrqquuee qquuee aaggeettttyy mmooddiiffiiee lleess ddrrooiittss dduu ffiicchhiieerr //ddeevv//ttttyySS00,,
bizarre non ?" Ca peut effectivement paraitre bizarre. Il
s'agit en fait de l'etablissement d'une _s_e_s_s_i_o_n
d'utilisation du peripherique. Celui-ci prend alors les
droits du "chef" de session (_s_e_s_s_i_o_n _l_e_a_d_e_r) qui se protege
ainsi des utilisations du meme tty par d'autres processus.
AAuurraaiiss--jjee aacccceess aa mmoonn tteelleepphhoonnee ??
Cette question a ete reellement posee. Si vous n'avez qu'une
ligne telephonique, la reponse est non. De plus, en decrochant
le combine telephonique, vous pertuberez la ligne et le
modem risque fort de diminuer le debit (pour le remonter si
tout va bien ensuite).
LLoorrssqquuee jjee mmee ccoonnnneeccttee cchheezz mmoonn ffoouurrnniisssseeuurr,, ccoommmmeenntt mmoonn aaddrreessssee
IIPP
est generee ?" Cette question montre a l'evidence une confusion
entre toutes les notions reseaux. Bien qu'elle ait ete posee
suite a un probleme relatifs aux modems, la reponse ne devrait
theoriquement pas se trouver dans ce
document. Neanmoins, le chapitre suivant rappelle quelques
principes de base des empilements protocolaires afin de
clarifier un peu tout cela.
77.. UUnn mmoott ssuurr lleess eemmppiilleemmeennttss pprroottooccoollaaiirreess ccoouurraammmmeenntt uuttiilliisseess
Un tel titre pourrait faire croire a une erreur de mise en page ou
de _c_o_p_i_e_r_-_c_o_l_l_e_r etant donne le sujet du document. En fait, il n'en
est rien.
La connexion d'une machine a un fournisseur d'acces a Internet met en
jeu un ensemble de protocoles de communications : TCP, UDP, IP,
SLIP, PPP, etc. De nombreux utilisateurs souhaitent
realiser ce type de connexion depuis chez eux, via un modem et
rencontrent parfois quelques problemes de configuration.
Il est evident qu'il est a la fois difficile et inutile de tout
connaitre de ces protocoles. Il faut vraiment _e_t_r_e _d_u _m_e_t_i_e_r pour
bien les connaitre, 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
utilisee.
La lecture du forum _f_r_._c_o_m_p_._o_s_._l_i_n_u_x montre parfois une certaine
confusion dans toutes les fonctions mises en oeuvre et qui
engendrent inevitablement de mauvais parametrages.
Les quelques schemas qui suivent donnent une idee de la facon
dont tous ces _e_n_g_r_e_n_a_g_e_s sont places pour que "ca tourne" !
77..11.. TTCCPP//UUDDPP//IIPP
Ces sigles sont tres frequemment utilises aujourd'hui et pour cause :
ces empilements de couches de communications tendent a se repandre a
vive allure. C'est a l'origine un ensemble de protocoles developpes
dans le cadre du projet ARPANET, cree par ARPA (aujourd'hui DARPA),
l'agence pour les projets de recherche avancee du Ministere
de la Defense des Etats-Unis.
+o TCP (-- Transmission Control Protocol --) est une entite
de niveau Transport chargee de vehiculer des donnees de
maniere fiable entre deux machines souhaitant dialoguer ;
+o UDP (-- User Datagram Protocol--) est une entite de niveau
Transport chargee de vehiculer des donnees entre deux machines
souhaitant dialoguer ;
+o IP (-- Internet Protocol--) est une entite de niveau Reseau
chargee de vehiculer des donnees entre deux noeuds d'un reseau.
77..22.. PPPPPP//SSLLIIPP
PPP (-- Point-to-Point Protocol--) et SLIP (-- Serial Line IP--)
proposent une methode d'encapsulation des datagrammes IP sur
des liaisons point a point, par exemple les lignes asynchrones
serie. En quelques mots, disons que SLIP est un protocole tres
simple, assez ancien, datant d'une epoque ou certains problemes
n'etaient pas aussi importants qu'aujourd'hui : adressage,
identification reciproque, detection et correction d'erreurs,
compression (extrait du RFC-1055). PPP est quant a lui beaucoup
plus complet et c'est pourquoi il est generalement prefere par les
connaisseurs. Il offre toutes ces caracteristiques
regroupees en trois sous-ensembles :
+o une methode d'encapsulation de type HDLC sur circuit commute ou
permanent, synchrone ou asynchrone ;
+o un protocole LCP (Link Control Protocol) permettant d'etablir,
de configurer et de tester une connexion ;
+o une famille de protocoles NCP (Network Control
Protocols) pour l'etablissement et la configuration des
protocoles reseaux.
Pour obtenir de plus amples renseignements, vous pouvez vous
reporter aux documents concernant ces protocoles : RRFFCC--11005555
(SLIP), RRFFCC--11117711 et RRFFCC--11117722 (PPP) et le PPPPPP--HHOOWWTTOO.
77..33.. MMiissee eenn ooeeuuvvrree
+----------------+-------+ +--------+ +--------+ +------+ +-----+
| 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 _f_t_p de chez vous sur
_f_t_p_._s_a_m_a_c_h_i_n_e_._f_r. L'application _f_t_p demande a TCP d'etablir
une connexion. Pour qu'elle puisse s'etablir, PPP doit deja
fonctionner. Pour que PPP fonctionne, le modem doit etre en ligne :
+o premiere etape : etablissement d'une communication
entre deux modems. Cette etape est supposee connue, maintenant ;
+o deuxieme etape : mise en route de PPP, avec
eventuellement authentification ;
+o troisieme etape : configuration de l'interface IP
correspondante. Il s'agit en general, sous Linux, de
l'interface _p_p_p_0. Une adresse IP pouvant provenir soit
d'une configuration locale, soit de votre fournisseur, est
affectee a l'interface. Dans ce dernier cas, celui-ci la
fournit lors de l'initialisation PPP. Dans les deux cas, c'est
le demon PPP qui configure l'adresse de l'interface ;
+o quatrieme etape : etablissement d'une connexion TCP, puis
initialisation de _f_t_p. A partir de la, si tout s'est bien passe,
vous pouvez transferer vos fichiers.
Vous pouvez maintenant imaginer le deroulement d'une
deconnexion.
77..44.. LLeess ffiicchhiieerrss ddee ccoonnffiigguurraattiioonn
77..44..11.. LLeess aapppplliiccaattiioonnss
Vous comprendrez qu'il est difficile de decrire ici l'emplacement
des fichiers de configuration des applications. Prenez soin de
lire les fichiers README ou INSTALL et d'executer
l'installation correctement.
77..44..22.. LLeess ccoouucchheess ddee ccoommmmuunniiccaattiioonn :: TTCCPP//UUDDPP//IIPP
Pour une configuration standard de votre machine, vous devez
compiler le noyau avec les options "reseau" 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
Le fichier _r_e_s_o_l_v_._c_o_n_f doit contenir :
domain <domaine de votre fournisseur>
nameserver <adresse IP du serveur de nom de votre fournisseur>
88.. LLee MMiinniitteell
Bien que ce merveilleux appareil commence a prendre de l'age, il est
difficile de ne pas en parler un peu, notamment en raison de ses
specificites. 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 caracteristiques
interessantes dans le cadre d'une utilisation avec Linux.
Les STUM 1B (-- Specifications Techniques d'Utilisation du Minitel
1B.--) decrivent l'ensemble des caracteristiques des
divers modules du Minitel 1B :
+o l'ecran ;
+o le clavier ;
+o le modem ;
+o la prise peri-informatique. (-- A ce propos, je tiens a votre
disposition un schema electronique d'un montage permettant
l'adaptation RS232-Minitel. Il met en oeuvre le circuit MAX232
permettant une parfaite adaptation des tensions.--)
88..11.. LL''eeccrraann
Le minitel 1B est capable d'afficher 24 lignes de 40 ou
80 caracteres et 8 couleurs (ou niveaux de gris).
Le mode 40 colonnes correspond au standard _V_i_d_e_o_t_e_x, le mode 80
colonnes au standard _t_e_l_e_-_i_n_f_o_r_m_a_t_i_q_u_e. C'est en general
celui-ci que l'on utilisera s'il sert de terminal. Les
sequences de touches permettant de passer d'un mode a l'autre sont
indiquees dans le tableau suivant dans lequel on retrouvera egalement
quelques sequences 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) |
+-------------+----------------------------------+
88..22.. LLee ccllaavviieerr
Il s'agit d'un clavier _A_Z_E_R_T_Y permettant la saisie de la plupart des
caracteres courants pour un terminal. Il est notamment possible de
verouiller les minuscules grace a la sequence <Fcnt C> M.
A noter une correspondance, dans le mode tele-informatique, de
certaines touches :
+-------------+-----------------------------------+
| Touches | Correspondance terminal classique |
+-------------+-----------------------------------+
| Sommaire | PF1 |
| | |
| Annulation | PF2 |
| | |
| Retour | PF3 |
| | |
| Repetition | PF4 |
| | |
| Envoi | Enter (Entree) |
+-------------+-----------------------------------+
La touche _E_n_t_r_e_e correspond egalement a la sequence de touches
<Ctrl J>
88..33.. LLee mmooddeemm
Le modem du minitel permet des debits de 300 a 4800 ou 9600 bits/s
(-- Tous les modeles de minitel n'autorisent pas tous ces
debits.--) . Il est associe a un coupleur travaillant sur 7 bits de
donnees, un bit de parite paire, un bit de _s_t_a_r_t et un bit
de _s_t_o_p, soit 10 bits par caractere. Le tableau suivant donne
les sequences de touches permettant de configurer le modem a
ces differents debits.
+-------------+--------------+
| 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 _r_e_t_o_u_r_n_e_r le modem (vitesse
emission-reception) avec la sequence <Fcnt M> R.
88..44.. UUttiilliissaattiioonn dduu MMiinniitteell ccoommmmee ssiimmppllee tteerrmmiinnaall
D'apres les conseils avises de _P_i_e_r_r_e _F_i_c_h_e_u_x, voici un exemple de
configuration permettant de connecter un Minitel :
88..44..11.. CCoonnffiigguurraattiioonn ddee ggeettttyy
Une methode simple consiste a compiler un _g_e_t_t_y un peu particulier.
Les sources se trouvent dans le paquetage
ggeettttyy__ppss--22..00..77hh, en general disponible par _f_t_p (ftp.ibp.fr) sous
//ppuubb//lliinnuuxx//ttssxx--1111//ssoouurrcceess//ssbbiinn.
Il s'agit ensuite de modifier le fichier _t_u_n_e_._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 executable _u_u_g_e_t_t_y que vous pourrez renommer _u_u_g_e_t_t_y___v_2_3.
Ensuite, il faut ajouter quelques entrees au fichier
_/_e_t_c_/_g_e_t_t_y_d_e_f_s :
#
# 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 _i_n_i_t_t_a_b de facon a demarrer
_u_u_g_e_t_t_y___v_2_3 comme dans l'exemple ci-dessous :
d4:45:respawn:/sbin/uugetty_v23 ttyS1 9600v23
Une solution differente consisterait a seulement modifier
_/_e_t_c_/_g_e_t_t_y_d_e_f_s. La methode precedente ne fait, finalement, que
redefinir l'option SANE qui ne comporte pas moins de 16 parametres,
en modifiant l'un d'eux : DEF_CFL. Il est possible de la
redefinir par configuration en la remplacant par l'ensemble des
parametres, sauf CS8 que l'on remplacera par CS7 PARENB.
Les entrees de _/_e_t_c_/_g_e_t_t_y_d_e_f_s sont a modifier
comme l'exemple ci-apres :
#
# 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 paraitre lourd, il est preferable d'utiliser
cette methode. On a trop tendance a recompiler des sources pour
les adapter a trente-six situations alors qu'ils fournissent
generalement un niveau de configurabilite extremement complet et
puissant. C'est le cas ici. Les sources de _g_e_t_t_y prevoient
d'analyser tous ces parametres, et cela fonctionne parfaitement.
88..55.. UUttiilliissaattiioonn dduu MMiinniitteell ppoouurr uunn aacccceess ddiissttaanntt
Deux cas peuvent se presenter :
+o soit vous souhaitez dedier votre ligne aux seuls acces
Minitel, auquel cas il est souhaitable d'envisager de
configurer votre systeme comme ci-dessus. Il faut simplement
modifier le fichier _/_e_t_c_/_g_e_t_t_y_d_e_f_s en remplacant l'option
CLOCAL par CRTSCTS dans la premiere partie (options
initiales) et par CRTSCTS HUPCL dans le partie suivante
(options finales) ;
+o soit vous souhaitez seulement _p_o_u_v_o_i_r utiliser le Minitel comme
terminal distant, sans que ce soit un
acces dedie. Dans ce cas il n'y a rien a faire sur votre
systeme (rien de plus que la configuration que vous
avez deja du mettre en place : getty, gettydefs, inittab,
...). Sur le Minitel, il sera preferable de le configurer
en mode tele-informatique (<Fcnt T> F).
99.. UUnn mmooddeemm ppaarrttiiccuulliieerr:: llee ccaabbllee nnuullll--mmooddeemm
Un cable _n_u_l_l_-_m_o_d_e_m est tout simplement un cable inverseur permettant
de relier ensemble deux ETTD sans passer par
l'intermediaire de deux ETCD. Il est conforme aux normes du
C.C.I.T.T., c'est a dire qu'il simule les differents signaux. Son
seul inconvenient est que la liaison ainsi realisee
ne peut depasser 250 metres.
Voici le schema du cable a realiser :
+------+-------+---------------------------------+------+-------+
| 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 |
| | | | | |
+------+-------+---------------------------------+------+-------+
1100.. CChhooiixx dd''uunn mmooddeemm
Si vous etes sur le point d'investir dans un modem, il y a au moins
trois facteurs determinants pour vous :
LLee ccoouutt
Ce facteur est generalement le plus important. Vous vous
etes certainement fixe une somme que vous ne pourrez
depasser que dans des limites raisonnables (moins de 500
francs environ) et moyennant un service
supplementaire non negligeable. On trouve a l'heure actuelle
d'excellents modems dans une gamme de prix de l'ordre de 1000 FF
a 2000 FF.
LLee ddeebbiitt
La reponse pourrait etre vague : tout depend de
l'utilisation. En fait, il semble que la plupart d'entre vous se
connectera a Internet et la plupart des fournisseurs proposent
desormais des acces a 28800 bits/s. Il semble raisonnable
d'investir dans un tel modem, d'autant plus que leur
cout est rarement superieur a 2000 FF. Vous pouvez
d'ailleurs esperer gagner un peu sur les temps de connexions
lors de transferts de fichiers ou de navigation "WEB".
LLee ttyyppee ddee mmooddeemm :: iinntteerrnnee oouu eexxtteerrnnee
Pour repondre rapidement, on pourrait dire que le modem interne
a, en France, tous les defauts. Hors de France, il a
beaucoup de defauts. C'est un avis, il vaut ce qu'il vaut,
mais il semble partage par bon nombre d'utilisateurs :
+o le premier defaut est qu'il est interne et occupe donc
un emplacement sur le _b_u_s. En externe le modem est de plus
facilement transportable d'un PC a un autre, par exemple ;
+o le deuxieme est que notre operateur national demande a ce qu'un
numero soit "brule" lorsqu'un appel echoue plusieurs fois.
Une fois le numero brule, le modem refuse de le composer.
La seule solution est alors d'eteindre le modem et de
recommencer. Au fait, comment eteignez-vous un modem
interne ?
+o le troisieme est plutot lie au confort. La plupart des modems
externes possedent en effet des voyants indiquant l'etat
de la connexion. Il est agreable de constater rapidement
que la connexion est perdue ou que le transfert est
perturbe.
Le seul inconvenient du modem externe est qu'il occupe un port
serie. De plus il vaut mieux posseder un port serie rapide de type
16550A (les 16550 sont bogues). Notez cependant que les ports
serie de type 8250 (les anciens) supportent des debits pouvant
aller jusqu'a 57600 bits/s. Contrairement a ce que l'on dit, ils
ne sont pas si mauvais que cela. Qui est deja monte a
des debits superieurs ?
1111.. QQuueellqquueess cchhiiffffrreess
Beaucoup d'utilisateurs se posent des questions sur ce qu'ils
peuvent attendre de leur modem et du cout des communications. Bien
souvent, la facture surprend tous les deux mois.
1111..11.. DDeebbiitt rreeeell
Un petit tableau vaut mieux qu'un long discours, voici quelques
valeurs de debits reels. Evidemment, il n'est pas tenu compte
des problemes de lignes, de disponibilite des serveurs qui
reduisent parfois les taux de transfert effectifs. De plus, les
valeurs sont indiquees sans compression logicielle. En cas de
compression, il faudra multiplier les valeurs par au plus 2, ce qui
est deja optimiste.
Il faut savoir qu'en transmission asynchrone 8 bits, etant
donnes les bits de ssttaarrtt et de ssttoopp, 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 |
+---------------+--------------+--------+----------+
1111..22.. CCoouuttss ddee ccoonnnneexxiioonn
Le meilleur indicateur pour ce genre de calcul est bien entendu
France Telecom. Essayons ici de degager quelques grands
chiffres. Les prix sont indiquees pour un appel a 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'unite Telecom : 0,742 FF.
1122.. EEnnvviissaaggeerr dd''eeccrriirree ddeess aapppplliiccaattiioonnss
Vous avez surement plein d'idees d'applications
interessantes, mais envisager de controler une jonction serie
vous fait peur ? Voici quelques petites indications.
1122..11.. EEtt ssii cc''eettaaiitt ssiimmppllee ??
Sous Unix, donc sous Linux, les seuls objets manipules lors des
entrees/sorties sont les _f_i_c_h_i_e_r_s. (Tiens, au fait, on aurait peut-
etre du commencer par la ! Bon, vous le saviez deja, ce n'est pas un
cours Unix). La jonction serie n'echappe pas a cette regle et le
pilote vous la presente ainsi. Ici, il s'agit d'un (ou plutot deux
comme on le verra plus loin) fichier particulier, bien sur, puisque
se cache derriere un pilote (_d_r_i_v_e_r) en mode caractere, mais la
facon de realiser les entrees sorties est la meme : ooppeenn,,
rreeaadd,, wwrriittee,, iiooccttll,, cclloossee. Il y a quand meme quelques petites
choses a savoir.
Le pilote serie s'est enregistre, a l'initialisation du noyau, comme
un _t_t_y. Il est donc gere comme un tty classique. Il apporte
bien entendu quelques caracteristiques supplementaires que nous
verrons rapidement dans la section concernant la commande
_i_o_c_t_l. Toujours est-il que si vous savez gerer un _t_t_y sous Unix
(commande _s_t_t_y), vous saurez sans probleme gerer ce pilote.
1122..11..11.. ooppeenn,, cclloossee
La methode d'ouverture et de fermeture d'un port serie est
classique. Neanmoins un mecanisme particulier se cache derriere
la primitive ooppeenn qui est rapidement decrit a la section ``Appels
entrants (Dial-in) et appels sortants (Call-out) sous Linux''.
1122..11..22.. rreeaadd,, wwrriittee
Rien a signaler de particulier.
1122..11..33.. iiooccttll
Le controle de tout systeme d'entree/sortie se fait avec la
commande systeme _i_o_c_t_l. Elle est souvent masquee par des commandes de
haut niveau (setserial, stty, modemstat, ...), mais elle est leur
moteur.
Selon que vous souhaitez vous adresser aux fonctionnalites
classiques d'un _t_t_y ou aux fonctions specialisees du pilote serie,
vous utiliserez deux sous-ensembles de commandes differentes.
Vous les retrouverez dans le fichier a inclure _l_i_n_u_x_/_t_e_r_m_i_o_s_._h.
Decrivons-les rapidement (on deborde un tout petit peu du
sujet :-)) :
TTCCGGEETTSS -- TTCCSSEETTSS
et quelques derives avec WAIT, FLUSH... Elles permettent de
recuperer (resp. positionner) les attributs standard _t_t_y dans
une structure _t_e_r_m_i_o_s (voir le fichier _l_i_n_u_x_/_t_e_r_m_i_o_s_._h)
TTIIOOCCSSTTTTYY -- TTIIOOCCNNOOTTTTYY
permettent de definir (resp. annuler) une session
d'utilisation du _t_t_y. Ceci est visible car, entre autres choses,
une consequence 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
TTCCFFLLSSHH eett ccoommppaaggnniiee
positionnement d'indicateurs (voir la commande stty)
TTIIOOCCGGSSEERRIIAALL -- TTIIOOCCSSSSEERRIIAALL
permettent de recuperer (resp. positionner) les informations
generales dans une (resp. a partir d'une) structure
_s_e_r_i_a_l___s_t_r_u_c_t (voir le fichier _l_i_n_u_x_/_s_e_r_i_a_l_._h) : le type de port
serie, la ligne, le port, l'irq le port utilise... ni plus ni
moins ce que fait _s_e_t_s_e_r_i_a_l.
TTIIOOCCMMGGEETT -- TTIIOOCCMMSSEETT
permettent de recuperer (resp. positionner) les informations
plus specifiques a la jonction proprement dite (dans un
entier, sous forme de bits positionnes selon que
l'indicateur correspondant est vrai ou faux) :
+-------------------------------------------------------------------------------------------+
| // DSR RNG CAR CTS // // RTS DTR //|
| // (Data Set (Ring) (Carrier) (Clear To // // (Request (Data Terminal // |
| // Ready) Send) // // To Send) Ready) // |
+------+----------+-------+----------+-----------+----+----+-----------+---------------+----+
31 9 8 7 6 5 4 3 2 1 0
1122..22.. AAppppeellss eennttrraannttss ((DDiiaall--iinn)) eett aappppeellss ssoorrttaannttss ((CCaallll--oouutt)) ssoouuss
LLiinnuuxx
1122..22..11.. IInnttrroodduuccttiioonn
Le pilote serie du noyau de Linux propose de gerer un meme
port serie a la fois pour les appels entrants et pour les appels
sortants exploitant ainsi pleinement leur caracteristique
bi-directionnelle. Il offre donc a l'utilisateur deux types
de fichiers :
+o /dev/ttyS<n> : sont generalement utilises en entree ;
+o /dev/cua<n> : sont generalement utilises en sortie.
1122..22..22.. GGeessttiioonn
Chaque port serie est enregistre deux fois aupres du gerant _t_t_y :
une fois en mode _e_n_t_r_e_e (ttyS, majeur 4) et une fois en mode
_s_o_r_t_i_e (cua, majeur 5). Voyons rapidement comment le pilote
gere ensuite les "deux" ports :
+o les ports series /dev/cua sont geres en mode _n_o_n_-_b_l_o_q_u_a_n_t. Leur
ouverture n'est possible que si la ligne /dev/ttyS
correspondante n'est pas ouverte et active (sinon errno
retourne EBUSY) ;
+o les ports series /dev/ttyS sont geres en mode bloquant ou non-
bloquant, c'est donc un peu plus complique. Si l'indicateur
CLOCAL est positionne, l'ouverture en mode bbllooqquuaanntt est
effective si la ligne /dev/cua est libre. Si l'indicateur
CLOCAL n'est pas positionne, elle est effective si les deux
conditions suivantes sont reunies :
+o la ligne est libre (le /dev/cua correspondant n'est pas
utilise),
+o la porteuse (circuit 109) a ete detectee.
Dans ce mode et pendant que l'ouverture est bloquee, la ligne
n'est pas occupee, ce qui signifie qu'une application peut
toujours effectuer un appel sortant. Si le port est en
cours de fermeture, l'ouverture echoue (EAGAIN).
L'ouverture en mode non-bloquant, quant a elle, est effective si
le port n'est pas deja ouvert et actif (sinon errno
retourne EBUSY) (-- Les applications utilisent de plus
le mecanisme des fichiers de verrouillage garantissant l'unicite
d'utilisation de la ressource.--)
C'est le mode qu'utilisent beaucoup d'applications comme _g_e_t_t_y qui
souhaitent dans un premier temps initialiser la ligne (pour eviter
des instabilites liees aux connexions
precedentes) voire ensuite pour initialiser
l'equipement (modem). Elles ne s'interessent qu'au fait que la ligne
soit occupee, en fermeture ou libre. Si celle-ci n'est pas libre,
l'application se termine et le mecanisme du _r_e_s_p_a_w_n se charge de les
relancer.
Pour la gestion de la connexion proprement dite, l'application _g_e_t_t_y
(pour prendre un exemple courant) ouvre la ligne, soit en mode
bloquant si vous laissez le modem en reponse automatique, soit
en mode non-bloquant si vous souhaitez qu'elle gere activement la
connexion. Elle est alors en attente bloquante en lecture (sur _r_e_a_d).
1133.. QQuueellqquueess aapppplliiccaattiioonnss iinntteerreessssaanntteess
1133..11.. UUnn nnuummeerrootteeuurr
Cette idee va faire plaisir a _X_a_v_i_e_r _C_A_Z_I_N : c'est la sienne. Le
mieux est de le laisser parler :
En fait, je trouverais tres utile de cliquer sur un bou-
ton pour appeler une personne retrouvee dans une base de
donnees par exemple. Surtout si elle se trouve a
l'etranger (minimum 12 chiffres depuis ici). Donc, ce que
j'aimerais, ce sont les renseignements necessaires au pro-
grammeur pour pouvoir construire un frontal qui demande au
modem de composer le numero choisi, puis affiche un mes-
sage (si le poste n'est pas occupe) du style
"Le telephone sonne, prenez le combine". Ces petites
choses toutes simples demandent de comprendre ce que sig-
nifie prendre la ligne et la relacher, pour un modem.
Excellent exercice. Alors avec tout ce que l'on vient de
dire, au travail :-). En laissant de cote la partie base de donnees,
l'algorithme a utiliser correspond a _l_'_o_r_g_a_n_i_g_r_a_m_m_e _d_'_u_n _a_p_p_e_l
donne a titre d'information au chapitre ``Le modem'', auquel il
faut rajouter :
+o au prealable, ouvrir le port serie
(/dev/cua<n>), le configurer. Le mieux est de prendre
exemple sur ce que fait _g_e_t_t_y ;
+o envoyer ensuite les commandes AT d'initialisation
puis de numerotation (utiliser la fonction chat()) qui fait ceci
tres bien ;
+o enfin se mettre en lecture sur le port afin de detecter les
messages emis par le modem. Le seul probleme ici est qu'il
sera difficile d'attendre certains d'entre-eux (NO ANSWER,
TIMEOUT) etant donne qu'il faut prevenir l'utilisateur qu'il
peut decrocher.
Par contre les messages NO DIALTONE (modem pas branche), et BUSY
sont fort interessants et permettent d'informer l'utilisateur
immediatement.
1133..22.. mmooddeemmssttaatt eett ccoommppaaggnniiee
Vous trouverez sur les _s_e_r_v_e_u_r_s _f_t_p habituels quelques petits
programmes permettant d'afficher l'etat de la jonction. Vous pourrez
vous interesser particulierement a la facon de recuperer les
informations (plutot que sur l'interface utilisateur qui est l'exemple
meme 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 presente, en mode
texte.
1133..33.. UUnn ddeetteecctteeuurr ddee ssiiggnnaall 110099 ((CCDD))
Lu dans _c_o_m_p_._o_s_._l_i_n_u_x_._d_e_v_e_l_o_p_m_e_n_t_._a_p_p_s cette demande
Existe-t-il un utilitaire que je pourrais utiliser
dans un _s_h_e_l_l_-_s_c_r_i_p_t et retournant une valeur,
disons 1, si le signal _D_e_t_e_c_t_i_o_n _d_e _p_o_r_t_e_u_s_e est monte 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 a realiser. 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 _s_h_e_l_l de la maniere
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
______________________________________________________________________
1144.. RReemmeerrcciieemmeennttss
Ce document n'aurait vu le jour sans un certain nombre de gens
fort sympathiques et plein de bonnes idees appartenant pour la
plupart a la mailing list de traduction :
Rene COUGNENC,\ Xavier CAZIN,\ Bernard CHOPPY,\ Francois AUDIBERT\
Eric DUMAS,\ Pierre FICHEUX, \ Herve MIGNOT, \ Pierre VASSELLERIE, \
Jacques LAVIGNOTTE, \ et tous les autres.