/usr/share/doc/HOWTO/fr-html/Modems-HOWTO.html is in doc-linux-fr-html 2013.01-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>Modems-HOWTO</title>
</head>
<body>
<h1>Modems-HOWTO</h1>
<h2>Jean Michel VANSTEENE <vanstee@worldnet.net></h2>
13 Février 1996
<hr>
<em>Le modem est devenu aujourd'hui un produit à la mode.
Que ce soit pour l'accès à Internet ou pour se
connecter chez un particulier qui laisse bénévolement
sa machine disponible, il faut un modem. Or, cet appareil,
d'apparence fort simple, cache des choses très
sophistiquées 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 problèmes qu'ils seraient aptes
à résoudre par eux-même, 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 réfléchi avant de me lancer dans cette
aventure. Parmi mes priorités, la première 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 <i>dont on a entendu
parler</i> : bande passante, bits/seconde, baud, modulation,
interface série, connexions à
vingt-huit-huit ... Après avoir lu ce document, de deux
choses l'une : soit vous vous dites <i>c'est imbitable</i>, et
là vous sautez sur votre courrier-é
préféré 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.</em>
<hr>
<h2><a name="s1">1. Introduction</a></h2>
<p>La communication a toujours été, est et sera
toujours un échange de signaux entre un émetteur et
un récepteur. Afin d'avoir les idées claires sur ce
que nous allons aborder, décomposons les différentes
étapes de la communication. Le meilleur modèle que
nous allons prendre est l'homme qui l'utilise depuis fort
longtemps.</p>
<p><b>Première étape </b>: prenons un homme,
bien rasé de préférence, propre et prêt
à se rendre au travail. Justement il a un mot à dire
à sa femme avant de partir. C'est l'information à
transmettre.</p>
<p><b>Deuxième étape </b>: 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
manière dont il transmet son message.</p>
<p>Pour communiquer, nous utilisons des éléments de
base dont l'ensemble forme l'alphabet. Une succession de ces
éléments définit un vocabulaire. En fait il
s'agit ni plus ni moins que d'un code, complexe certes, mais
compréhensible par tous ceux qui l'adoptent. Moins il est
ambigu, plus il est précis. (Vous pouvez essayer de donner
trois sens différents à cette phrase pour comprendre
que notre langue est parfois ambiguë : il est
énormément bête .) Pour s'exprimer, il est
ensuite capable de découper une suite de mots
(éléments continus) en phonèmes
(éléments discontinus), que le récepteur saura
réassembler.</p>
<p>En informatique, l'information de base est <b>binaire</b>, donc
codée sur deux valeurs logiques que l'on note habituellement
0 et 1. C'est le code sans doute le plus élémentaire
qui soit. Aussi il existe un certain nombre de codes
intermédiaires. Nous citerons par exemple le code ASCII,
permettant de coder les lettres et chiffres.</p>
<p><b>Troisième étape </b>: sa femme
découvre le message (ou l'entend). Elle est capable de le
reconstituer. Les lettres (respectivement les phonèmes)
forment des mots qui forment des phrases qui forment le message.
Ouf ! On y est.</p>
<h2><a name="ss1.1">1.1 Résumons un peu</a></h2>
<p><b>Découpage horizontal</b>. 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 même pour l'émetteur et le
récepteur. On parle alors de <i>protocole</i>. Au niveau le
plus bas, un signal est utilisé comme un moyen de
communication. Il transporte en effet un message sous une forme
particulière appelé <i>codage</i> ou
<i>modulation</i>. Un signal a une nature physique et un
modèle mathématique. Nous nous étendrons
davantage sur sa nature que sur le modèle qui, bien
qu'intéressant, nous amènerait trop loin. Le signal
s'appuie sur un support.</p>
<p><b>Découpage vertical</b>. De l'idée au code
employé : plusieurs niveaux de traitement sont
utilisés pour transformer un message complexe en
éléments plus simples aptes à être
véhiculés et compris par une entité
homologue.</p>
<p>Or s'il y a un signal, il faut forcément un support de
transmission, permettant de le véhiculer d'un point à
un autre. Nous verrons cela un peu plus loin. Celui qui nous
intéresse concerne les transmissions
téléphoniques.</p>
<p>Voici donc jetées les bases de la communication. Nous
allons maintenant éclaircir un peu tout cela dans les
différentes parties qui vont suivre. La première
étape consiste à consolider les bases sur les
signaux, ensuite nous verrons leur transmission.</p>
<h2><a name="s2">2. Un peu de théorie du signal...</a></h2>
<p>La voix est un bon exemple de signal permettant de
véhiculer une information. Ce signal est
caractérisé par sa <b>bande passante</b>,
c'est-à-dire le domaine de fréquences sur lequel elle
peut s'étendre. En général cette bande est
continue et comprise entre 30 et 15000 Hz. Ce signal est de type
sinusoïdal.</p>
<p>Sans entrer dans des détails mathématiques, disons
qu'un signal est composé d'une fréquence principale
et d'harmoniques. Il est possible d'en donner une
représentation mathématique grâce aux
séries 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 façon
continue entre deux instants : le signal est
"modulé".</p>
<h2><a name="ss2.1">2.1 Les supports de transmission</a></h2>
<p>Un signal quel qu'il soit, n'a d'intérêt que s'il
peut être transporté. Il faut savoir qu'un
système de transmission n'est jamais en mesure
d'émettre des signaux sans leur faire subir de
déformations : selon leur nature, on parle de
distorsion, d'affaiblissement, de diaphonie ... Comme nous le
verrons plus loin, les lignes téléphoniques ne font
pas exception à cette règle.</p>
<p>Chaque type de support est caractérisé entre
autres par son aptitude à transmettre un signal plus ou
moins fidèlement. De nombreux supports sont utilisés
en transmission de données : les supports avec guide
physique (câbles, fibres, ...) et les supports sans guide
physique (ondes radio, ondes lumineuses). Pour donner une
idée, de la qualité des supports, disons que les
câbles électriques à paires torsadées
sont les moins fiables, suivis par les câbles coaxiaux. Les
fibres optiques offrent actuellement le meilleur compromis
fiabilité/performance.</p>
<h2><a name="s3">3. Les télécommunications
analogiques et numériques</a></h2>
<h2><a name="ss3.1">3.1 Les télécommunications
analogiques</a></h2>
<p>C'est un mode de communication utilisé depuis très
longtemps notamment dans la technologie téléphonique.
Il s'agit en effet d'une activité beaucoup moins
consommatrice de ressources, tant financières que
technologiques que la transmission numérique. On n'est pas
tout à fait prêt à pouvoir s'en passer.</p>
<h2><a name="ss3.2">3.2 Le signal
téléphonique</a></h2>
<p>À l'origine, le téléphone a
été conçu pour transmettre la voix.
Malheureusement, il n'est pas possible, étant donné
le support utilisé, de véhiculer le signal complet,
c'est-à-dire l'ensemble des fréquences le
constituant. Le domaine de fréquences (on parle de largeur
de bande) que peuvent transmettre les lignes
téléphoniques est officiellement compris entre 300 et
3400 hertz</p>
<blockquote>Les <i>codecs</i> (codeurs-décodeurs) modernes
utilisés dans les centraux téléphoniques
actuels ont une bande passante de l'ordre de 200 à 3700 Hz
et la qualité des lignes des abonnés s'en trouve
généralement améliorée.</blockquote>
. On applique donc au signal de départ un <i>filtre
passe-bande</i> qui restreint l'espace de fréquence
attribué à la transmission du signal sur cette
liaison. Ceci correspond heureusement à 90% de
netteté de la voix.
<p>Selon le principe bien admis que tout traitement a un
coût, le plus simple et le moins coûteux en
télécommunications est de transmettre le signal avec
le moins de transformations possible. C'est bien ce qui se passe
pour la voix par téléphone. Les seules
transformations sont d'ordre analogique comme l'amplification par
exemple.</p>
<h2><a name="ss3.3">3.3 Les télécommunications
numériques</a></h2>
<p>Nous avons déjà évoqué
précédemment que le fonctionnement de nos chers
ordinateurs était fondé sur la seule information
binaire. Celle-ci est représentée, dès lors
qu'il s'agit de la visualiser (oscilloscope) ou de la transporter,
par un signal rectangulaire à deux niveaux.</p>
<p>Pour transporter un tel signal, le plus simple et le moins
coûteux consiste à lui faire subir le moins de
traitement possible, voire à le transporter tel quel. On
imagine aisément que pour transmettre ce signal sur un
support, il suffise de définir deux signaux
électriques représentant les niveaux logiques 0 et 1.
De plus ce type de transmission offre des performances
considérablement supérieures à la transmission
analogique, ceci pour deux raisons.</p>
<p>La première est un faible taux d'erreurs. En effet, alors
qu'en transmission numérique, les signaux sont transmis avec
des tensions d'amplitude variable, en transmission numérique
le nombre de niveaux est limité. Les signaux parasites
s'infiltrant dans un signal analogique sont donc très
difficiles à supprimer et engendrent des erreurs. En
transmission numérique, les défauts sont plus
facilement repérables et les équipements
régénèrent plus facilement un signal
parasité ou affaibli.</p>
<p>La deuxième raison tient au fait que l'on sait mieux
traiter une information numérique. Ainsi, en utilisant les
méthodes de multiplexage, de compression, l'acheminement des
données se fait beaucoup plus rapidement. De plus le
coût du matériel de traitement diminue
considérablement.</p>
<h2><a name="ss3.4">3.4 Alors pourquoi l'analogique ?</a></h2>
<p>Cette question est bien entendu la première que l'on se
pose maintenant. La réponse tient en quelques mots :
essentiellement pour des raisons financières. Lorsque les
ordinateurs sont organisés en petits groupes fermés,
l'infrastructure à mettre en place pour les relier est bien
sûr numérique. Mais dès 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 numérique,
Numéris en est l'exemple prometteur.</p>
<h2><a name="ss3.5">3.5 De l'analogique au numérique et
réciproquement</a></h2>
<p>Puisqu'il faut s'adapter à un monde fait de
numérique 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 méthodes
de conversion entre l'analogique et le numérique.</p>
<h3>De l'analogique au numérique</h3>
<p>L'information de départ est représentée 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 à prélever à intervalle
régulier la valeur de la tension, puis de la
représenter en binaire sur 7 ou 8 bits. Le
prélèvement est usuellement appelé
<i>échantillonnage</i> et la fréquence
d'échantillonnage correspond au nombre d'échantillons
prélevés par seconde. Un codeur-décodeur
prélève en général 8000
échantillons par seconde.</p>
<h3>Du numérique à l'analogique</h3>
<p>A l'inverse, la transformation d'une information
numérique en analogique consiste à moduler un signal
de base en fonction de cette information. C'est le rôle du
modulateur-démodulateur (modem).</p>
<p>Considérons maintenant ce signal de base. S'agissant d'un
signal analogique, c'est donc une sinusoïde dont la
fréquence peut varier, dans le cas qui nous
intéresse, de 1000 à 2000 hertz. C'est la porteuse.
La modulation de ce signal va consister ensuite à en faire
varier un ou plusieurs paramètres : la <b>phase</b>,
<b>l'amplitude</b> ou la <b>fréquence</b>.</p>
<p>La modulation d'amplitude consiste à modifier l'amplitude
de la porteuse, selon l'information binaire à transmettre.
Par exemple une valeur de l'amplitude est attribuée au 0 et
une autre au 1.</p>
<p>La modulation de fréquence correspond à la
même notion, mais ici les deux valeurs sont
représentées par des fréquences
différentes.</p>
<p>Enfin, la modulation de phase, consiste à faire varier la
phase de la porteuse, de 45, 135, 225 ou 315 degrés par
exemple.</p>
<p>La <b>rapidité de modulation</b> caractérise la
vitesse à laquelle ces changements s'effectuent. C'est la
caractéristique essentielle qui permet de définir la
bande passante.</p>
<p>Arrêtons-nous là un instant pour évoquer
maintenant la notion de débit. Il est en effet facile
d'imaginer pouvoir faire varier un signal à volonté,
mais ce serait ne pas tenir compte de certaines
caractéristiques physiques des supports qui nous
contraignent fortement.</p>
<h2><a name="ss3.6">3.6 Des bits et des débits</a></h2>
<p>Une des valeurs caractéristique des supports de
transmission est le débit maximum qu'ils peuvent supporter.
Comment s'empêcher de comparer un support à une route.
Le nombre maximum de véhicules qu'une autoroute est capable
de supporter par heure est très supérieur à
celui d'une route départementale (même si vous n'aimez
pas les routes départementales, mais ceci est une autre
histoire ...).</p>
<p>En ce qui concerne les supports de transmission, leur
débit maximum est directement lié à la largeur
de la bande passante. Chose promise, chose due, pas trop de
mathématiques 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 <b>débit
binaire maximum</b> et la <b>capacité de transmission
maximale</b>.</p>
<h3>Le débit binaire maximum</h3>
<p>Sur un canal de transmission dont la bande passante est B, il
est montré qu'un signal peut être entièrement
reconstitué à l'arrivée, si on le transmet en
prenant 2B échantillons par seconde. Le débit maximum
s'écrit alors :</p>
<blockquote>
<pre>
<code> Dmax = 2B
</code>
</pre></blockquote>
<p>Si, de plus, le signal peut prendre plus de deux valeurs
significatives, la formule se généralise
en :</p>
<blockquote>
<pre>
<code> Dmax = 2B log V
2
</code>
</pre></blockquote>
<p>où <b>V</b> correspond au nombre de niveaux significatifs
(ou états) que peut prendre le signal : c'est sa
<b>valence</b>. Par exemple, V=4 si le signal peut prendre les
valeurs +10 volts, +5 volts, -5 volts et
-10 volts.</p>
<p>Ceci pour vous montrer qu'en théorie, sur une ligne
téléphonique dont la bande passante est de 3000
hertz, le débit 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 débit maximum est
théoriquement infini.</p>
<h3>La capacité de transmission maximale</h3>
<p>Un des inconvénients supplémentaires des supports
est le <b>bruit</b>. Or la quantité de bruit présente
sur une ligne s'exprime par rapport à la puissance utile du
signal transmis : c'est le <b>rapport signal/bruit</b>. Plus
ce rapport est grand, meilleure est la qualité. La
capacité de transmission maximale est une fonction de ce
rapport. Pour une ligne téléphonique, cette
capacité maximale atteint 30000 bits/s. Cela signifie bien
que sur ces lignes <b>on ne peut transmettre à plus de 30000
bits/s</b></p>
<blockquote>C'est bien une capacité maximale physique,
à ne pas confondre avec des débits logiques
après compression de données.</blockquote>
quels que soient la valence et la fréquence du signal. C'est
une limite au débit binaire maximum.
<h2><a name="sec-modems"></a> <a name="s4">4.</a> Le modem</h2>
<p>Le rôle du modem est d'adapter les signaux rectangulaires
de données, que le réseau téléphonique
ne peut pas transmettre tels quels, en signaux transmissibles par
ce réseau.</p>
<p>Il a en fait deux fonctions :</p>
<ul>
<li>un rôle d'<b>adaptation du signal</b> aux lignes du
réseau utilisé, c'est-à-dire de modulation et
de démodulation ;</li>
<li>un rôle de <b>dialogue</b> avec l'équipement
informatique auquel il est relié.</li>
</ul>
<p>Il tient donc exactement le même rôle fonctionnel
qu'une couche de communication (TCP, par exemple). Il
possède une <b>interface</b> permettant un dialogue avec un
utilisateur se trouvant à un niveau supérieur. Ici il
s'agit d'une interface physique (y compris électrique). Il
communique avec une entité paire (un autre modem) selon un
<b>protocole</b>.</p>
<p>La structure interne d'un modem est décrite
ci-dessous :</p>
<pre>
+-----+ +--------+ +-------------+ +----------------+
| J +----->| codeur +-------> | modulateur +------>| |
| O | +--------+ +-------------+ | |
| N | | |
| C | | transformateur |
| T | | |
| I | | ligne |
| O | +----------+ +--------------+ | |
| N |<-----+ decodeur |<------+ demodulateur |<-----| |
+-----+ +----------+ +--------------+ +----------------+
</pre>
<p>Les paramètres caractérisant un modem
sont :</p>
<ul>
<li>le <i>débit d'information</i> en bits/s ;</li>
<li>le <i>mode de transmission</i> : synchrone ou
asynchrone ;</li>
<li>le <i>support de transmission utilisé</i> :
réseau ou ligne spécialisée ;</li>
<li>le <i>mode de couplage</i> à la ligne :
électrique ou acoustique.</li>
</ul>
<p>Nous aborderons assez rapidement l'ensemble de ces
paramètres, selon l'utilisation que nous aurons à en
faire. La notion de débit devrait maintenant être
assimilée.</p>
<p>Penchons-nous rapidement sur les modes et les supports de
transmission utilisés. Voyons ensuite plus
précisément le rôle d'adaptation du signal du
modem, puis le dialogue qui met en jeu la jonction et la ligne.</p>
<p>Commençons par définir un vocabulaire commun.</p>
<h2><a name="sec-vocab"></a> <a name="ss4.1">4.1</a>
Vocabulaire</h2>
<p>Un <b>avis</b> est une recommandation édictée par
l'U.I.T (Union Internationale des
Télécommunications), organisation
intergouvernementale compétente en
télécommunications. Les avis ont valeur de norme au
sein de l'Europe, puisque les organismes de Télécom
nationaux ont encore le monopole. Les recommandations sont issues
de travaux de diverses commissions d'études et sont
adoptées lors des assemblées pleinières
(délai de l'ordre de neuf mois, étant donné
l'évolution rapide des technologies). La section <a href=
"#sec-norme">Etat actuel de la normalisation</a> décrit les
différents avis actuellement en vigueur.</p>
<p>Dans sa normalisation, l'U.I.T définit
l'équipement informatique comme un <b>ETTD</b>
(<i>Équipement Terminal de Traitement de Données</i>)
et le modem comme un <b>ETCD</b> (<i>Équipement Terminal de
Circuit de Données</i>). La connexion d'un équipement
informatique à un modem, par exemple, est
réalisée par l'intermédiaire d'une
<b>jonction</b> ou <b>interface</b>.</p>
<p>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 même
temps. Ces transmissions peuvent avoir lieu indifféremment
sur liaison 2 ou 4 fils.</p>
<h2><a name="ss4.2">4.2 Le mode de transmission</a></h2>
<p>Une transmission de donnée est toujours liée au
facteur temps. Dans les transmissions en série qui
constituent la majorité des transmissions, l'émetteur
et le récepteur doivent travailler à la même
cadence. Dans le mode <b>synchrone</b>, ils sont calés sur
le même rythme grâce à des signaux d'horloge
émis avant la transmission. Dans le mode <b>asynchrone</b>,
l'horloge du récepteur n'est déclenchée puis
arrêtée que sur réception de bits de
début et de fin. On les appelle bits de <b>start</b> et de
<b>stop</b>. Ce mode, bien que moins performant, est le plus
utilisé actuellement dans les communications à
travers le réseau public.</p>
<h2><a name="ss4.3">4.3 Le support de transmission ou
ligne</a></h2>
<p>Un modem est utilisable principalement sur deux types de
supports : le <b>réseau commuté</b> ou la
<b>ligne spécialisée</b>. Sur chaque type de support,
les liaisons peuvent être à deux ou quatre fils.</p>
<p>Dans le cas qui nous intéresse, le modem est relié
au réseau téléphonique commuté et la
liaison est à deux fils. Nous l'utilisons soit en half
duplex, soit en full duplex selon l'avis (voir définition de
ce mot au paragraphe <a href="#sec-vocab">Vocabulaire</a>.</p>
<p>A ce propos, réfléchissons un peu sur
l'utilisation qui est faite actuellement du Réseau
Téléphonique 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,
considérant les vitesses de modulations maximales possibles,
on conçoit qu'il faut combiner plusieurs types de
modulations pour obtenir des débits maintenant courants de
l'ordre de 28800 bits/s.</p>
<p>Or le RTC n'utilise que <b>deux</b> fils. Pour travailler en
full-duplex à des débits relativement faibles (en
fait jusqu'à l'avis V22 bis), il était possible de
partager la bande de fréquence en deux moitiés, une
pour chaque sens. Avec les débits employés
actuellement ce n'est plus possible. Pour travailler en full-duplex
à d'importants débits, il est fait appel à des
algorithmes complexes dits "de suppression d'écho" (proche
et lointain). Imaginez le travail à réaliser :
chaque modem reçoit les données envoyées par
le distant mélangées à ses propres
données. Le tout est encore pollué par de
l'écho ! Et pour compliquer le tout, tout ceci varie
dans le temps, et bien sûr d'une communication à
l'autre.</p>
<p>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 débits variables selon le moment.</p>
<h2><a name="ss4.4">4.4 L'adaptation du signal</a></h2>
<p>Nous avons vu aux sections précédentes ce
qu'étaient une modulation et un débit. Rassemblons
maintenant un peu toutes ces idées. Bien souvent, c'est sur
ce point délicat que les esprits se perdent. Nous avons vu
que la rapidité de modulation est une caractéristique
essentielle de la bande passante. Plus cette rapidité est
grande, plus la bande passante demandée est large. Sur le
réseau téléphonique, la bande maximale
officielle est de 3100 hertz (300 à 3400 Hz). Dans les
centraux téléphoniques modernes, elle va
jusqu'à 3500 Hz.</p>
<p>Pour bien comprendre le mécanisme de l'adaptation du
signal, imaginez maintenant que nous disposions d'un appareil
électrique capable d'émettre quatre niveaux de
tensions possibles.</p>
<p>Les données à transmettre sont quant à
elles toujours présentées sous forme d'un flot
ininterrompu (ou presque) d'informations binaires.</p>
<p>L'idée 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
<b>valence</b> 4. Plus généralement, la valence d'un
signal est le nombre d'états qu'il peut prendre. Cette
transformation du signal est appelée <b>codage</b>.</p>
<p>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 donnée sa valence, nous avons
besoin de quatre décalages de phase.</p>
<p>A chaque fois que <b>deux</b> bits se présentent, il est
possible d'effectuer <b>une</b> modulation. A l'autre bout,
l'équipement est capable de regénérer deux
bits. Le débit (en <b>bits/s</b>) est donc bien double de la
vitesse de modulation (exprimée en <b>bauds</b>).</p>
<h3>Exemple</h3>
<p>Vous configurez un modem à 4800 bits par seconde
(V.27 ter). Que va-t-il se passer ? Selon cette norme,
le modem va réaliser une modulation de phase
différentielle octovalente. Il va donc regrouper les bits
par trois (<b>tribits</b>) pour moduler le signal. La vitesse de
modulation est donc de 1600 bauds et le débit de 4800
bits/seconde. Pour obtenir un débit de 9600 bits par
seconde, il faudra combiner un autre type de modulation. La section
<a href="#sec-modul">Débits et modulations</a>
présente l'essentiel des modulations utilisées dans
les différentes normes actuelles.</p>
<h3>Résumé</h3>
<p>L'adaptation du signal peut se faire de trois
manières :</p>
<ul>
<li>par une simple modulation appropriée ;</li>
<li>par un codage puis une modulation ;</li>
<li>par un simple codage. Ce type d'adaptation est présent
dans certains modems dits "bande de base" qui transmettent
directement ce code sur la ligne. Ce ne sont pas ceux que nous
utilisons couramment.</li>
</ul>
<p>La rapidité de modulation s'exprime en <b>bauds</b>. Elle
correspond au nombre de changements d'états du signal par
seconde sur la ligne de transmission. Une rapidité de
<i>b</i> bauds ne correspond pas forcément à <i>b</i>
bits/s sur la ligne. Une configuration binaire (un ou plusieurs
bits selon la valence) correspond à un état du
signal.</p>
<h2><a name="ss4.5">4.5 Le dialogue</a></h2>
<p>Intéressons-nous maintenant au dialogue entre
l'équipement informatique et la jonction.</p>
<h3>La jonction série</h3>
<p>La jonction spécifie les caractéristiques
mécaniques, électriques et fonctionnelles des
signaux. Bien entendu ces jonctions sont normalisées (voir
plus loin les tableaux récapitulatifs sur l'état
actuel de la normalisation) et celle qui nous intéresse plus
particulièrement est référencée sous le
nom V.24 par l'U.I.T, sensiblement équivalente de la norme
RS-232C définie par l'E.I.A</p>
<blockquote>Electronic Industries Association.</blockquote>
.
<p>Voici une description des signaux de l'interface V.24 les plus
couramment utilisés :</p>
<blockquote>
<pre>
<code>+------+-----------+-----------+--------+------+--------------------------------+
| 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 |
+------+-----------+-----------+--------+------+--------------------------------+
</code>
</pre></blockquote>
Brochage des prises côté soudures :
<blockquote>
<pre>
<code> +-----------+ +---------------------------------------+
| 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
</code>
</pre></blockquote>
<h3><a name="sec-dialogue"></a> Le dialogue proprement dit</h3>
<p>Prenons deux postes de travail équipés d'un modem
chacun et souhaitant communiquer.</p>
<p>Nous passerons rapidement sur le fait que les équipements
doivent être reliés à la masse. Ceci est
réalisé grâce au circuit 101. D'autre part, il
est nécessaire de définir une référence
de signalisation : c'est le rôle du circuit 102.</p>
<p>Dès sa mise sous tension, l'ETTD présente un
état logique "1" sur le circuit 108 : <i>Terminal de
Données Prêt</i> (DTR). Dès la mise sous
tension de l'ETCD, celui-ci présente l'état <i>Poste
de Données Prêt</i> (DSR) correspondant à un
état logique "1" sur le circuit 107, assurant ainsi que le
modem est sous tension et connecté à la ligne.</p>
<p>L'ETTD ayant des données à émettre, demande
à émettre. Il présente sur la jonction
l'information <i>Demande Pour Émettre</i> (RTS) sur le
circuit 105. Ceci valide le modulateur de l'ETCD qui émet
alors une porteuse.</p>
<p>Du coté appelé, l'ETCD détecte la
présence de la porteuse sur la ligne de transmission et le
signale à l'ETTD sur le circuit 109 :
<i>Détection de signal</i> (porteuse). Les circuits 107 et
108 auront été initialisés au préalable
comme ci-dessus.</p>
<p>L'ETTD ayant signalé son intention d'émettre sur
le circuit 105 reçoit en réponse peu de temps
après le signal <i>Prêt À Émettre</i>
(CTS) sur le circuit 106.</p>
<p>Les données peuvent ensuite circuler via les circuits 103
et 104.</p>
<h3>Le contrôle de flux</h3>
<p>Lorsqu'un émetteur émet de façon
systématique plus de données que le récepteur
ne peut en accepter, il se pose alors un problème qui ne
peut être résolu que grâce au mécanisme
de <i>contrôle de flux</i>.</p>
<p>Le contrôle de flux peut être de différents
types :</p>
<dl>
<dt><b>logiciel</b></dt>
<dd>
<p>Le modem insère des caractères de contrôles
dans le flot de données circulant entre l'ETCD et
l'ETTD : <b>XOFF</b> pour arrêter l'envoi et <b>XON</b>
pour le reprendre.</p>
</dd>
<dt><b>matériel</b></dt>
<dd>
<p>Généralement appelé <b>CRTSCTS</b>, 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 <i>termios.h</i>.</p>
</dd>
</dl>
<p>Le fonctionnement du contrôle de flux matériel
pendant la transmission peut se résumer ainsi :</p>
<p>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, lève 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.</p>
<h2><a name="ss4.6">4.6 La connexion au réseau
téléphonique commuté</a></h2>
<p>Maintenant, plusieurs questions se posent, et j'imagine que
parmi celles que vous vous posez il y a :</p>
<ul>
<li>et sous Linux, le fonctionnement est-il identique ?</li>
<li>à quel moment le numéro du correspondant a t-il
été composé ?</li>
<li>mon modem est configuré en
réception/émission, comment ça
marche ?</li>
<li>etc.</li>
</ul>
<p>Nous allons maintenant tenter de répondre.</p>
<p>Eclaircissons un peu les choses. Le dialogue que nous venons de
voir concerne le dialogue <i>théorique</i> ETTD-ETCD et
ETCD-ETTD sans se soucier d'éventuelles contraintes pouvant
provenir du système d'exploitation. Il est toujours vrai.
Néanmoins, il ne suffit pas forcément pour qu'une
communication soit établie, notamment via le RTC. Nous
allons étudier ce fonctionnement point par point en prenant
un bon système d'exploitation (<b>Linux</b>, mais ce n'est
qu'un exemple), un bon port série et du courage. Vous
continuez ?</p>
<p>Tout d'abord, nous avons vu qu'une communication
commençait toujours par le premier échange DTR/DSR,
ou si vous préférez 108/107. La montée du
circuit 108 est réalisée sous Linux à
l'ouverture du port série (ex. <code>fopen
("/dev/ttyS0", ...)</code>). Cela se voit très bien sur un
modem externe, le voyant TR est allumé. La réponse du
modem par le circuit 107 est un peu différente. Dans la
section <a href="#sec-dialogue">Le dialogue proprement dit</a>,
pour des raisons de simplicité, nous supposions que le modem
répondait sur le circuit 107 après un délai
très bref, c'est-à-dire qu'il était
instantanément connecté à la ligne.</p>
<p>Cette réponse est maintenant conditionnée par la
connexion à la ligne via le réseau
téléphonique commuté.</p>
<h3>Initialisation du modem</h3>
<p>En général, c'est juste après l'ouverture
du port série que le modem est initialisé. Cela se
fait grâce aux commandes AT que nous ne détaillerons
pas. Simplement, ces commandes sont envoyées au modem (par
l'intermédiaire du circuit 103) (ex.
<code>write</code> sur le <i>descripteur de fichier</i> du
périphérique) et interprétées par lui,
lorsque :</p>
<ul>
<li>le circuit 108 est fermé (état "1") ;</li>
<li>le modem est en mode commande.</li>
</ul>
<h3>Établissement de la connexion</h3>
<p>L'une des commandes d'initialisation permet la composition d'un
numéro. Le modem décroche (eh oui, ce terme barbare
veut dire que suite à la fermeture du relais, le central
local envoie une tonalité à la fréquence de
440 Hz <code>:-)</code>) puis compose le numéro.</p>
<p>Sur l'équipement distant, le circuit 108 est
également monté. Le modem appelé
détecte l'appel. Le signal d'indication d'appel (circuit
125) est utilisé en interne pour mémoriser l'appel,
le modem réalisant donc lui-même la connexion à
la ligne. Cette mémorisation est maintenue par DTR
(jusqu'à déconnexion).</p>
<p>À ce moment précis, le modem appelé
répond en validant son modulateur qui émet la
porteuse.</p>
<p>Le modem appelant, en état de décrochage et
attendant la porteuse, met son émetteur en service.
Après négociation, le circuit 109 (DCD) est alors
validé. Du côté de l'appelé, le circuit
109 est également validé. La prise de contact est
terminée. Les circuits 107 (DSR) des deux modems sont alors
montés en réponse à DTR (asservissement des
circuits 107-109).</p>
<h3>Réponse automatique ou manuelle</h3>
<p>Du côté de l'appelé, il est possible de
mettre le modem en mode réponse automatique. Il
répond alors tout seul à l'appel après
quelques sonneries. Le registre S0 des modems est
généralement réservé à la
configuration de ce mode.</p>
<p>Lorsque ce registre contient la valeur 0, (ATS0=0), le modem est
en réponse manuelle. Sous Linux, c'est assez souvent
l'option choisie, et c'est le logiciel (notamment <i>getty</i>) qui
gère l'appel. En effet les gestionnaires, de <i>tty</i> tels
que <i>getty</i> préfèrent prendre en charge la
connexion : ce n'est pas au modem à répondre
à un appel mais à <i>getty</i> lui même.
Lorsque le modem reçoit un appel, il émet simplement
le message <b>RING</b> (bien sûr, si le mode verbeux est bien
configuré : ATE1). Sur ce, <i>getty</i> envoie la
commande ATA qui valide le mode réponse et la porteuse.</p>
<p>Enfin, à la fermeture du port, les signaux 108/107
repassent à l'état <b>0</b>.</p>
<p>Voici à titre d'information l'organigramme d'un
appel :</p>
<blockquote>
<pre>
<code>
+---------------------------------------+
| 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 |
+--------------------------+ +-------------+ +--------------------------+
</code>
</pre></blockquote>
<h3>Déconnexion</h3>
<p>Plusieurs méthodes permettent de mettre fin à un
appel :</p>
<ul>
<li><b>Mode commande.</b> Mettre le modem en mode commande et
envoyer la chaîne <code>+++ATH</code> ;</li>
<li><b>Perte de porteuse.</b> L'une des causes est la
déconnexion normale de l'autre modem ;</li>
<li><b>Ouverture du circuit 108</b> (DTR). C'est la méthode
la plus couramment employée.</li>
</ul>
<h2><a name="sec-norme"></a> <a name="s5">5.</a> Etat actuel de la
normalisation</h2>
<p>Voici un tableau résumant l'état actuel de la
normalisation concernant les classes de débits
supportés.</p>
<blockquote>
<pre>
<code>
+----------+--------------------------------------------+
| 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
</code>
</pre></blockquote>
<h2><a name="ss5.1">5.1 À propos du V.42 bis</a></h2>
<p>Un tout petit mot à propos de la norme V.42 bis qui
permet la compression de données. L'algorithme utilise un
dictionnaire de chaînes de caractères. Lorsqu'une
chaîne apparaît, un <i>token</i> est transmis qui n'est
autre que l'index de cette chaîne dans le dictionnaire. La
longueur maximale d'une chaîne ainsi que la taille maximale
du dictionnaire sont négociées au début de la
connexion. La norme V.42 bis autorise une longueur de
chaîne comprise entre 6 et 250 caractères. La taille
minimale du dictionnaire est de 512 entrées (soit 9 bits
pour coder le rang d'un entrée). Le taux maximal de
compression dans ce cas est de :</p>
<blockquote>
<pre>
<code>250 * 8 : 9 = 222.2
</code>
</pre></blockquote>
<p>soit un taux de 222:1. Un bon taux de compression est plus une
affaire de taille mémoire et d'efficacité en fonction
des données à coder qu'une affaire de puissance de
processeur.</p>
<h2><a name="sec-modul"></a> <a name="ss5.2">5.2</a> Débits
et modulations</h2>
<blockquote>Merci à Christian 'naddy' Weisgerber de son aide
pour la rédaction de cette partie.</blockquote>
<p>Voici rassemblés dans les tableaux suivants les
débits et les modulations correspondantes utilisés
dans les principales normes pour liaisons
téléphoniques à 2 fils. Les <i>normes</i> qui
ne sont pas citées ci-après sont peu utilisées
voire oubliées aujourd'hui (liaisons à 4 fils, V.32
terbo, Bell xxx, V.FC, ZyXEL, HST, PEP... certaines n'étant
d'ailleurs pas de véritables normes).</p>
<blockquote>
<pre>
<code>+------------------------------------------------------------------------+
| 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)
</code>
</pre></blockquote>
<p>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 méthodes TCM choisie par le
récepteur. Les combinaisons suivantes sont
possibles :</p>
<blockquote>
<pre>
<code>+-------------------------------------------------------------+
| 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 |
+-------------------------------------------------------------+
</code>
</pre></blockquote>
<h2><a name="s6">6. Foire Aux Questions</a></h2>
<dl>
<dt><b>Comment puis-je changer facilement un paramètre de
mon port série ?</b></dt>
<dd>
<p>La meilleure façon de le faire, aussi bien manuellement
que dans un script est de rediriger le périphérique
sur l'entrée standard de <i>stty</i>. Exemple :</p>
<blockquote>
<pre>
<code> stty crtscts < /dev/ttyS0
</code>
</pre></blockquote>
<p>activera le contrôle de flux matériel sur le
premier port série utilisé en entrée.</p>
<blockquote>
<pre>
<code> stty -a < /dev/cua0
</code>
</pre></blockquote>
<p>affichera tous les paramètres du premier port
série utilisé en sortie.</p>
</dd>
<dt><b>Pourquoi faut-il configurer CRTSCTS sur le port série
?</b></dt>
<dd>
<p>Pour gérer le contrôle de flux matériel. Ce
n'est pas une obligation, c'est une garantie que l'échange
de données entre ETTD et ETCD se fera dans les meilleures
conditions. Il faut bien entendu que votre modem puisse le faire.
Contrairement à une idée reçue, si vous mettez
l'option CRTSCTS dans le fichier /etc/gettydefs, il n'est pas
nécessaire d'effectuer en plus un <code>stty crtscts
</dev/port\#</code>. Par contre, il faut le mettre à la
fois dans la partie <i>initiale</i> et <i>finale</i> de gettydefs.
Notez qu'il s'agit bien d'un contrôle de flux local, et en
aucun cas il ne faut s'inquiéter de ce que fait le
correspondant dans ce domaine.</p>
</dd>
<dt><b>Je remarque que agetty modifie les droits du fichier
/dev/ttyS0, bizarre non ?</b></dt>
<dd>
<p>Ca peut effectivement paraître bizarre. Il s'agit en fait
de l'établissement d'une <i>session</i> d'utilisation du
périphérique. Celui-ci prend alors les droits du
"chef" de session (<i>session leader</i>) qui se protège
ainsi des utilisations du même tty par d'autres
processus.</p>
</dd>
<dt><b>Aurais-je accès à mon téléphone
?</b></dt>
<dd>
<p>Cette question a été réellement
posée. Si vous n'avez qu'une ligne
téléphonique, la réponse est non. De plus, en
décrochant le combiné téléphonique,
vous pertuberez la ligne et le modem risque fort de diminuer le
débit (pour le remonter si tout va bien ensuite).</p>
</dd>
<dt><b>Lorsque je me connecte chez mon fournisseur, comment mon
adresse IP est générée ?</b></dt>
<dd>
<p>Cette question montre à l'évidence une confusion
entre toutes les notions réseaux. Bien qu'elle ait
été posée suite à un problème
relatifs aux modems, la réponse ne devrait
théoriquement pas se trouver dans ce document.
Néanmoins, le chapitre suivant rappelle quelques principes
de base des empilements protocolaires afin de clarifier un peu tout
cela.</p>
</dd>
</dl>
<h2><a name="s7">7. Un mot sur les empilements protocolaires
couramment utilisés</a></h2>
<p>Un tel titre pourrait faire croire à une erreur de mise
en page ou de <i>copier-coller</i> étant donné le
sujet du document. En fait, il n'en est rien.</p>
<p>La connexion d'une machine à un fournisseur
d'accès à Internet met en jeu un ensemble de
protocoles de communications : TCP, UDP, IP, SLIP, PPP, etc.
De nombreux utilisateurs souhaitent réaliser ce type de
connexion depuis chez eux, via un modem et rencontrent parfois
quelques problèmes de configuration.</p>
<p>Il est évident qu'il est à la fois difficile et
inutile de tout connaître de ces protocoles. Il faut vraiment
<i>être du métier</i> pour bien les connaître,
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
utilisée.</p>
<p>La lecture du forum <i>fr.comp.os.linux</i> montre parfois une
certaine confusion dans toutes les fonctions mises en oeuvre et qui
engendrent inévitablement de mauvais
paramétrages.</p>
<p>Les quelques schémas qui suivent donnent une idée
de la façon dont tous ces <i>engrenages</i> sont
placés pour que "ça tourne" !</p>
<h2><a name="ss7.1">7.1 TCP/UDP/IP</a></h2>
<p>Ces sigles sont très fréquemment utilisés
aujourd'hui et pour cause : ces empilements de couches de
communications tendent à se répandre à vive
allure. C'est à l'origine un ensemble de protocoles
développés dans le cadre du projet ARPANET,
créé par ARPA (aujourd'hui DARPA), l'agence pour les
projets de recherche avancée du Ministère de la
Défense des Etats-Unis.</p>
<ul>
<li>TCP
<blockquote>Transmission Control Protocol</blockquote>
est une entité de niveau Transport chargée de
véhiculer des données de manière fiable entre
deux machines souhaitant dialoguer ;</li>
<li>UDP
<blockquote>User Datagram Protocol</blockquote>
est une entité de niveau Transport chargée de
véhiculer des données entre deux machines souhaitant
dialoguer ;</li>
<li>IP
<blockquote>Internet Protocol</blockquote>
est une entité de niveau Réseau chargée de
véhiculer des données entre deux noeuds d'un
réseau.</li>
</ul>
<h2><a name="ss7.2">7.2 PPP/SLIP</a></h2>
<p>PPP</p>
<blockquote>Point-to-Point Protocol</blockquote>
et SLIP
<blockquote>Serial Line IP</blockquote>
proposent une méthode d'encapsulation des datagrammes IP sur
des liaisons point à point, par exemple les lignes
asynchrones série. En quelques mots, disons que SLIP est un
protocole très simple, assez ancien, datant d'une
époque où certains problèmes n'étaient
pas aussi importants qu'aujourd'hui : adressage,
identification réciproque, détection et correction
d'erreurs, compression (extrait du RFC-1055). PPP est quant
à lui beaucoup plus complet et c'est pourquoi il est
généralement préféré par les
connaisseurs. Il offre toutes ces caractéristiques
regroupées en trois sous-ensembles :
<ul>
<li>une méthode d'encapsulation de type HDLC sur circuit
commuté ou permanent, synchrone ou asynchrone ;</li>
<li>un protocole LCP (Link Control Protocol) permettant
d'établir, de configurer et de tester une
connexion ;</li>
<li>une famille de protocoles NCP (Network Control Protocols) pour
l'établissement et la configuration des protocoles
réseaux.</li>
</ul>
<p>Pour obtenir de plus amples renseignements, vous pouvez vous
reporter aux documents concernant ces protocoles :
<b>RFC-1055</b> (SLIP), <b>RFC-1171</b> et <b>RFC-1172</b> (PPP) et
le <b>PPP-HOWTO</b>.</p>
<h2><a name="ss7.3">7.3 Mise en oeuvre</a></h2>
<blockquote>
<pre>
<code>
+----------------+-------+ +--------+ +--------+ +------+ +-----+
| 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_| ---------
</code>
</pre></blockquote>
<p>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 :</p>
<p>Supposons que vous souhaitiez faire un <i>ftp</i> de chez vous
sur <i>ftp.samachine.fr</i>. L'application <i>ftp</i> demande
à TCP d'établir une connexion. Pour qu'elle puisse
s'établir, PPP doit déjà fonctionner. Pour que
PPP fonctionne, le modem doit être en ligne :</p>
<ul>
<li>première étape : établissement d'une
communication entre deux modems. Cette étape est
supposée connue, maintenant ;</li>
<li>deuxième étape : mise en route de PPP, avec
éventuellement authentification ;</li>
<li>troisième étape : configuration de
l'interface IP correspondante. Il s'agit en général,
sous Linux, de l'interface <i>ppp0</i>. Une adresse IP pouvant
provenir soit d'une configuration locale, soit de votre
fournisseur, est affectée à l'interface. Dans ce
dernier cas, celui-ci la fournit lors de l'initialisation PPP. Dans
les deux cas, c'est le démon PPP qui configure l'adresse de
l'interface ;</li>
<li>quatrième étape : établissement d'une
connexion TCP, puis initialisation de <i>ftp</i>. A partir de
là, si tout s'est bien passé, vous pouvez
transférer vos fichiers.</li>
</ul>
<p>Vous pouvez maintenant imaginer le déroulement d'une
déconnexion.</p>
<h2><a name="ss7.4">7.4 Les fichiers de configuration</a></h2>
<h3>Les applications</h3>
<p>Vous comprendrez qu'il est difficile de décrire ici
l'emplacement des fichiers de configuration des applications.
Prenez soin de lire les fichiers README ou INSTALL et
d'exécuter l'installation correctement.</p>
<h3>Les couches de communication : TCP/UDP/IP</h3>
<p>Pour une configuration standard de votre machine, vous devez
compiler le noyau avec les options "réseau"
suivantes :</p>
<blockquote>
<pre>
<code>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
</code>
</pre></blockquote>
<p>Le fichier <i>resolv.conf</i> doit contenir :</p>
<blockquote>
<pre>
<code>domain <domaine de votre fournisseur>
nameserver <adresse IP du serveur de nom de votre fournisseur>
</code>
</pre></blockquote>
<h2><a name="s8">8. Le Minitel</a></h2>
<p>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 spécificités. 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 caractéristiques intéressantes
dans le cadre d'une utilisation avec Linux.</p>
<p>Les STUM 1B</p>
<blockquote>Spécifications Techniques d'Utilisation du
Minitel 1B.</blockquote>
décrivent l'ensemble des caractéristiques des divers
modules du Minitel 1B :
<ul>
<li>l'écran ;</li>
<li>le clavier ;</li>
<li>le modem ;</li>
<li>la prise péri-informatique.
<blockquote>A ce propos, je tiens à votre disposition un
schéma électronique d'un montage permettant
l'adaptation RS232-Minitel. Il met en oeuvre le circuit MAX232
permettant une parfaite adaptation des tensions.</blockquote>
</li>
</ul>
<h2><a name="ss8.1">8.1 L'écran</a></h2>
<p>Le minitel 1B est capable d'afficher 24 lignes de 40 ou 80
caractères et 8 couleurs (ou niveaux de gris).</p>
<p>Le mode 40 colonnes correspond au standard <i>Videotex</i>, le
mode 80 colonnes au standard
<i>télé-informatique</i>. C'est en
général celui-ci que l'on utilisera s'il sert de
terminal. Les séquences de touches permettant de passer d'un
mode à l'autre sont indiquées dans le tableau suivant
dans lequel on retrouvera également quelques
séquences utiles :</p>
<blockquote>
<pre>
<code>+-------------+----------------------------------+
| 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) |
+-------------+----------------------------------+
</code>
</pre></blockquote>
<h2><a name="ss8.2">8.2 Le clavier</a></h2>
<p>Il s'agit d'un clavier <i>AZERTY</i> permettant la saisie de la
plupart des caractères courants pour un terminal. Il est
notamment possible de verouiller les minuscules grâce
à la séquence <Fcnt C> M. A noter une
correspondance, dans le mode télé-informatique, de
certaines touches :</p>
<blockquote>
<pre>
<code>+-------------+-----------------------------------+
| Touches | Correspondance terminal classique |
+-------------+-----------------------------------+
| Sommaire | PF1 |
| | |
| Annulation | PF2 |
| | |
| Retour | PF3 |
| | |
| Repetition | PF4 |
| | |
| Envoi | Enter (Entree) |
+-------------+-----------------------------------+
</code>
</pre></blockquote>
<p>La touche <i>Entrée</i> correspond également
à la séquence de touches <Ctrl J></p>
<h2><a name="ss8.3">8.3 Le modem</a></h2>
<p>Le modem du minitel permet des débits de 300 à
4800 ou 9600 bits/s</p>
<blockquote>Tous les modèles de minitel n'autorisent pas
tous ces débits.</blockquote>
. Il est associé à un coupleur travaillant sur 7 bits
de données, un bit de parité paire, un bit de
<i>start</i> et un bit de <i>stop</i>, soit 10 bits par
caractère. Le tableau suivant donne les séquences de
touches permettant de configurer le modem à ces
différents débits.
<blockquote>
<pre>
<code>+-------------+--------------+
| 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 |
+-------------+--------------+
</code>
</pre></blockquote>
<p>En standard V.23, il est possible de <i>retourner</i> le modem
(vitesse émission-réception) avec la séquence
<Fcnt M> R.</p>
<h2><a name="ss8.4">8.4 Utilisation du Minitel comme simple
terminal</a></h2>
<p>D'après les conseils avisés de <i>Pierre
Ficheux</i>, voici un exemple de configuration permettant de
connecter un Minitel :</p>
<h3>Configuration de getty</h3>
<p>Une méthode simple consiste à compiler un
<i>getty</i> un peu particulier. Les sources se trouvent dans le
paquetage <b>getty_ps-2.0.7h</b>, en général
disponible par <i>ftp</i> (ftp.ibp.fr) sous
<b>/pub/linux/tsx-11/sources/sbin</b>.</p>
<p>Il s'agit ensuite de modifier le fichier <i>tune.h</i> comme
suit :</p>
<blockquote>
<pre>
<code>#ifdef V23
#define DEF_CFL (CS7|PARENB) /* Pour connexion V.23 */
#else
#define DEF_CFL (CS8) /* default word-len/parity */
#endif /* V23 */
</code>
</pre></blockquote>
<p>Puis de compiler l'ensemble avec l'option -DV23 vous donnant un
fichier exécutable <i>uugetty</i> que vous pourrez renommer
<i>uugetty_v23</i>. Ensuite, il faut ajouter quelques
entrées au fichier <i>/etc/gettydefs</i> :</p>
<blockquote>
<pre>
<code>#
# 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
</code>
</pre></blockquote>
<p>Enfin, vous modifiez le fichier <i>inittab</i> de façon
à démarrer <i>uugetty_v23</i> comme dans l'exemple
ci-dessous :</p>
<blockquote>
<pre>
<code>d4:45:respawn:/sbin/uugetty_v23 ttyS1 9600v23
</code>
</pre></blockquote>
<p>Une solution différente consisterait à seulement
modifier <i>/etc/gettydefs</i>. La méthode
précédente ne fait, finalement, que redéfinir
l'option SANE qui ne comporte pas moins de 16 paramètres, en
modifiant l'un d'eux : DEF_CFL. Il est possible de la
redéfinir par configuration en la remplaçant par
l'ensemble des paramètres, sauf CS8 que l'on remplacera par
CS7 PARENB. Les entrées de <i>/etc/gettydefs</i> sont
à modifier comme l'exemple ci-après :</p>
<blockquote>
<pre>
<code>#
# 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]
</code>
</pre></blockquote>
<p>Bien que cela puisse paraître lourd, il est
préférable d'utiliser cette méthode. On a trop
tendance à recompiler des sources pour les adapter à
trente-six situations alors qu'ils fournissent
généralement un niveau de configurabilité
extrêmement complet et puissant. C'est le cas ici. Les
sources de <i>getty</i> prévoient d'analyser tous ces
paramètres, et cela fonctionne parfaitement.</p>
<h2><a name="ss8.5">8.5 Utilisation du Minitel pour un accès
distant</a></h2>
<p>Deux cas peuvent se présenter :</p>
<ul>
<li>soit vous souhaitez dédier votre ligne aux seuls
accès Minitel, auquel cas il est souhaitable d'envisager de
configurer votre système comme ci-dessus. Il faut simplement
modifier le fichier <i>/etc/gettydefs</i> en remplaçant
l'option CLOCAL par CRTSCTS dans la première partie (options
initiales) et par CRTSCTS HUPCL dans le partie suivante
(options finales) ;</li>
<li>soit vous souhaitez seulement <i>pouvoir</i> utiliser le
Minitel comme terminal distant, sans que ce soit un accès
dédié. Dans ce cas il n'y a rien à faire sur
votre système (rien de plus que la configuration que vous
avez déjà dû mettre en place : getty,
gettydefs, inittab, ...). Sur le Minitel, il sera
préférable de le configurer en mode
télé-informatique (<Fcnt T> F).</li>
</ul>
<h2><a name="s9">9. Un modem particulier: le câble
null-modem</a></h2>
<p>Un câble <i>null-modem</i> est tout simplement un
câble inverseur permettant de relier ensemble deux ETTD sans
passer par l'intermédiaire de deux ETCD. Il est conforme aux
normes du C.C.I.T.T., c'est à dire qu'il simule les
différents signaux. Son seul inconvénient est que la
liaison ainsi réalisée ne peut dépasser 250
mètres.</p>
<p>Voici le schéma du câble à
réaliser :</p>
<blockquote>
<pre>
<code>+------+-------+---------------------------------+------+-------+
| 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 |
| | | | | |
+------+-------+---------------------------------+------+-------+
</code>
</pre></blockquote>
<h2><a name="s10">10. Choix d'un modem</a></h2>
<p>Si vous êtes sur le point d'investir dans un modem, il y a
au moins trois facteurs déterminants pour vous :</p>
<dl>
<dt><b>Le coût</b></dt>
<dd>
<p>Ce facteur est généralement le plus important.
Vous vous êtes certainement fixé une somme que vous ne
pourrez dépasser que dans des limites raisonnables (moins de
500 francs environ) et moyennant un service supplémentaire
non négligeable. On trouve à l'heure actuelle
d'excellents modems dans une gamme de prix de l'ordre de 1000 FF
à 2000 FF.</p>
</dd>
<dt><b>Le débit</b></dt>
<dd>
<p>La réponse pourrait être vague : tout
dépend de l'utilisation. En fait, il semble que la plupart
d'entre vous se connectera à Internet et la plupart des
fournisseurs proposent désormais des accès à
28800 bits/s. Il semble raisonnable d'investir dans un tel modem,
d'autant plus que leur coût est rarement supérieur
à 2000 FF. Vous pouvez d'ailleurs espérer gagner
un peu sur les temps de connexions lors de transferts de fichiers
ou de navigation "WEB".</p>
</dd>
<dt><b>Le type de modem : interne ou externe</b></dt>
<dd>
<p>Pour répondre rapidement, on pourrait dire que le modem
interne a, en France, tous les défauts. Hors de France, il a
beaucoup de défauts. C'est un avis, il vaut ce qu'il vaut,
mais il semble partagé par bon nombre
d'utilisateurs :</p>
</dd>
</dl>
<ul>
<li>le premier défaut est qu'il est interne et occupe donc
un emplacement sur le <i>bus</i>. En externe le modem est de plus
facilement transportable d'un PC à un autre, par
exemple ;</li>
<li>le deuxième est que notre opérateur national
demande à ce qu'un numéro soit "brûlé"
lorsqu'un appel échoue plusieurs fois. Une fois le
numéro brûlé, 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 ?</li>
<li>le troisième est plutôt lié au confort. La
plupart des modems externes possèdent en effet des voyants
indiquant l'état de la connexion. Il est agréable de
constater rapidement que la connexion est perdue ou que le
transfert est perturbé.</li>
</ul>
<p>Le seul inconvénient du modem externe est qu'il occupe un
port série. De plus il vaut mieux posséder un port
série rapide de type 16550A (les 16550 sont bogués).
Notez cependant que les ports série de type 8250 (les
anciens) supportent des débits pouvant aller jusqu'à
57600 bits/s. Contrairement à ce que l'on dit, ils ne sont
pas si mauvais que cela. Qui est déjà monté
à des débits supérieurs ?</p>
<h2><a name="s11">11. Quelques chiffres</a></h2>
<p>Beaucoup d'utilisateurs se posent des questions sur ce qu'ils
peuvent attendre de leur modem et du coût des communications.
Bien souvent, la facture surprend tous les deux mois.</p>
<h2><a name="ss11.1">11.1 Débit réel</a></h2>
<p>Un petit tableau vaut mieux qu'un long discours, voici quelques
valeurs de débits réels. Evidemment, il n'est pas
tenu compte des problèmes de lignes, de disponibilité
des serveurs qui réduisent parfois les taux de transfert
effectifs. De plus, les valeurs sont indiquées sans
compression logicielle. En cas de compression, il faudra multiplier
les valeurs par au plus 2, ce qui est déjà
optimiste.</p>
<p>Il faut savoir qu'en transmission asynchrone 8 bits,
étant donnés les bits de <b>start</b> et de
<b>stop</b>, le rendement est d'environ 80%.</p>
<blockquote>
<pre>
<code>+---------------+--------------+-------------------+
| 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 |
+---------------+--------------+--------+----------+
</code>
</pre></blockquote>
<h2><a name="ss11.2">11.2 Coûts de connexion</a></h2>
<p>Le meilleur indicateur pour ce genre de calcul est bien entendu
France Télécom. Essayons ici de dégager
quelques grands chiffres. Les prix sont indiquées pour un
appel à Paris :</p>
<blockquote>
<pre>
<code>+---------------+---------------------------------+
| | 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 |
+---------------+---------------------------------+
</code>
</pre></blockquote>
Prix de l'unité Télécom : 0,742 FF.
<h2><a name="s12">12. Envisager d'écrire des
applications</a></h2>
<p>Vous avez sûrement plein d'idées d'applications
intéressantes, mais envisager de contrôler une
jonction série vous fait peur ? Voici quelques petites
indications.</p>
<h2><a name="ss12.1">12.1 Et si c'était
simple ?</a></h2>
<p>Sous Unix, donc sous Linux, les seuls objets manipulés
lors des entrées/sorties sont les <i>fichiers</i>. (Tiens,
au fait, on aurait peut-être dû commencer par
là ! Bon, vous le saviez déjà, ce n'est
pas un cours Unix). La jonction série n'échappe pas
à cette règle et le pilote vous la présente
ainsi. Ici, il s'agit d'un (ou plutôt deux comme on le verra
plus loin) fichier particulier, bien sûr, puisque se cache
derrière un pilote (<i>driver</i>) en mode caractère,
mais la façon de réaliser les entrées sorties
est la même : <b>open, read, write, ioctl, close</b>. Il
y a quand même quelques petites choses à savoir.</p>
<p>Le pilote série s'est enregistré, à
l'initialisation du noyau, comme un <i>tty</i>. Il est donc
géré comme un tty classique. Il apporte bien entendu
quelques caractéristiques supplémentaires que nous
verrons rapidement dans la section concernant la commande
<i>ioctl</i>. Toujours est-il que si vous savez gérer un
<i>tty</i> sous Unix (commande <i>stty</i>), vous saurez sans
problème gérer ce pilote.</p>
<h3>open, close</h3>
<p>La méthode d'ouverture et de fermeture d'un port
série est classique. Néanmoins un mécanisme
particulier se cache derrière la primitive <b>open</b> qui
est rapidement décrit à la section <a href=
"#sec-appels">Appels entrants (Dial-in) et appels sortants
(Call-out) sous Linux</a>.</p>
<h3>read, write</h3>
<p>Rien à signaler de particulier.</p>
<h3>ioctl</h3>
<p>Le contrôle de tout système d'entrée/sortie
se fait avec la commande système <i>ioctl</i>. Elle est
souvent masquée par des commandes de haut niveau (setserial,
stty, modemstat, ...), mais elle est leur moteur.</p>
<p>Selon que vous souhaitez vous adresser aux
fonctionnalités classiques d'un <i>tty</i> ou aux fonctions
spécialisées du pilote série, vous utiliserez
deux sous-ensembles de commandes différentes. Vous les
retrouverez dans le fichier à inclure
<i>linux/termios.h</i>. Décrivons-les rapidement (on
déborde un tout petit peu du sujet
<code>:-)</code>) :</p>
<dl>
<dt><b>TCGETS - TCSETS</b></dt>
<dd>
<p>et quelques dérivés avec WAIT, FLUSH... Elles
permettent de récupérer (resp. positionner) les
attributs standard <i>tty</i> dans une structure <i>termios</i>
(voir le fichier <i>linux/termios.h</i>)</p>
</dd>
<dt><b>TIOCSTTY - TIOCNOTTY</b></dt>
<dd>
<p>permettent de définir (resp. annuler) une session
d'utilisation du <i>tty</i>. Ceci est visible car, entre autres
choses, une conséquence est le changement des droits du
fichier correspondant</p>
<blockquote>
<pre>
<code>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
</code>
</pre></blockquote>
</dd>
<dt><b>TCFLSH et compagnie</b></dt>
<dd>
<p>positionnement d'indicateurs (voir la commande stty)</p>
</dd>
<dt><b>TIOCGSERIAL - TIOCSSERIAL</b></dt>
<dd>
<p>permettent de récupérer (resp. positionner) les
informations générales dans une (resp. à
partir d'une) structure <i>serial_struct</i> (voir le fichier
<i>linux/serial.h</i>) : le type de port série, la
ligne, le port, l'irq le port utilisé... ni plus ni moins ce
que fait <i>setserial</i>.</p>
</dd>
<dt><b>TIOCMGET - TIOCMSET</b></dt>
<dd>
<p>permettent de récupérer (resp. positionner) les
informations plus spécifiques à la jonction
proprement dite (dans un entier, sous forme de bits
positionnés selon que l'indicateur correspondant est vrai ou
faux) :</p>
</dd>
</dl>
<blockquote>
<pre>
<code>+-------------------------------------------------------------------------------------------+
| // 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
</code>
</pre></blockquote>
<h2><a name="sec-appels"></a> <a name="ss12.2">12.2</a> Appels
entrants (Dial-in) et appels sortants (Call-out) sous Linux</h2>
<h3>Introduction</h3>
<p>Le pilote série du noyau de Linux propose de gérer
un même port série à la fois pour les appels
entrants et pour les appels sortants exploitant ainsi pleinement
leur caractéristique bi-directionnelle. Il offre donc
à l'utilisateur deux types de fichiers :</p>
<ul>
<li><code>/dev/ttyS<n></code> : sont
généralement utilisés en
entrée ;</li>
<li><code>/dev/cua<n></code> : sont
généralement utilisés en sortie.</li>
</ul>
<h3>Gestion</h3>
<p>Chaque port série est enregistré deux fois
auprès du gérant <i>tty</i> : une fois en mode
<i>entrée</i> (ttyS, majeur 4) et une fois en mode
<i>sortie</i> (cua, majeur 5). Voyons rapidement comment le
pilote gère ensuite les "deux" ports :</p>
<ul>
<li>les ports séries <code>/dev/cua</code> sont
gérés en mode <i>non-bloquant</i>. Leur ouverture
n'est possible que si la ligne <code>/dev/ttyS</code>
correspondante n'est pas ouverte et active (sinon
<code>errno</code> retourne EBUSY) ;</li>
<li>les ports séries <code>/dev/ttyS</code> sont
gérés en mode bloquant ou non-bloquant, c'est donc un
peu plus compliqué. Si l'indicateur CLOCAL est
positionné, l'ouverture en mode <b>bloquant</b> est
effective si la ligne <code>/dev/cua</code> est libre. Si
l'indicateur CLOCAL n'est pas positionné, elle est effective
si les deux conditions suivantes sont réunies :
<ul>
<li>la ligne est libre (le <code>/dev/cua</code> correspondant
n'est pas utilisé),</li>
<li>la porteuse (circuit 109) a été
détectée.</li>
</ul>
Dans ce mode et pendant que l'ouverture est bloquée, la
ligne n'est pas occupée, ce qui signifie qu'une application
peut toujours effectuer un appel sortant. Si le port est en cours
de fermeture, l'ouverture échoue (EAGAIN).
<p>L'ouverture en mode non-bloquant, quant à elle, est
effective si le port n'est pas déjà ouvert et actif
(sinon <code>errno</code> retourne EBUSY)</p>
<blockquote>Les applications utilisent de plus le mécanisme
des fichiers de verrouillage garantissant l'unicité
d'utilisation de la ressource.</blockquote>
.</li>
</ul>
<p>C'est le mode qu'utilisent beaucoup d'applications comme
<i>getty</i> qui souhaitent dans un premier temps initialiser la
ligne (pour éviter des instabilités liées aux
connexions précédentes) voire ensuite pour
initialiser l'équipement (modem). Elles ne
s'intéressent qu'au fait que la ligne soit occupée,
en fermeture ou libre. Si celle-ci n'est pas libre, l'application
se termine et le mécanisme du <i>respawn</i> se charge de
les relancer.</p>
<p>Pour la gestion de la connexion proprement dite, l'application
<i>getty</i> (pour prendre un exemple courant) ouvre la ligne, soit
en mode bloquant si vous laissez le modem en réponse
automatique, soit en mode non-bloquant si vous souhaitez qu'elle
gère activement la connexion. Elle est alors en attente
bloquante en lecture (sur <i>read</i>).</p>
<h2><a name="s13">13. Quelques applications
intéressantes</a></h2>
<h2><a name="ss13.1">13.1 Un numéroteur</a></h2>
<p>Cette idée va faire plaisir à <i>Xavier
CAZIN</i> : c'est la sienne. Le mieux est de le laisser
parler :</p>
<blockquote>En fait, je trouverais très utile de cliquer sur
un bouton pour appeler une personne retrouvée dans une base
de données par exemple. Surtout si elle se trouve à
l'étranger (minimum 12 chiffres depuis ici). Donc, ce que
j'aimerais, ce sont les renseignements nécessaires au
programmeur pour pouvoir construire un frontal qui demande au modem
de composer le numéro choisi, puis affiche un message (si le
poste n'est pas occupé) du style "Le téléphone
sonne, prenez le combiné". Ces petites choses toutes simples
demandent de comprendre ce que signifie prendre la ligne et la
relâcher, pour un modem.</blockquote>
<p>Excellent exercice. Alors avec tout ce que l'on vient de dire,
au travail <code>:-)</code>. En laissant de côté
la partie base de données, l'algorithme à utiliser
correspond à <i>l'organigramme d'un appel</i> donné
à titre d'information au chapitre <a href="#sec-modems">Le
modem</a>, auquel il faut rajouter :</p>
<ul>
<li>au préalable, ouvrir le port série
(<code>/dev/cua<n></code>), le configurer. Le mieux est de
prendre exemple sur ce que fait <i>getty</i> ;</li>
<li>envoyer ensuite les commandes AT d'initialisation puis de
numérotation (utiliser la fonction chat()) qui fait ceci
très bien ;</li>
<li>enfin se mettre en lecture sur le port afin de détecter
les messages émis par le modem. Le seul problème ici
est qu'il sera difficile d'attendre certains d'entre-eux
(NO ANSWER, TIMEOUT) étant donné qu'il faut
prévenir l'utilisateur qu'il peut décrocher.</li>
</ul>
<p>Par contre les messages NO DIALTONE (modem pas
branché), et BUSY sont fort intéressants et
permettent d'informer l'utilisateur immédiatement.</p>
<h2><a name="ss13.2">13.2 modemstat et compagnie</a></h2>
<p>Vous trouverez sur les <i>serveurs ftp</i> habituels quelques
petits programmes permettant d'afficher l'état de la
jonction. Vous pourrez vous intéresser
particulièrement à la façon de
récupérer les informations (plutôt que sur
l'interface utilisateur qui est l'exemple même de ce qu'il ne
faut pas faire).</p>
<blockquote>
<pre>
<code>/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
</code>
</pre></blockquote>
<p>Un bon point pour statserial aussi simple que bien
présenté, en mode texte.</p>
<h2><a name="ss13.3">13.3 Un détecteur de signal 109
(CD)</a></h2>
<p>Lu dans <i>comp.os.linux.development.apps</i> cette demande</p>
<blockquote>Existe-t-il un utilitaire que je pourrais utiliser dans
un <i>shell-script</i> et retournant une valeur, disons 1, si le
signal <i>Détection de porteuse</i> est monté et 0
sinon ?</blockquote>
<p>Le message ne dit pas quel en serait l'usage mais peu importe
c'est un excellent exemple d'utilitaire assez facile à
réaliser. Voici d'ailleurs un exemple de code source
possible :</p>
<hr>
<pre>
------------------------- 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 -------------------------
</pre>
<hr>
<p>On pourra ensuite l'utiliser dans un <i>shell</i> de la
manière suivante :</p>
<hr>
<pre>
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
</pre>
<hr>
<h2><a name="s14">14. Remerciements</a></h2>
<p>Ce document n'aurait vu le jour sans un certain nombre de gens
fort sympathiques et plein de bonnes idées appartenant pour
la plupart à la mailing list de traduction :</p>
<p>René COUGNENC,\\ Xavier CAZIN,\\ Bernard CHOPPY,\\
François AUDIBERT\\ Eric DUMAS,\\ Pierre FICHEUX, \\
Hervé MIGNOT, \\ Pierre VASSELLERIE, \\ Jacques LAVIGNOTTE,
\\ et tous les autres.</p>
</body>
</html>
|