Vous êtes sur la page 1sur 136

EICW

Rseaux locaux et TCP/IP

Notes de cours G. Barmarin YRES

(50 priodes)

Formation webmaster

EICW

2007-2008

Codage binaire des chiffres et des lettres


http://www.grappa.univ-lille3.fr/~torre/guide.php?id=courscodages

Reprsentation binaire dun nombre Reprsentation des nombres entiers


La base 2
On peut reprsenter des nombres par une combinaison de zros et de uns. Chaque chiffre binaire (BInary digIT) est appel BIT. 8 bits forment un octet (BYTE). Mais plusieurs codifications sont envisageables. La plus utilise est le binaire (ou binaire naturel en cas d'ambigut). passage binaire (indice b) -> dcimal (indice d) : 1011001b reprsente : 1x26 +0x25 +1x24 +1x23 +0x22 +0x21 +1x20 = 1x64 +0x32 +1x16 +1x8 +0x4 +0x2 +1x1 = 89d l'inverse, pour transformer 89d en binaire, on peut utiliser la mthode des divisions successives par 2 : on divise successivement par 2 jusqu' un rsultat de 0, les restes successifs (de bas en haut) forment le nombre binaire.

Mentalement, on peut rflchir comme ceci : 89 = 1x64 reste 25 donc 0x32, 1x16 reste 9, 1x8 reste 1 donc 0x4, 0x2, 1x1. On utilise un petit b pour bit et un grand B pour BYTE (=8 bits), ventuellement prcd dun facteur de multiplication : 1Kb (1024 bits) ou 1 KB (1024 Bytes ou octets soit 8x1024b=8192 bits !). En franais, lutilisation du mot octet la place de Byte lve lambiguit : 1byte = 1 octet et 1KB = 1Ko Attention, 1K (Kilo) en informatique ne vaut pas 1000 mais 1024 (210) et un Mga ne vaut pas un million mais 1048576 soit 1024x1024 !!!!

La base 16 (hexadcimal)
On utilise les chiffres 0 9 puis les lettres A F. 3A5h vaut 3x162 + 10x161 + 5x160 =3x256 + 160 + 5 = 933d . On passe de l'hexa au dcimal par divisions successives par 16. Transformer de l'hexadcimal en binaire et vice-versa est enfantin grce au fait que 16 est une puissance de 2 : il suffit de remplacer chaque chiffre par sa valeur binaire sur quatre bits (ou chaque groupe

de 4 bits par la valeur hexa correspondante) : 3A5h = 0011 1010 0101b (on peut vrifier que a vaut 933d). En effet, 001110100101b = 0.211 +0.210 +1.29 +1.28 +1.27 +0.26 +1.25 +0.24 +0.23 +1.22 +0.21 +1.20 = (0.23 +0.22 +1.21 +1.20)28 +(1.23 +0.22 +1.21 +0.20)24 +0.23 +1.22 +0.21 +1.20 = 0011bx28 +1010bx24 +0101bx20 = 3dx162+10dx16+5d =3A5h Contrairement ce que beaucoup de gens croient, aucune machine ne compte en hexadcimal. Elles travaillent toutes en binaire, et ne se servent de l'hexa que pour dialoguer avec nous (nous nous trompons trop souvent dans de longues listes de 0 et 1).

Le Dcimal Cod en Binaire (DCB ou BCD en anglais)


Si vous achetez un multimtre numrique, la valeur mesure est transmise l'afficheur en numrique. Mais elle est auparavant transforme en dcimal, chaque chiffre dcimal est transmis un afficheur en binaire naturel (sur 4 bits). C'est le BCD : la juxtaposition des valeurs binaires (sur quatre bits) des chiffres dcimaux. Donc 583d se notera 0101 1000 0011bcd. Cette codification pose deux problmes principaux :

un certain nombre de combinaisons ne sont pas utilises (celles qui correspondent A F en hexa). Sur 8 bits on reprsente les nombres de 0 99 au lieu de 0 255 en binaire. Sur 16 bits, on se limite 9999 au lieu de 65535... les calculs sont compliqus : rien que pour faire un programme d'incrmentation (ajouter 1), il faut ajouter 1 aux 4 bits de droite, si on obtient 1010 (10d), on les remplace par 0000 et on ajoute 1 aux quatre bits suivants (dizaines), sans oublier de vrifier si l'on ne passe pas la centaine suivante...

Ds qu'il y a des calculs effectuer, les systmes numriques traduisent les nombres BCD en binaire ds leur acquisition, les rsultats seront transforms en BCD au moment de leur sortie. On peut remarquer que pour transformer un nombre binaire en dcimal (bcd), l'ordinateur est oblig de faire des divisions successives par 1010 (10 en binaire)

Larithmtique binaire L'additionneur binaire

Rappel :

c'est un additionneur 1 bit

Au maximum, a1+b1+R0 = 1+1+1 Donc on a au maximum une retenue de 1. Donc R1 ne peut pas provenir des deux additionneurs en mme temps. Il n'empche qu'en toute rigueur les deux noeuds reprsents dans le schma doivent tre des portes OU Ce composant est un additionneur 3bits :

Codages des caractres


La premire tape consiste dfinir le jeu de caractres : il s'agit simplement de lister les caractres que nous voulons pouvoir reprsenter et les numroter. Ensuite, vient l'tape du codage : dcider comment les numros associs aux caractres vont tre reprsents par des bits. Quelle que soit la langue vise, une rflexion rapide amne un jeu d'une centaine de caractres. On peut donc lgitimement proposer un codage binaire classique sur 7 bits puisque celui-ci autorise 128 valeurs distinctes. Dans les annes 60, ce type de rflexion a conduit la dfinition du codage ASCII (pour American Standard for Communication and International Interchange). L'association entre les lettres et leurs numros n'est cependant pas arbitraire :

A . . . . Z . . a b . . . . z

65 .. .. .. .. 90 .. .. 97 98 .. .. .. .. 122

100 0001 ... .... ... .... ... .... ... .... 101 1010 ... .... ... .... 110 0001 110 0010 ... .... ... .... ... .... ... .... 111 1010

On note qu'une lettre majuscule se trouve 32 de sa version minuscule. Autrement dit, il suffit de changer le bit de position 5 pour passer de l'une l'autre. Ces 128 caractres proposs par l'ASCII sont finalement loin d'tre suffisants. Les caractres ASCII sont cods sur 7 bits mais utilisaient un 8me bit de contrle. Les codes ASCII tendus utilisent ce bit supplmentaire pour doubler le nombre de caractres reprsentables (au nombre de 256 donc). Les 128 premiers caractres restent ceux disponibles en ASCII ce qui permet une compatibilit dans les deux sens. Parmi ces codes binaires tendus, on trouve le ISO-8859-1 ou ISO-Latin-1 ddi aux langues de l'Europe de l'Ouest. Une variation sur cette norme est l'ISO-8859-15 qui intgre le symbole euro et le e dans l'o. D'autres codes ASCII tendus :

windows-1252 : une variation windowzienne sur le ISO-Latin-1... viter ; ISO-8859-2 : langues de l'Europe Centrale et de l'Est ; ISO-8859-3 : esperanto, maltais et turc ; ISO-8859-4 : langues baltes ; ISO-8859-5 : alphabet cyrillique ; ISO-8859-6 : arabe ; ISO-8859-7 : grec moderne ; ISO-8859-8 : hbreu et yiddish ; etc. 6

Vient ensuite la difficult de mlanger toutes ces langues, pour des documents incluant des traductions par exemple. Le jeu de caractres UNICODE a t conu dans cet esprit. On y trouve plus de 95 000 caractres reprsentant quasiment toutes les langues vivantes ou mortes. Par exemple, le caractre numro 12354 correspond au A dans l'alphabet japonais Hiragana ( ). Il y a plusieurs moyens de coder ce jeu de caractres :

l'UTF-16 : codage des caractres de UNICODE sur 16 bits ; on perd la compatibilit avec ASCII et un fichier peut occuper le double de sa place idale si le texte est monolingue ; l'UTF-8 rpond ces deux difficults en utilisant un nombre variable de bits selon le numro du caractre coder : o de 0 127 (caractres ASCII) : un octet de la forme 0xxx xxxx; o de 128 2047 : deux octets de la forme 110x xxxx 10xx xxxx; o de 2048 65 535 : trois octets de la forme 1110 xxxx 10xx xxxx 10xx xxxx; o de 65 536 1 114 111 : quatre octets de la forme 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx.

LUTF-8, spcifi dans le RFC 2279, est le plus commun pour les applications Unix et Internet et est le codage privilgi en XML. Son codage de taille variable lui permet dtre en moyenne moins coteux en occupation mmoire. Mais cela ralentit nettement les oprations o interviennent des extractions de souschanes, car il faut compter les caractres depuis le dbut de la chane pour savoir o se trouve le premier caractre extraire. LUTF-8 assure aussi, et cest son principal avantage, une compatibilit avec les manipulations simples de chanes en ASCII dans les langages de programmation. Ainsi, les programmes crits en C (langage) peuvent souvent fonctionner sans modification. Vous trouverez une information plus complte sur unicode aux adresses suivantes : http://fr.wikipedia.org/wiki/Unicode http://www.unicode.org/ Voici le tableau de la correspondance numro ASCII->caractre des touches claviers disponibles sur un ordinateur.
caractre NUL (Null) SOH (Start of heading) STX (Start of text) ETX (End of text) EOT (End of transmission) ENQ (Enquiry) ACK (Acknowledge) BEL (Bell) BS (Backspace) TAB (Tabulation horizontale) LF (Line Feed, saut de ligne) code ASCII 0 1 2 3 4 5 6 7 8 9 10 code hexadcimal 00 01 02 03 04 05 06 07 08 09 0A

VT (Vertical tabulation, tabulation verticale) FF (Form feed) CR (Carriage return, retour la ligne) SO (Shift out) SI (Shift in) DLE (Data link escape) DC1 (Device control 1) DC2 (Device control 2) DC3 (Device control 3) DC4 (Device control 4) NAK (Negative acknowledgement) SYN (Synchronous idle) ETB (End of transmission block, fin de bloc de transmission) CAN (Cancel, annulation) EM (End of medium, fin du mdium) SUB (Substitute, substitut) ESC (Escape, caractre d'chappement) FS (File separator, sparateur de fichier) GS (Group separator, sparateur de groupe) RS (Record separator, sparateur d'enregistrement) US (Unit separator, sparateur d'enregistrement) SP (Space, espace) ! " # $ % & ' ( ) * + , . / 0 1 2 3

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

0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33

4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \

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

34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C

] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ Touche de suppression

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

5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F

Le code ASCII tendu ANSI, utilis par les systmes d'exploitation rcents

10

11

Codages des couleurs en RGB


Une couleur code en RGB (Red Green Blue) se prsente comme un nombre hexadcimal six chiffres : FF06C3 par exemple. Chaque paire de chiffres est ddie une couleur primaire. Sur l exemple, cela donne :

FF pour le rouge ; 06 pour le vert ; C3 pour le bleu ;

soit les valeurs dcimales 255, 6 et 211. Chacune de ces valeurs indique l'intensit avec laquelle la source de lumire correspondante va tre allume. Puisque FF soit 255 est le maximum reprsentable sur deux chiffres en hexadcimal, on dduit :

100 % pour la source rouge ; 2,35 % pour la source verte ; 82,75 % pour la source bleue.

Les trois sources de lumire au maximum de leur intensit (FFFFFF) fournissent du blanc, alors que toutes les sources teintes (000000) font naturellement du noir.

12

Fonctionnement interne de base de lordinateur


L'ide de base a t de reprsenter par 1 ou 0 le fait qu'il y ait du courant ou non, dans un circuit lectronique (au dpart un "tube vide" ou un relais, dsormais des systmes semi-conducteurs composs de transistors), et de les combiner pour reprsenter des nombres en binaire. Au centre de l'ordinateur : la carte mre :

CPU (Central Processing Unit) : le processeur. Il commande tout le systme. Il sait faire des calculs arithmtiques de base (addition, soustraction, multiplication) mais au dpart uniquement sur des nombres entiers, des oprations logiques (et, ou, complment), et tester si le rsultat de ces calculs est positif, ngatif ou nul. Il sait lire un nombre en mmoire ou surs un port, ou l'crire (via le bus). Deux grandeurs caractrisent le CPU :

la taille de l'accumulateur (8, 16, 32, 64 bits) : c'est le nombre de chiffres maximum d'un calcul (en binaire). Mais un processeur 8 bit sait faire des calculs 32 bits, il lui suffit de dcomposer le calcul en 4 tapes (et donc il mettra 4 fois plus de temps pour le faire) sa frquence : c'est le nombre d'oprations lmentaires qu'il peut faire la seconde. Une horloge conue autour dun cristal de quartz envoie des tops intervalles rguliers, cette frquence, ce qui permettra de cadencer les calculs et de synchroniser les changes d'informations entre les diffrents composants.

Mmoire centrale : elle est partage en deux parties :

la mmoire vive (RAM Random Access Memory) : on peut y mmoriser (crire) des nombres binaires pour les relire plus tard. Il existe des mmoires statiques (SRAM) qui mmorisent les nombres aussi longtemps qu'elles sont alimentes, et les dynamiques (DRAM) qui sont plus rapides mais doivent tre rcrites intervalles rguliers ce qui consomme de lnergie. Mais toutes les deux oublient tout ds qu'on coupe l'alimentation la mmoire morte (ROM, Read Only Memory) : ce sont des composants qui par fabrication contiennent toujours les mmes valeurs, mme aprs coupure d'alimentation. Par contre il est impossible de modifier ces valeurs. Il existe
13

aujourd'hui des ROM programmables (PROM) qui peuvent tre crites une seule fois, hors de l'ordinateur l'aide d'un appareil spcial (programmateur de PROM). Certaines peuvent tre rinitialises pour pouvoir tre rcrites (EPROM, Ereasable PROM ou encore EEPROM electricaly ereasable PROM) Les interfaces : ils sont vus par le CPU comme des mmoires, il peut y crire ou lire des nombres binaires. Ils permettent la carte mre de dialoguer avec des dispositifs externes nomms "priphriques". En gnral l'interface est ralise par une carte lectronique, qui reoit des commandes du CPU, les traite et rend la rponse si ncessaire. Il y en a trois grands types :

la mmoire de masse : permet de stocker des informations (depuis la mmoire centrale), et de les rcuprer plus tard (mme voire surtout aprs coupure du courant). Ce sont par exemple les disques durs, cls USB, disquettes, cartes mmoire, CD, DVD... les interfaces homme machine permettent l'homme de donner des ordres et de visualiser les rsultats. Ils ont beaucoup volu, de l'interrupteur et le voyant (0/1), aux cartes perfores, clavier et cran, souris, imprimante, joystick, scanner, micro et carte son, camra numrique... Jusqu' il y a peu de temps, le traitement des informations ne surchargeait pas le CPU (temps de rponse trs suprieurs). Aujourdhui, beaucoup de ces priphriques possdent leur propre CPU Les interfaces machine - machine : modem, carte rseau, bus de terrain...

Le bus permet de transfrer des informations binaires sous forme dimpulsions lectriques reprsentant des valeurs binaires. Il relie tous ces composants, c'est ce qui fait que lorsque deux d'entre eux dialoguent, les autres doivent attendre. L'ordinateur ne peut de ce fait faire qu'une chose la fois. Pendant longtemps, l'horloge du processeur cadenait tous les composants. Ils fallait qu'ils soient tous aussi rapides. A la fin des annes 80, le PC tournait 4,77 MHz. Aujourd'hui on peut faire fonctionner un processeur plusieurs Ghz (100 fois plus vite quen 1980), mais pas les mmoires, et encore moins les cartes d'interfaces. On va donc prvoir des frquences diffrentes, et entre les deux une "zone tampon" appele "cache". Celui-ci mmorise les informations qui arrivent grande vitesse pour les transmettre la vitesse du destinataire. Evidement, quand le cache est plein il prvient l'metteur qui devra alors soit attendre soit en profiter pour faire quelque chose d'autre. Il y a dsormais des caches multiples (cache mmoire, cache disque,...) et diffrentes frquences de composants. Vous pouvez insrer par exemple une carte PCI sur tout ordinateur, elle fonctionnera toujours la mme vitesse.

14

Le fonctionnement interne de l'ordinateur (dtails)

CPU : Central Processing Unit (unit centrale de traitement), on l'appelle "processeur" en franais. Quand on russit mettre tous ses composants dans un seul circuit intgr, on le nomme "micro processeur". ALU : Unit Arithmtique et Logique : c'est ce composant qui sait faire les calculs. C'est dire que pour chaque combinaison de 0 et de 1 en entre, il sait quelle combinaison de 0 et de 1 il doit donner en sortie. La sortie ne dpend que des entres, le problme est donc combinatoire. C'est donc un ensemble de portes logiques. Par exemple, le schma de l'additionneur que nous avons vu. Une caractristique importante d'un processeur est le nombre de chiffres binaires (bits) sur lesquels l'ALU sait faire les calculs. Notons le N ; il valait 8 bits (anciens ordinateurs personnels comme l'Apple II, Commodore,les premiers PC...) mais aujourd'hui les micro-contrleurs qui grent une tl, une machine laver...), travaillent sur 16 bits et les PC sur 32 bits (le Pentium), 64 bits voire 128 bits dans les gros ordinateurs.

15

Registres : ce sont des mmoires internes du processeur. Un registre est capable de stocker N 0 ou 1, par exemple le rsultat de la dernire opration de l'ALU. Il est en fait compos de N bascules. Dans un processeur, le nombre de registres est trs limit (3 8). L'un de ces registres est plus important que les autres, il est appel accumulateur (accu). Sur une calculatrice, l'accu est le registre constamment reli l'affichage : c'est ici qu'est stock le rsultat de l'opration prcdente, ou la donne du calcul suivant. PC (Partie Commande) : elle commande le processeur. Par exemple, si elle veut additionner deux registres, elle va brancher ces deux registres l'entre de l'ALU, demander une addition, et brancher la sortie de l'ALU sur le registre devant rcuprer le rsultat. Mais il n'est pas possible de changer les branchements. En fait, tout est branch ensemble, sur un ensemble de N fils appel "bus de donnes", et devant chaque composant un ensemble de N portes peut tre ouvert ou ferm par ordre de la PC. A un instant donn deux portes sont ouvertes, donc deux composants sont relis, ils monopolisent le bus, les autres composants doivent attendre leur tour. C'est pourquoi un processeur ne peut faire qu'une chose la fois. Chaque rservation du bus se fait durant une dure dtermine, la mme quelle que soit l'opration effectue. Une horloge (note ) envoie des "tops" intervalles rguliers, chaque top deux nouveaux composants sont relies au bus, et peuvent y transmettre une valeur jusqu'au prochain top. Le nombre de tops envoys en une seconde est la seconde caractristique importante d'un processeur, c'est sa "frquence". Les tout premiers ordinateurs fonctionnaient quelques dizaines de Hertz, le premier PC tournait 4,77 MHz, aujourd'hui on dpasse les 3 GHz. Les programmes requirent bien plus de mmoires que les quelques registres du CPU. On regroupe donc un ensemble de mmoires l'extrieur du CPU. Chaque mmoire est dsigne par un numro : son "adresse". Pour lire (ou crire) un nombre en mmoire, le processeur doit donner l'adresse dsire (un nombre binaire sur N' bits), qu'il fournit sur le bus d'adresse, puis la valeur peut transiter sur le bus de donnes. N' n'est pas ncessairement gal N, il dtermine le nombre maximal de cases mmoire accessibles par le CPU. Pour un processeur 8 bits, si N' valait 8 on ne pourrait avoir que 256 cases mmoire. En fait N' valait 16 sur les ordinateurs 8 bits (limitant la mmoire 64ko !), N'=20 alors que N=16 sur le 8086 utilis sur les premiers PC, limitant la mmoire 1Mo dont 640ko pour l'utilisateur (le 8088 tait quand lui un "faux 16bits" avec des registres 16 bits mais un bus de donnes 8 bits). Avant de pouvoir envoyer une adresse sur le bus d'adresse, le CPU doit la former dans le registre d'adresse (si N'>N il lui faudra deux oprations pour former une adresse). Aujourdhui, lespace adressable est de plusieurs giga-octets Comment commande-t-on la PC ? Chaque action qu'elle sait faire est numrote (en binaire), ce numro est appel "code opration" ou code-op. Le choix de la codification est videment fait par le fabriquant du processeur, c'est le langage machine. On commande l'ordinateur l'aide d'un programme, qui est une suite de code-ops. Le programme est lui aussi stock en mmoire, la queue-leu-leu. C'est le registre d'adresse de programme (RAP) qui sait tout moment o on en est dans le programme. Le CPU va y lire l'instruction suivante, la mmorise dans le registre d'instruction (RI) et l'effectue, ajoute 1 au RAP (sauf si c'tait un goto) et recommence, indfiniment. Le registre d'adresse de donnes (RAD) quand lui sert pour stoker l'adresse de la prochaine donne lire ou crire en mmoire.
Une animation sur internet pour comprendre la squence des oprations :

http://pierre.mf.free.fr/tpe/partie1/2_C_operation_simple_flash.htm
16

2) Les 5 gnrations de langages de programmation


Comment donne-t-on des ordres un ordinateur ? Grce un programme. Le CPU va chercher dans la mmoire centrale des "instructions". Chaque action de base que sait faire le processeur est dsigne comme on vient de le voir par un "code opration" qui est un nombre (en binaire). C'est ce qu'on appelle le "langage machine". Bien que tous les processeurs soient capables de faire peu prs la mme chose, chaque marque voire type a "numrot" diffremment les oprations. Vous ne pourrez donc pas faire tourner un programme PC sur un Mac qui ne possdait (jusquil y a peu) pas le mme processeur (sauf si vous avez un mulateur, programme qui pour chaque code op d'un processeur donne son quivalent pour un autre, mais c'est extrmement lent et limit). Exemple : sur un PC, je veux ajouter 5 dans la case mmoire n 1234. Ce numro de mmoire (on dit une "adresse") a trop de chiffres en binaire pour entrer dans un octet, on en utilise deux (le PC met toujours les derniers chiffres en premier). Exemple en hexa (en binaire ce serait trop long !) : lire le contenu d'une mmoire (un octet), et le stocker dans le processeur (dans une "mmoire" nomme accumulateur) est cod A0, ajouter un nombre l'accumulateur est cod 04, recopier l'accumulateur dans un mmoire est cod A2. Le programme sera donc : A0 34 12 04 05 A2 34 12 et fait 8 octets. C'est ainsi qu'on programmait les premiers ordinateurs (langage de premire gnration). Pour simplifier la programmation, on a dcid de donner un nom aux diffrentes instructions, c'est le langage mnmonique : MOV pour transfrer un nombre d'une mmoire, ADD pour additionner, AL pour dsigner l'accumulateur,... Voici ce que donne notre programme prcdent :

On permet galement au programmeur de dfinir ses propres noms (appels "identificateurs"). Par exemple on pourrait dfinir que la mmoire d'adresse 1234 a pour nom "memoire", la premire instruction deviendrait MOV AX,memoire. La traduction d'un programme mnmonique (un peu plus clair pour le programmeur) en langage machine (seul comprhensible par le processeur) s'appelle "assemblage". Par abus de langage, on regroupe souvent sous le nom "assembleur" indiffremment chacun de ces deux langages.
17

Trs rapidement, on est pass une troisime gnration de langages : les langages dits "volus" et "structurs". Ici on a prvu des instructions plus complexes, qui seront traduites en plusieurs codes op. On y a galement prvu des types numriques plus complexes (au minimum les rels, appels aussi nombre en virgule flottante). Plutt que de les numroter, on nomme les mmoires dont on a besoin (variables), on peut aussi regrouper plusieurs instructions sous un seul nom (sous-programmes). Les deux premiers langages volus ont t le FORTRAN (FORmula TRANslator) cr pour le calcul scientifique, et COBOL pour les applications de gestion. Puis BASIC, langage peu puissant mais prvu pour l'initiation la programmation (les premiers PC se programmaient en basic, les premiers MSDOS taient livrs avec BasicA, les suivants avec GW-Basic ou QBasic, prcurseurs du Visual Basic). Pour l'enseignement de l'informatique de plus haut niveau, on a cr PASCAL. Le C quand lui, un langage est plus efficace et plus puissant, mais aussi plus complexe. La quatrime gnration de langages correspond une organisation du programme non plus sous forme d'une suite ordonnes d'instructions, mais les instructions sont regroupes autour des donnes qui les utilisent. Ce sont les langages de bases de donnes et les langages orients objets (LOO). Pour ces derniers, de nombreux langages ont t cres. Mais c'est C++ qui s'est impos, car il est compatible avec C, et a permis une migration progressive. Les nouveaux langages crs aujourd'hui ont une syntaxe proche du C++ Les langages de 5 gnration sont ceux de l'intelligence artificielle. Ils ne se sont pas dvelopps autant qu'on le prdisait dans les annes 80. Ici, on ne programme plus, mais on donne, progressivement mais en vrac, de la connaissance sur le domaine traiter, au systme de se dbrouiller pour l'organiser (sous une forme qui pourrait par exemple approcher notre rseau de neurones) et puiser dans sa base de connaissances ce qui lui permettra de rsoudre les problmes qu'on lui pose.

18

3) La gestion de l'ordinateur
Pour viter de devoir donner des ordres en binaire l'ordinateur, on a cr pour chaque ordinateur un programme appel systme d'exploitation (OS operating system), qui est lanc au dmarrage de l'ordinateur. Il doit connatre comment accder aux interfaces, attend qu'on lui donne des ordres (on dit lancer une commande) et se dbrouille pour les excuter. Au dbut, l'OS tait spcifique chaque machine, vendu et maintenu par le fabriquant de l'ordinateur. Il ne prenait en charge que des priphriques du mme fabricant (et pas moyen d'changer une console BULL avec une IBM par exemple). Certains universitaires, lasss de devoir rcrire les programmes pour tous les OS, ont crit un OS multi-plateforme (Multics puis UNIX), mais longtemps les fabriquants ont refus de l'implanter, mme pour utiliser UNIX il fallait acheter l'OS du constructeur. Pour viter de devoir modifier l'OS chaque modification de priphriques, on en a extrait et fig une partie, qui sait grer un minimum de priphriques, en gnral une console en mode texte et le ou les supports qui contiennent le systme d'exploitation. Dans les premiers ordinateurs, ce programme tait enregistr sur une bande de papier perfore (en binaire) qu'on appelait "bootstrap". Aujourd'hui il est plutt log en ROM, sur un PC on l'appelle BIOS (Basic Input Output System), il sait vrifier la mmoire disponible, puis rechercher s'il y a des disques durs (un seul type, IDE, pas les SCSI par exemple) ou une disquette ou encore un CD-Rom, puis il y recherche un systme d'exploitation, le charge en mmoire puis lui passe la main. Il connat un type de console de base (pour le PC, en mode texte uniquement, mais certains fabricants y ont petit petit incorpor un fond graphique). L'OS lui aussi doit tre volutif. En particulier, si l'on veut permettre de choisir parmi une multitude de priphriques diffrents, il faut soit que l'OS les connaisse absolument tous, soit qu'on spare la partie concernant chaque priphrique possible, et que l'OS ne charge que celles qui correspondent la configuration demande (c'est le pilote ou driver). Le driver est donc spcifique un priphrique et un systme d'exploitation. Aujourd'hui, les priphriques sont capables de donner leur nom et leur type, ils sont dits "plug and play", chaque allumage l'OS va vrifier les composants disponibles, ce qui va rallonger l'initialisation mais pas ralentir le fonctionnement normal. Toute modification importante de la configuration de l'OS ou des priphriques ncessite donc de rebooter l'ordinateur. Les premiers ordinateurs personnels contenaient un OS minimal, log en ROM, et contenant en gnral le langage Basic. Il ne savait que grer le clavier et l'cran, en mode graphique ou semi-graphique (pavs de couleur), et permettait des jeux au graphisme trs simplifi par rapport aux standards actuels. La seule mmoire de masse disponible tait la cassette audio trs la mode une poque o vous ntiez peut-tre pas encore ns !. Puis les OS ont permis de grer des disques (et disquettes) et se sont appels DOS (Disk Operating System). Au dbuts du PC, le DOS le plus courant tait CP/M (on a aussi vu DR-DOS de Digital, PC-DOS d'IBM, QDOS,...) avant l'hgmonie du MSDOS (Microsoft DOS). Comment grent-ils les disques ? Un disque est un ensemble de secteurs, tous tant numrots. On appelle fichier un ensemble de donnes, regroupes sous un nom. L'OS doit donc disposer d'une table associant le nom du fichier aux secteurs qu'il utilise (FAT
19

File Allocation Table). Au dbut, la FAT tait crite sur les premiers secteurs du disque, et tait assez limite. Il a fallu grer des fichiers de taille variable, et donc stocks sur une suite non continue de secteurs en nombre variable.

On a dcompos la FAT en deux parties :

un rpertoire (directory) contenant par exemple 256 noms de fichiers, associs chacun au numro de son premier secteur, et quelques informations supplmentaires (date de cration, taille ou nombre de secteurs...) une table de chanage des secteurs : pour chaque secteur, le numro du secteur suivant pour le mme fichier. Un code spcial est utilis pour le dernier secteur d'un fichier. Les secteurs libres sont grs comme un gros fichier, donc une suite de secteurs, ce qui permet de trouver facilement des secteurs libres.

Chaque systme d'exploitation a dcid d'une gestion de disque (avec ses avantages et ses limites). Sous MSDOS, la FAT12 stockait les numros de secteurs sur 12 bits (donc 4096 secteurs maxi), avec des noms de fichiers de 8+3 caractres. La FAT16 permet 65000 secteurs, la FAT32 beaucoup plus. Depuis Windows 95, une table annexe associe les noms longs au vrai nom d'un fichier (par exemple "program files" pour PROGRA~1). Les diffrents systmes d'exploitation ont tous une mthode de gestion des disques (File System FS) diffrents (FAT16 sous DOS, FAT32 sous Windows, NTFS pour Windows NT, UFS sur d'anciens Unix, ExFS Extended FS, NFS via rseau (network),...). Mais il y a deux grandes classes : les mono et multi-utilisateurs. Un FS multi-utilisateurs connat le propritaire de chaque fichier, et peut donc grer des droits d'accs diffrents. Sur les FS mono-utilisateur, tout utilisateur ( condition d'avoir pu entrer sur le systme) a les mmes accs aux fichiers. Si l'on veut pouvoir crer beaucoup de fichiers, il faut prvoir de grosses tables, et donc rserver une grosse partie du disque pour cela (surtout au temps o les disques avaient de petite capacit de stockage). La solution a t de ne crer qu'un petit rpertoire, appel racine (root), et de permettre de crer dans un rpertoire des fichiers particuliers, nomms sous-rpertoire, avec exactement la mme structure (pouvant donc contenir des fichiers normaux et des sous-rpertoires). Les disques sont donc grs de manire arborescente. Windows a choisi d'appeler "poste de travail" la racine de cet arbre. Sous cette racine, uniquement et obligatoirement les disques, nots A:, C:,... Dans ces disques, un rpertoire (Windows) contient les commandes du systme d'exploitation et ses fichiers de configuration, Program Files regroupe les programmes supplmentaires, Mes Documents les fichiers utilisateur. Sous Unix, la racine est nomme /, les commandes du systme sont dans /bin, les fichiers de configuration dans /etc, les programmes supplmentaires dans /usr, les fichiers utilisateurs dans /home. Les disques peuvent correspondre n'importe quel rpertoire (mais tout ce qui est dans le disque est obligatoirement dans ou sous ce rpertoire). On associe un disque un rpertoire par un montage (mount). Si par exemple on monte /home sur un autre disque (ou une autre partition) que le reste, les utilisateurs, mme en saturant leur zone personnelle ne pourront pas saturer le disque systme. Exemple d'arborescence sous Windows (PC) et sous Solaris (Station Sun):

20

21

Commandes de base d'un systme d'exploitation :

DOS - Telnet vers Windows UNIX afficher la liste des fichiers (dtaille) changer de rpertoire de travail remonter la racine effacer un fichier effacer tous les fichiers crer un rpertoire supprimer un rpertoire (vide) copier un fichier dplacer (ou renommer) un fichier ou rpertoire copier un rpertoire et ses sous-rpertoires grer les accs aux fichiers aide sur une commande DIR /V CD rpertoire CD \ DEL fichier DEL *.* MD rpertoire RD rpertoire COPY source dest MOVE src dest XCOPY /S src dest ATTRIB commande /? ls -l cd rpertoire cd / rm fichier rm * mkdir rpertoire rmdir rpertoire cp source dest mv src dest cp -R src dest chmod man commande

22

Internet, comment cela fonctionne ?


Qu'est-ce qu'un nom de domaine ?
Un nom de domaine est une chane de caractres identifiant une adresse IP. Ce nom est utilis dans l'ensemble des services lis l'internet : web, courriel, etc. Notre exemple ci-dessous montre la composition d'une URL partir du nom de domaine "exemple.fr". Son URL sera donc http://www.exemple.fr et son adresse lectronique du style "xxxxx@exemple.fr".

Pour rsumer :

http:// (HyperText Transfert Protocol) : c'est ce qu'il faut ajouter au nom du serveur web pour obtenir l'adresse du serveur web. www (World Wide Web) : c'est ce qu'il faut ajouter au nom de domaine pour obtenir le nom du serveur web. exemple.fr : c'est le nom de domaine. exemple : c'est un nom, n'importe lequel, gnralement celui d'une entreprise, d'un particulier ou d'une association mais les noms sont de plus en plus souvent originaux/insolites/bizarres. .fr : c'est l'extension (ou suffixe).

Les caractres autoriss pour composer les noms sont les lettres A Z non-accentues, les chiffres 0 9 et le tiret. Cela pourrait un jour voluer et nous aurons peut-tre un jour accs aux caractres spciaux ($, , ...) et accentus.

Le contrle
Avant 1998, le contrle de l'unicit des adresses sur Internet tait assur pat l'IANA (Internet Assigned Naming Authority). Cet organisme a laiss sa place en 1998 une structure plus large du nom de ICANN (Internet Corporation for Assigned Names and Numbers). Cette socit (sans but lucratif) a t cre sous l'impultion du gouvernement amricain et dans le but de rpondre aux demandes de l'internationalisation de l'Internet. Les assembles gnrales de l'ICANN ont lieu trois fois par an, et se tiennent alternativement dans l'une des cinq zones gographiques dtermines par l'ICANN : Amrique du Nord, Europe, Afrique, Amrique Latine, Asie/Pacifique. La langue d'change et de travail est bien sr l'Anglais. 23

Elle est constitue de plusieurs organismes de support :


ASO (Addresses Supporting Organisation). Groupe charg de la rgulation de l'attribution des adresse IP. DNSO (Domain Names Supporting Organization). Groupe destin s'occuper plus particulirement des noms de domaines et de la rgulation de leur attribution. PSO (Protocol Supporting Organisation). Groupe charg de la rgulation des protocoles.

Les rles de l'ICANN sont varis :


Une rgulation et une coordination gnrale. La rgulation de la fonction IANA (TLD et blocs IP). Une internationalisation et une promotion du multilinguisme. L'implication des ccTLD dans le processus d'internationalisation, avec le souci de parvenir une stabilisation de l'internet. L'encadrement de la publication racine des noms de domaine (RSSAC). L'introduction de nouveau gTLD. L'volution du nommage et des services qui lui sont associs (ENUM, IDN - International Domain Name -, etc.). Les relations intergouvernementales (GAC - Governmental Advisory Committee).

Top Level Domain


Les TLD (Top Domain Level) sont les domaines de premier niveau dans l'adresse d'un site Internet. Il existe deux catgories : les ccTLD qui sont les domaines dpendant des pays ou territoires gographiques (fr, be, ca,...) et les gTLD qui sont les autres domaines (com, edu,...) rangs thmatiquement. Les gTLD (Generic Top Level Domain). La liste des gTLD est la suivante :

.aero : domaine rserv l'industrie des transports ariens et parrain par la Socit Internationale de Tlcommunications Aronautiques (SITA). .biz : domaine rserv aux affaires. .com : domaine opr par VeriSign Global Registry Services et concerne tout ce qui touche au commerce. .coop : domaine rserv aux associations et coopratives, et parrain par Dot Cooperation LLC. .edu : domaine pour les institutions scolaires post-secondaires aux Etats-Unis. .gov : domaine exclusivement rserv au gouvernement amricain. Opr par le General Services Administration des Etats-Unis. .info : domaine concernant l'information et opr par Afilias Limited. .int : domaine utilis seulement par les organisations reconnues par des traits internationaux entre gouvernements. .mil : domaine rserv exclusivement l'arm amricaine. Opr par le DoD Network Information Center. .museum : domaine rserv pour les muses et parrain par la Museum Domain Management Association. .name : domaine reserv aux individus et opr par Global Name Registry. .net : domaine opr par VeriSign Global Registry Services. .org : domaine rserv aux organismes non-commerciaux. Opr par Public Interest Registry. .pro : domaine rserv tout ce qui touche les activits professionnelles. Opr par RegistryPro. 24

Attention tout de mme, ces domaines ne sont pas attribus de faon stricte : tout le monde peut acheter un .org, et certains .com n'ont pas d'activit commerciale. Le .gov est uniquement rserv aux Etats-Unis Les suffixes .aero, .biz, .coop, .info, .museum, .name et .pro sont des nouveaux gTLD approuvs par l'ICANN en 2000. Ils nont connu quun succs mitig mon sens parce quils sont arrivs trop tard et quil rendent moins intuitif le nom de domaine en complexifiant les possibilits offertes. Les ccTLD (Country Code Top Level Domain) Les enregistrements officiels ont commenc diffrentes dates selon les pays. Le domaine .us (Etats-Unis) a t enregistr le premier, le 15/02/1985, suivi du .uk (Royaume-Uni) le 27/07/1985. Le reste de lEurope ayant suivi partir de 1986. Au 1er janvier 2004, il y avait 243 TLD ou suffixes pour les pays et territoires. Exemple : .be, .fr, etc (liste : voirs cours de communication)

25

Le protocole HTTP
Lorsqu'on veut afficher des pages de sites web par le biais de son navigateur favori (Internet Explorer, Netscape Navigator ou autre), on utilise le protocole HTTP (HyperText Transfer Protocol). En fait, lorsqu'on saisit une URL (Uniformed Resource Locator) dans la barre d'adresse du navigateur, celui-ci "demande" au serveur web desservant l'adresse IP de cette URL de lui renvoyer la page correspondant cette URL (par dfaut la page index.htm ou index.html). Quand le serveur web renvoie la page ou un message d'erreur au navigateur , il lui "rpond". On peut donc diviser le HTTP en deux parties : Les questions, les ordres qui "remontent" du client vers le serveur Les rponses qui "descendent" du serveur vers le client. Le HTTP est un protocole en mode texte, c'est--dire que les requtes et les rponses sont "lisibles" par un humain. Ainsi, lorsque vous voulez vous connecter la page d'accueil du site www.eicw.be, le navigateur envoie vers le serveur web la requte suivante : GET www.eicw.be HTTP1/1 Pour vous en convaincre, faites le test suivant dans l'Invite de commande DOS (Programmes/Accessoires/Invite de commandes) : telnet www.eicw.be 80 Connexion www.eicw.be... GET / HTTP1/1 (+ 2* ENTER) HTTP/1.1 200 OK Date: Mon, 22 Dec 2003 15:38:12 GMT Server: Apache/1.3.24 (Win32) PHP/4.2.0 Last-Modified: Wed, 04 Dec 2002 07:39:00 GMT ETag: "0-736-3dedb114" Accept-Ranges: bytes Content-Length: 1846 Connection: close Content-Type: text/html <HTML> <HEAD> <TITLE>Ecole Industrielle et Commerciale de la Ville de Wavre</TITLE> ...etc...

26

Le protocole HTTP est donc divis en deux parties : La requte faite par le client au serveur La rponse faite par le client au serveur La requte est compose d'une mthode et de champs : Dans l'exemple ci-dessus, la mthode utilise est GET. La mthode POST permet d'envoyer des informations au serveur dans le corps du message d'une requte HTTP (cfr Formulaires). Les champs envoys dans la requte permettent de donner des renseignements sur le client (le navigateur) et son utilisateur (vous) : par exemple, le champ Accept permet d'indiquer les formats de donnes que vous voulez recevoir tels que text/html, image/gif, image/jpeg, etc En l'absence de ce genre de prcision, le serveur n'enverra pas le format en question. (En ralit, ce choix se fait au niveau des 'proprits' du navigateur) La rponse se compose de codes retour et de champs : Les codes retour reprsentent le statut de la transaction. Ils sont constitus de trois chiffres dont le premier indique la classe de statut et les suivants la nature exacte. Les codes 20x indiquent que l'opration s'est bien passe. Le plus courant est le 200 (O.K.) Les codes 30x indiquent que l'objet demand a t dplac. Il faut donc changer d'URL pour accder au contenu de cette ressource. La classe 4 sert lorsque le client a commis une erreur. Tout le monde a dj rencontr '404 Not found' ou l'erreur '403 Forbidden' aprs la saisie d'un mauvais mot de passe. La classe 5 signifie une erreur du ct du serveur tel qu'un bug dans un script CGI. Les champs contiennent des indications sur la longueur du corps de la rponse, le type de document (texte, image, ), la date de dernire modification du fichier ou la nouvelle adresse de la ressource, dans le cas d'un code retour 30x.

Le protocole HTTP permet donc au navigateur d'accder des pages web statiques ou dynamiques (voir ce chapitre) et d'afficher le contenu de celles-ci, suivant les paramtres dsirs (par exemple, texte sans images)

Sources : www.commentcamarche.net

www.salemioche.com

27

Les codes HTTP


(Article crit par David Brunet - septembre 2005)

Source : http://obligement.free.fr/articles/codeshttp.php Quand vous naviguez sur Internet, votre navigateur gnre des requtes HTTP aux serveurs, qui rpondent en retournant soit le document demand, soit un code d'erreur. Ces rponses de serveurs sont les codes de statut HTTP. Il y en existe une quarantaine dans la version actuelle, le HTTP /1.1. Un code de statut HTTP est reprsent par un nombre 3 chiffres. Il est trs souvent accompagn d'une courte phrase en Anglais, que l'ont appelle la raison. Les codes sont regroups en 5 classes : les codes d'information (numrots 1xx), de succs (2xx), de redirection (3xx), d'erreur client (4xx) et d'erreur serveur (5xx). Nous allons ici dtailler ces codes. Cette page s'inspire du RFC 2616 (chapitre 10) qui dfinit les codes de statut HTTP.

Les codes d'information (1xx)


Cette classe de codes de statut indique une information. C'est une rponse provisoire, qui consiste en un en-tte "Status-Line" et se finit par une ligne vide. Les codes 1xx inconnus doivent tre ignors par le client. Code 100 Statut Continue (Continuer) Switching Protocols (Changement de protocoles) Description et commentaire Attente de la suite de la requte. La premire partie de la requte a bien t reue et le client peut continuer avec la suite de cette requte. Le serveur accepte la requte du client pour changer de protocole. Le client a demand au serveur d'utiliser un autre protocole que celui actuellement utilis, et le serveur accepte cette requte.

101

Les codes de succs (2xx)


Cette classe de codes de statut indique que la requte du client a t reue/comprise/accepte avec succs. Code Statut Description et commentaire La requte HTTP a t traite avec succs. L'information retourne avec la rponse dpend de la mthode utilise dans la requte. La rponse une requte GET classiquement mise par un navigateur web sera la ressource demande (c'est--dire une page HTML, une image, etc). La requte a t correctement traite et une nouvelle ressource a t cre. Cette ressource peut tre rfrence par l'URI retourne dans le corps de la rponse, avec l'URL la plus prcise pour la ressource indique dans l'en-tte du champ "Location". La requte a t accepte pour tre traite, mais son traitement peut ne pas avoir abouti. Ce code est utilis en remplacement du 201 lorsque le traitement ne peut pas avoir lieu immdiatement, son rsultat est donc indtermin. 28

200

OK (OK)

201

Created (Cr)

202

Accepted (Accept)

203

Non-Authoritative Information (Information non certifie) No Content (Pas de contenu)

L'information retourne n'a pas t gnre par le serveur HTTP mais par une autre source non authentifie. Le serveur HTTP a correctement trait la requte mais il n'y a pas d'information envoyer en retour. Cela peut par exemple se produire lorsqu'un fichier HTML ou le rsultat d'un programme CGI-BIN est vide. Le client doit remettre zro le formulaire utilis dans cette transaction. Ce code est envoy au navigateur quand il doit rinitialiser un formulaire gnr dynamiquement par un CGI-BIN, par exemple. Le serveur retourne une partie seulement de la taille demande. Ce code est utilis lorsqu'une requte spcifiant une taille a t transmise.

204

205

Reset Content (Contenu rinitialis) Partial Content (Contenu partiel)

206

Les codes de redirection (3xx)


Cette classe de code de statut intervient pour les actions de redirection. Ces actions sont traites par le client afin de rpondre la requte. Les anciennes versions de cette spcification recommandent un maximum de 5 redirections, ce qui peut parfois bloquer l'accs aux sites web demandant un plus grand nombre de redirections. Code Statut Multiple Choices (Choix multiples) Description et commentaire L'URI demand concerne plus d'une ressource. Par exemple, l'URI concerne un document qui a t traduit en plusieurs langues. Le serveur doit retourner des informations indiquant comment choisir une ressource prcise. La ressource demande possde une nouvelle adresse (URI). Toute rfrence future cette ressource doit tre faite en utilisant l'une des URIs retournes dans la rponse. Le navigateur doit normalement charger automatiquement la ressource demande sa nouvelle adresse. La ressource demande rside temporairement une adresse (URI) diffrente. Cette redirection tant temporaire, le navigateur doit continuer utiliser l'URI original pour les requtes futures. L'URI spcifi est disponible un autre URI et doit tre demand par un GET. Le navigateur a effectu une requte GET conditionnelle et l'accs est autoris, mais le document n'a pas t modifi. Cette rponse est frquente et signifie que vous avez configur votre navigateur pour utiliser un cache HTTP (proxy) dans lequel une copie du document demand est dj stocke. Le proxy a donc demand au serveur si le document original avait chang depuis, et a reu cette rponse. Il pourra ainsi utiliser la copie locale. L'URI spcifi doit tre accd en passant par le proxy.

300

301

Moved Permanently (Changement d'adresse dfinitif)

302

Found (Trouv)

303

See Other (Voir ailleurs)

304

Not Modified (Non modifi)

305 306

Use Proxy (Utiliser le proxy) No Longer Used (N'est plus utilis)Ce code n'est plus utilis. Il l'tait dans les

29

anciennes versions des spcifications HTTP. 307 La ressource a t temporairement dplace un URI Temporary Redirect (Redirig diffrent. Le navigateur doit continuer utiliser l'URI temporairement) original pour les requtes futures.

Les erreurs du client (4xx)


La classe de statut 4xx est prsente pour les fois o le client semble en cause. Le serveur se doit d'inclure ces erreurs une explication, que ce soient des erreurs temporaires ou permanentes. Ces codes et ces explications sont affichs, par exemple, dans la fentre de votre navigateur.

Ci dessus la page 404 personnalise du site d'Obligement.

Code 400

Statut Bad Request (Mauvaise requte) Unauthorized (Non autoris) Payment Required (Paiement exig) Forbidden (Interdit)

Description La requte HTTP n'a pas pu tre comprise par le serveur en raison d'une syntaxe errone. Le problme peut provenir d'un navigateur trop rcent ou d'un serveur HTTP trop ancien. La requte ncessite une identification de l'utilisateur. Cela signifie que tout ou partie du serveur contact est protg par un mot de passe, qu'il faut indiquer au serveur pour pouvoir accder son contenu. Ce code n'est pas encore mis en oeuvre dans le protocole HTTP/1.1. Le serveur HTTP a compris la requte, mais refuse de la traiter. Ce code est gnralement utilis lorsqu'un serveur ne souhaite pas indiquer pourquoi la requte a t rejete, ou lorsqu'aucune autre rponse ne correspond. Le serveur n'a rien trouv qui corresponde l'adresse (URI) demande. Cela signifie que l'URL que vous avez tape ou 30

401

402

403

404

Not Found (Non trouv)

clique est mauvaise ou obsolte et ne correspond aucun document existant sur le serveur. 405 406 Method Not Allowed Ce code indique que la mthode utilise par le client n'est pas (Mthode non autorise) supporte pour cet URI. L'adresse (URI) spcifie existe, mais pas dans le format Not Acceptable (Aucun prfr du client. Le serveur indique en retour le langage et les disponible) types d'encodages disponibles pour cette adresse. Proxy Authentication Required (Authentification proxy exige) Request Time-out (Requte hors-dlai) Conflict (Conflit) Le serveur proxy exige une authentification du client avant de transmettre la requte. Presque similaire 401 mais le client doit d'abord s'identifier avec le proxy. Le client n'a pas prsent une requte complte pendant le dlai maximal qui lui tait imparti, et le serveur a abandonn la connexion. La requte entre en conflit avec une autre requte ou avec la configuration du serveur. Des informations sur les raisons de ce conflit doivent tre indiques en retour. L'adresse (URI) demande n'existe plus et a t dfinitivement supprime du serveur. Un peu comme le 404, le 410 fait rfrence des ressources non disponibles. Ici, on sait pourquoi on ne peut pas accder ces ressources : l'adresse a t supprime, et ce, gnralement par son posseseur. Le serveur a besoin de connatre la taille de cette requte pour pouvoir y rpondre.

407

408

409

410

Gone (Parti)

411 412 413 414 415

Length Required (Longueur exige)

Precondition Failed Les conditions spcifies dans la requte ne sont pas remplies. (Prcondition choue) Request Entity Too Large (Corps de requte trop grand) Le serveur ne peut traiter la requte car la taille de son contenu est trop importante.

Request-URI Too Long Le serveur ne peut traiter la requte car la taille de l'objet (URI) (URI trop long) retourner est trop importante. Unsupported Media Type (Format non support) Requested range unsatifiable (Plage demande invalide) Le serveur ne peut traiter la requte car son contenu est crit dans un format non support. Le sous-ensemble de recherche spcifi est invalide.

416 417

Expectation failed Le comportement prvu pour le serveur n'est pas support. (Comportement erron)

Les erreurs du serveur (5xx)


Les codes de statut commenant par le chiffre "5" indiquent des erreurs dues au serveur ou son incapacit traiter une requte. Le serveur se doit d'inclure ces erreurs une explication, que ce soient des erreurs temporaires ou permanentes. Ces codes et ces explications sont affichs, par exemple, dans la fentre de votre navigateur. Code 500 Statut Description et commentaire

Le serveur HTTP a rencontr une condition inattendue qui l'a Internal Server Error empch de traiter la requte. Cette erreur peut, par exemple, tre (Erreur interne du le rsultat d'une mauvaise configuration du serveur ou d'une serveur) ressource puise ou refuse au serveur sur la machine hte. 31

501

Not Implemented (Non implment)

Le serveur HTTP ne supporte pas la fonctionnalit ncessaire pour traiter la requte. C'est la rponse mise lorsque le serveur ne reconnat pas la mthode indique dans la requte et n'est pas capable de la mettre en oeuvre pour aucune ressource (soit le navigateur est trop rcent, soit le serveur HTTP est trop ancien). Le serveur intermdiaire a fourni une rponse invalide. Le serveur HTTP a agit en tant qu'intermdiaire (passerelle ou proxy) avec un autre serveur, et a reu de ce dernier une rponse invalide en essayant de traiter la requte.

502

Bad Gateway (Mauvais intermdiaire)

503

Le serveur HTTP est actuellement incapable de traiter la requte Service Unavailable en raison d'une surcharge temporaire ou d'une opration de (Service indisponible) maintenance. Cette condition sera donc leve aprs un certain dlai. Gateway Time-out (Intermdiaire horsdlai) Cette rponse est identique au code 408 (requte hors-dlai), mais ici c'est un proxy ou un autre intermdiaire qui a mis trop longtemps rpondre.

504

505

HTTP Version not La version du protocole HTTP utilise dans cette requte n'est pas supported (Version (ou plus) supporte par le serveur. HTTP non supporte)

32

TCP / IP : S.S.L. (Secure Sockets Layers)

Introduction Le but recherch aujourd'hui par les entreprises commerciales est un moyen permettant une communication sre avec leurs clients, et plus prcisment, une faon sre d'obtenir le paiement des biens/services vendus. Dans un tel cadre commercial, les donnes qui sont primordiales de protger lors de la transmission sont constitues des informations concernant la carte de crdit du client (gnralement). Dans le cas de vente de contenu lectronique ou de service lectronique il faut galement protger la transmission de ces donnes. La libre circulation non-protge de ces donnes grugerait une partie des ventes des marchands. Les transactions commerciales qui s'effectuent sur Internet sont gnralement ponctuelles. C'est--dire qu'elles ne sont ni rgulires, ni priodiques. Un systme de cryptographie permettant d'assurer ce type de communication doit tenir compte de ces lments. Le browser Navigator de la compagnie Netscape Communications Corporation utilise l'implantation du protocole SSL. Ce protocole effectue la gestion des cls et l'authentification du serveur avant que les informations ne soient changes. Aujourd'hui la solution SSL est la plus rpandue pour scuriser les transactions. Son succs s'explique par sa simplicit d'utilisation et par son intgration dans tous les navigateurs du march : vous remarquerez en bas gauche de votre navigateur Netscape une petite cl, qui devient automatiquement entire si le serveur qui vous envoie les informations utilise SSL. SSL (Secure Sockets Layers que l'on pourrait traduire par couche de prises scurises) est un protocole de communication d'information qui permet d'assurer l'authentification, la confidentialit et l'intgrit des donnes changes. En d'autres termes, un procd de scurisation des transactions effectues via Internet mis au point par Netscape , en collaboration avec Mastercard , Bank of America , MCI et Silicon Graphics . Ce protocole utilise un moyen de cryptographie reconnu : l'algorithme cl publique RSA (du nom de ses concepteurs - Rivest - Shamir - Adleman - ). Une cl RSA est le rsultat d'oprations entre nombres premiers.

Processus Le processus est le suivant : Un utilisateur quelconque utilise le logiciel Netscape client et entre en communication avec un logiciel serveur de type commercial. Le serveur possde dj sa paire de cls publique/prive. C'est cette paire de cls qu'il utilise dans ses communications avec tous les logiciels clients. Le logiciel client, une fois reconnu par le logiciel serveur, gnre une paire de cls publique/prive. Le logiciel client demande au logiciel serveur de lui fournir sa cl publique (celle du serveur). La cl publique du client est aussitt encrypte avec la cl publique de serveur et transmise au serveur.

33

Le serveur dcode le message avec sa cl prive serveur et authentifie la cl publique de l'utilisateur. Le serveur envoie ensuite au logiciel client une confirmation, encrypte, du bon droulement de l'opration. Toutes les informations suivantes qui seront transmises entre l'utilisateur et le serveur commercial seront dsormais encryptes. De plus, il n'y a que ce serveur qui est en mesure de communiquer avec cet utilisateur puisqu'il n'y a que ce serveur qui connat la cl publique de cet utilisateur. L'utilisateur et le serveur commercial peuvent maintenant changer toutes les donnes voulues de faon sre. L'ensemble de ce processus est maintenant compltement transparent pour l'utilisateur. Avec ce protocole, une nouvelle paire de cls est gnre chaque tablissement de la communication entre le logiciel client de l'utilisateur et le logiciel serveur. La communication est donc entirement sre, mais en aucun cas le serveur commercial ne peut s'assurer de l'identit de l'utilisateur l'autre extrmit. Une faon de rsoudre ce problme, est de joindre ce processus un systme de validation, comme par exemple un numro d'identification personnel (NIP) qui s'obtient par une inscription pralable.

Fonctionnement Le systme repose sur l'algorithme RSA (Rivest, Shamir et Adleman, les trois concepteurs comme indiqu plus haut), un standard utilis pour le cryptage des donnes et la signature de messages lectroniques. Cet algorithme est trs utilis pour l'authentification et le cryptage des donnes dans le domaine informatique. Deux paires de cls - une pour le verrouillage et l'autre pour le dverrouillage - 40 bits sont utilises. Chaque paire est compose d'une cl publique et d'une prive. La cl publique est faite afin d'tre distribue alors que la cl prive n'est jamais distribue, elle est toujours garde secrte. Les donnes qui sont crypte avec la cl publique peuvent seulement tre dcryptes avec la cl prive. Et inversement, les donnes qui sont crypte avec la cl prive peuvent seulement tre dcryptes avec la cl publique. C'est cette asymtrie qui fait que la cl publique est si utile.

Dmonstration par l'exemple (L'exemple ci-dessous provient du site Netscape, seuls les noms ont t changs pour prserver les innocents) L'authentification est la procdure de vrification d'identit, pour que chacun soit sr que l'autre sera bien celui qu'il prtend tre. Dans l'exemple suivant la notation {INFO} KEY signifie que {INFO} a t crypt ou dcrypt en utilisant une cl KEY. Imaginons que Alfonso dsire authentifier Virginie. Virginie a une paire de cls, une publique et une prive. Elle rvle Alfonso sa cl publique. Alfonso gnre un message alatoire et l'envoie Virginie : Alfonso Virginie {RANDOM-MESSAGE} Virginie utilise sa cl prive pour crypter le message reu et le retourne Alfonso : 34

Virginie Alfonso {RANDOM-MESSAGE} Virginie's-PRIVATE-KEY Alfonso reoit le message et le dcrypte en utilisant la cl publique rvle prcdemment. Elle compare le message dcrypt avec l'original qu'elle a envoy Virginie ; s'ils correspondent, elle sait qu'elle est entrain de parler Virginie. Un imposteur n'aurait pas pu connatre la cl prive de Virginie et par consquent serait incapable de crypter correctement le message envoy Alfonso pour validation. Une fois qu'Alfonso a authentifi Virginie, elle peut alors lui envoyer des messages que seul Virginie peut dcoder. Alfonso Virginie {SECRET} Virginie's-PUBLIC-KEY Seule la cl prive de Virginie est capable de dcoder le message. Et par consquent, mme si quelqu'un d'autre est entrain d'observer la communication entre Alfonso et Virginie, il ne peut pas dchiffrer ce message.

Certificats Un certificat est un document lectronique qui atteste qu'une cl publique est bien lie une organisation ou personne. Il permet la vrification de la proprit d'une cl publique pour prvenir la contrefaon de cls publiques. Un certificat contient gnralement une cl publique, un nom ainsi que d'autres champs pour identifier le propritaire, une date d'expiration, un numro de srie, le nom de l'organisation qui contresigne le certificat et la signature elle-mme. Le format des certificats est dfini par la norme X509. Le certificat est donc une attestation que les informations qu'il contient sont exactes. Pour cela, le certificat doit tre gnr par un tiers de confiance, c'est--dire un organisme indpendant qui contrle la vracit de ces informations. Le CA (Certifying Authority, autrement dit l'organisme certificateur) donne la crdibilit au certificat. Il existe typiquement deux types de certificats utiliss avec SSL : pour serveur et pour client. Techniquement ils utilisent le mme format mais diffrent par l'information qu'ils contiennent. Ainsi un certificat cot client sert identifier un utilisateur, il contiendra donc des informations sur cet utilisateur. Cot serveur, le certificat a pour but d'authentifier le serveur et l'organisme qui l'exploite. C'est ce type de certificat dont vous avez besoin pour mettre en place un serveur "scuris" HTTPS. Il ne sera pas expliqu ici comment obtenir un certificat serveur. Il existe plusieurs fournisseurs de certificats serveurs SSL.

35

Certificat pour client Un certificat client est un certificat qui identifie l'utilisateur d'un navigateur web, et qui a vocation identifier avec certitude un unique individu. Ce certificat est bas sur une cl publique/prive qui est stocke par le navigateur ( l'avenir, cette cl sera probablement sur carte puce). De la mme faon qu'un certificat pour serveur n'a pas de sens tant qu'il n'est pas authentifi par un tiers, le certificat client besoin d'tre sign. On peut diffrencier deux types de certificats suivant leurs signatures: les certificats signs par un serveur ou un organisme local (par exemple l'entreprise qui exploite un serveur SSL) et les certificats signs par un tiers certificateur reconnu de tous. Les certificats signs par un organisme local prennent tout leur sens dans le cadre d'un intranet/extranet. Ainsi certaines entreprises au lieu de donner des couples username/password leurs employs leur font gnrer une cl SSL qu'ils vont ensuite signer. Il suffira alors d'indiquer au serveur de n'accepter les connexions SSL que de possesseurs de certificats signs par l'entreprise. On peut bien sur aller plus loin et utiliser les champs que contiennent les certificats pour crer des ACLs, et autoriser l'accs des zones spcifiques du serveur en fonction de l'appartenance tel ou tel service, par exemple. Ces certificats signs par une entit locale ont leurs limites ds qu'il s'agit de travailler avec des clients d'origines diffrentes. Ainsi un consommateur qui utilise des banques et des centres commerciaux SSL se retrouve rapidement avec des dizaines de certificats diffrents, fournis par chacun des serveurs. Aussi les certificats signs localement ne conviennent pas au grand public. La solution est que chaque individu souhaitant s'identifier sur plusieurs serveurs utilise un certificat sign par un tiers de certification. Ce dernier aura effectu toutes les vrifications ncessaires pour prouver que le certificat est authentique (qu'il identifie bien la bonne personne). L'individu fournira alors aux serveurs qu'il veut utiliser son certificat personnel sign par le tiers. Le serveur utilisera alors ce certificat pour assurer la scurit (l'affectera dans les ACLs qui conviennent). L'utilisateur n'aura stocker qu'un seul certificat (le sien, qui est en quelque sorte sa signature lectronique) et n'aura retenir qu'un seul mot de passe, celui qui protge son certificat. Ce systme simplifie la vie de l'utilisateur, mais aussi de l'administrateur des serveurs. En effet, mme si l'chelle d'une entreprise il est simple d'attribuer avec certitude un certificat la bonne personne, ce n'est plus le cas pour un magasin virtuel. Comment tre sr distance que l'on signe le certificat de son client (que l'on n'a jamais vu)? Ce problme d'attribution des certificats signs se pose ds lors que les acteurs ne sont pas locaux et ne se connaissent pas. Il est donc ncessaire d'utiliser un tiers certificateur. Il existe d'ores et dj plusieurs tiers qui fournissent des certificats SSL clients, dont Thawte.

SSL et les logiciels de communication SSL est un protocole de communication qui est indpendant du protocole de communication de plus haut niveau qui repose sur lui. Il est donc possible de porter les logiciels de communications usuels (ftp, telnet, http, etc.) sur SSL sans grande modification, et de faon quasiment transparente pour l'utilisateur. SSL peut alors ngocier la mthode de chiffrement utiliser, authentifier les acteurs de la communication, et chiffrer au vol tout ce qui transite par son canal. Les spcifications de SSL sont publiques, mais son implmentation de rfrence (SSLREF) n'est pas exportable des USA. Heureusement, il en existe une implmentation librement accessible partir de

36

l'Australie. Il existe des patchs pour intgrer SSL aux logiciels de communications usuels: http (Mosaic et NCSA httpd), telnet, ftp, etc. SSL est transparent pour l'utilisateur (entendez par-l qu'il peut ignorer qu'il utilise SSL). Par exemple un utilisateur utilisant un navigateur Internet pour se connecter un site de commerce lectronique scuris par SSL enverra des donnes chiffres sans avoir s'en proccuper. La quasi-intgralit des navigateurs supporte dsormais le protocole SSL. Netscape Navigator affiche par exemple un cadenas verrouill pour indiquer la connexion un site scuris par SSL et un cadenas ouvert dans le cas contraire, tandis que Microsoft Internet Explorer affiche un cadenas uniquement lors de la connexion un site scuris par SSL. sous Internet Explorer sous Mozilla

Un serveur scuris par SSL possde une URL commenant par https:// , o le "s" signifie bien videmment secured ( scuris ). Au milieu de l'anne 2001, le brevet de SSL appartenant jusqu'alors Netscape a t rachet par l' IETF ( Internet Engineering Task Force ) et a t rebaptis pour l'occasion TLS ( Transport Layer Security ).

Sources :

http://www.guill.net/index.php?cat=3&pro=74 http://www.ovni.be/secudoc/ssl.htm http://www.commentcamarche.net/crypto/ssl.php3

37

Synthse d'un dialogue TCP/IP


Prsentation du dialogue au niveau rseau entre une machine cliente et un serveur web (www.google.fr par exemple) Nous considrerons que les protocoles utiliss sont ceux de la suite TCP/IP, soit TCP, IP et Ethernet pour notre dialogue. (A)--(Routeur NAT)--(Internet)-...-(Serveur) On considre que les machines viennent d'tre mises en place et que leurs caches respectifs sont vides (aussi bien ARP que DNS ou applicatif) Un utilisateur se trouve devant la machine A et utilise Internet Explorer pour naviguer sur Internet. Il entre dans la barre d'adresse l'adresse du site www.google.fr sur lequel il souhaite aller pour faire une recherche. La suite va prsenter les diffrentes tapes qui vont intervenir pour qu'il obtienne la rponse du serveur de www.google.fr. Le navigateur (Internet Explorer) reoit donc l'ordre d'accder au site www.google.fr et de renvoyer la rponse l'utilisateur. Une requte va donc devoir tre mise sur le rseau vers le serveur web de www.google.fr pour obtenir la rponse. La requte demande par l'application (ici IE) va parcourir les couches du modle TCP/IP (ou OSI) une une, qui vont chacune ajouter l'information qui leur est propre, jusqu' arriver un message transportable sur le rseau. (principe de l'encapsulation). Notre requte va donc partir de la couche applicative pour aller vers la couche physique qui transportera l'information. Notre machine doit donc emmetre une requte vers le serveur www.google.fr. Format de la requte applicative: --------------------------------Donnes applicatives ___________________________ | | | GET http://www.google.com | |___________________________| Or, en rseau, nous savons que les machines sont identifies sur Internet par une adresse IP et non par un nom. Il faut donc que nous trouvions l'adresse du serveur www.google.fr. Le protocole DNS est justement fait pour cela. La machine A fait donc une requte DNS pour obtenir l'adresse IP du serveur www.google.fr et elle obtient sa rponse. Elle peut maintenant envoyer l'information sur le rseau vu qu'elle connait l'adresse IP de destination. L'application envoit donc les informations applicatives la couche 4 (TCP) qui ajoute ses propres informations, notamment le port destination qui correspond au protocole applicatif utilis (80:HTTP) et le port source choisi suprieur 1023. La couche 4 doit alors envoyer l'ensemble des informations (en-tte TCP et donnes applicatives qui forment le segment TCP) au protocole de couche 3 qui est IP (le choix des protocoles utiliss se fait lors de la cration de la socket de connexion) Format du segment TCP envoy: --------------------------------En-tte TCP

Donnes applicatives

38

++++++++++++++++++++++++++++++++++++++++++++++++++++++++__________________ __ | Port source | Port Destination | Autres informations | | | 10351 | 80 | de l'en-tte TCP | GET http://www.google.com | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++_____________|____ __| La couche 3 a notamment pour rle de dterminer la passerelle utiliser pour joindre la machine de destination. Pour cela, elle va voir dans la table de routage dans laquelle des rseaux sont dfinis et pour lesquels une passerelle est indique. Suite au passage par la table de routage, le systme sait donc quelle est l'adresse IP de la passerelle utiliser. Soit il s'agit de l'adresse d'une passerelle situe sur le mme rseau que la machine A, soit il s'agit directement de l'adresse de la machine destination si celle-ci est sur le mme rseau que A. Dans les deux cas, nous obtenons l'adresse IP d'une machine atteindre, situe sur notre propre rseau. Cependant, cette information n'est pas suffisante car pour dialoguer sur le rseau local, il nous faut connatre non pas l'adresse IP mais l'adresse MAC de la machine destination car c'est celleci qui est utilise par le protocole de couche 2 qui achemine les informations sur le rseau. Il nous faut donc maintenant obtenir l'adresse MAC de la machine atteindre sur notre rseau. Nous avons pour cela le protocole ARP notre disposition. Etant donn que le cache ARP de notre machine A est vide, il va nous falloir faire un broadcast ARP qui nous permettra d'obtenir l'adresse MAC de la machine joindre. Dans notre exemple, il s'agit de l'adresse MAC de l'interface interne du routeur NAT. Nous avons maintenant toutes les informations ncessaires pour envoyer les donnes la couche 2. La couche 3 ajoute donc ses propres informations au segment TCP, notamment les adresse IP source et destination (la machine A ainsi que le serveur google) et envoit l'ensemble, soit le datagramme IP, la couche 2, avec l'adresse MAC de la prochaine destination joindre (l'interface interne du routeur NAT) Format du datagramme IP: ---------------------------En-tte IP En-tte TCP Donnes applicatives *************************************************++++++++++++++++++++++___________________ __ | @IP source | @IP dest | Autres informations | PS | PD | Autre | | | @IP A | @IP google | de l'en-tte IP | 10351 | 80 | TCP | GET http://www.google.com | *************************************************++++++++++++++++++++++___________________ __| La couche 2 reoit le datagramme IP et peut alors former la trame Ethernet en ajoutant l'en-tte Ethernet au datagramme IP reu. L'en-tte Ethernet contient notamment les adresses MAC source et destination (adresse MAC de A et du routeur NAT ici) La trame peut maintenant tre envoye sur le rseau. Format de la trame Ethernet: -------------------------------En-tte Ethernet En-tte IP En-tte TCP Donnes applicatives .................................************************++++++++++++++++++++++____________________ _...... | @ MAC DST | @ MAC SRC | Proto | @IP s | @IP d | Autre | PS | PD | Autre | | | | Rtr NAT | A | sup | @IP A | @IP g | IP | 10351 | 80 | TCP | GET http://www.google.com | CRC | .................................************************++++++++++++++++++++++____________________ __|. Elle transite sur le cble en sortie de notre machine puis arrive l'quipement de connexion, qui est un switch dans notre cas. Le switch, qui est un quipement de couche 2 peut lire l'en-tte 39

Ethernet de la trame. Il regarde l'adresse MAC de destination et cherche dans sa table CAM (correspondance @MAC et numro de port) pour voir si cette adresse est connecte sur l'un de ses ports. Si c'est le cas, il retransmet la trame sur le bon port, sinon, il la retransmet sur tous les ports en esprant que la machine destination le recevra... (cela n'arrive cependant que trs rarement) La trame arrive donc sur l'interface interne du routeur NAT. Si l'on se rfre au modle OSI, l'information reue provenant de la couche physique va remonter les couches jusqu' la couche applicative. Ainsi, la trame va tre reue par la couche 2 qui va regarder si l'adresse MAC destination est bien celle de l'interface l'ayant reue. Si ce n'est pas le cas, la trame est ignore. Si c'est le cas, l'en-tte Ethernet est lue et les informations sont envoyes la couche 3 spcifie dans cette en-tte, soit la couche IP dans notre cas. La couche 3, IP, reoit le datagramme et lit l'en-tte IP qui contient l'adresse IP de destination. Si l'adresse IP de destination est celle d'une des interfaces de la machine, les informations sont envoyes la couche suprieure indique dans l'en-tte IP Si l'@IP de destination n'est pas celle de notre machine, cela veut dire que l'information doit tre route vers sa destination (nous sommes dans ce cas quand le routeur reoit le datagramme qui est destination de google) Le routeur va donc regarder dans sa table de routage par quelle passerelle il doit passer pour envoyer les informations jusqu'au rseau de destination. Dans notre cas, il s'agit d'un routeur sur Internet. Il n'est alors plus ncessaire de remonter les couches. Une petite particularit intervient maintenant. L'adresse source du datagramme IP est celle de la machine A. Or cette adresse est une adresse prive non route sur Internet. Si le datagramme sort tel quel sur Internet, le serveur google le recevra bien, mais il y aura des problmes de routage au retour puisque l'adresse de destination du datagramme (qui tait en source lors de l'mission du datagramme) n'est pas route sur Internet. Il est donc ncessaire de modifier l'adresse source lors de l'mission du datagramme. C'est ce que l'on appelle la traduction d'adresse, ou NAT. Le routeur met donc en correspondance l'@IP source d'origine ainsi que le port source d'origine (ce qui l'oblige tre capable de lire des informations de couche 4) et l'adresse IP de son interface externe (adresse publique routable sur Internet) ainsi qu'un port source qu'il aura choisi lui-mme (il garantit ainsi l'impossibilit d'avoir deux paquets avec deux ports source identiques) Il garde ces informations dans une table que l'on nomme table NAT. Informations retenues dans la table NAT: -------------------------------------------@IP A <--> @IP externe du routeur NAT Port source Port source routeur 10351 <--> 36253 En mettant ces informations en correspondance, il pourra de nouveau les remplacer lorsqu'il recevra le paquet de rponse la requte. Il peut maintenant remplacer l'adresse IP source ainsi que le port source dans le paquet. Notre routeur dsire maintenant envoyer les informations au prochain routeur spcifi dans la table de routage, qui appartient son rseau. Comme prcdemment, il doit rechercher l'adresse MAC correspondant l'interface du prochain routeur. Il pourra alors envoyer les informations la couche 2 qui pourra former la trame Ethernet quicirculera sur le rseau. Le passage par les diffrents routeurs sera identique sur le chemin vers le serveur google (NAT mise part) Le serveur www.google.fr reoit donc la requte. Il regarde l'adresse MAC de destination qui doit normalement tre la sienne si tout s'est bien pass. La couche 2 envoit alors les informations la couche 3 spcifie dans l'en-tte Ethernet, soit la couche IP. La couche IP lit l'en-tte du 40

datagramme IP. L'adresse IP de destination est bien celle de l'une de ses interfaces, le datagramme va donc tre trait puis envoy la couhe 4 mentionne dans l'en-tte. Il s'agit ici de TCP. La couche 4 recptionne le segment TCP et lit l'en-tte TCP. Si le port destination spcifi ne correspond aucune socket en cours, un TCP reset (RST) est renvoy. Si cela correspond par contre une socket, la couche TCP traite les informations qui lui sont propres, et les donnes sont envoyes la couche applicative lie la socket. Le serveur web va alors traiter la requte du client et lui renvoyer sa rponse. La rponse va alors suivre le cheminement inverse travers les couches rseau pour arriver l'envoi d'une trameEthernet sur le rseau. La trame va alors circuler sur Internet avec comme adresse IP de destination celle du routeur NAT. Il va donc la recevoir et regarder dans la table NAT la correspondance avec le numro de port destination TCP utilis (il reoit un segment TCP avec le port source 36253 qu'il reconnait dans la table NAT) Il peut maintenant remplacer l'adresse IP destination par celle de la machine A, ainsi que le port TCP source par celui spcifi l'origine. Le datagramme IP ainsi modifi peut tre renvoy sur le rseau (encapsul dans une trame Ethernet La machine A reoit la trame Ethernet. Les informations vont cheminer travers les couches rseau jusqu' l'application d'origine qui est le navigateur Internet qui va recevoir la rponse sa requte et qui va pouvoir l'afficher son client. ATTENTION ! Dans cet exemple, j'ai volontairement simplifi la configuration dans laquelle nous nous trouvons. Il faut bien prendre en compte: - que le modle TCP/IP est diffrent du modle OSI (on ne tient pas compte des couches 5 et 6), - qu'on ne tient pas compte de la fragmentation, - qu'on ne tient pas compte non plus du handshake TCP ni des numros de squence, etc, - qu'aucun proxy applicatif n'est travers (voir http://www.lalitte.com/nat pour plus d'infos) - qu'aucun ordre n'est respect dans les diffrentes en-ttes. Les VPNs MPLS MPLS (MultiProtocol Label Switching) est une technologie permettant de mettre en place des pseudos circuits virtuels sur un rseau entre diffrents points d'entre de ce rseau (Tunnel MPLS). Cela se fait notamment en mettant un "label" dans la trame Ethernet permettant d'identifier la route utiliser plus rapidemment. Pour simplifier, cela permet de crer un tuyau entre deux points pour que les informations envoyes ne passent pas ailleurs que dans le tuyau. Cela peut sembler simple, mais les possibilits associes cette technologie sont extrmement intressantes. Par ailleurs, un VPN (Virtual Private Network, ou Rseau Priv Virtuel) permet la cration d'un circuit virtuel _scuris_ entre deux points. Encore une fois pour simplifier, cela permet de crer une tuyau entre deux points sur un rseau public non sr, et de faire comme si ces deux points taient directement connects ! Le tuyau est transparent, la scurit du transfert des donnes sur ce tuyau est garantie par le VPN. Il faut avouer que les dfinitions sont assez proches. Cependant, il existe une diffrence majeure entre les deux notions qui est qu'on associe une notion de scurit celle d'un VPN (Authentification, Intgrit, Confidentialit) alors qu'il n'en existe pas en ce qui concerne MPLS. Toutes les expressions employant le terme VPN devraient reflter le niveau de scurit associ de la technologie employe, comme VPN IPsec par exemple. Mais ce n'est pas toujours le cas. 3- Datagramme IP ou paquet IP ? On entend souvent parler de datagramme IP ou de paquet IP, mais laquelle de ces deux appellations est la bonne ? La rponse est: les deux. 41

Le datagrame reprsente l'unit d'information propre au protocole IP. On utilise le terme datagramme lorsque chacune des units d'information envoyes est indpendante l'une de l'autre et que l'envoi se fait en mode non connect. Chacun des datagrammes envoys est donc indpendant des autres et peut tre achemin diffremment. Maintenant, pourquoi utiliser alors un autre terme ? La rponse provient notamment de l'utilisation de la fragmentation. Un datagramme peut tre dcoup pendant son parcours en plusieurs fragments pour pouvoir circuler correctement sur le rseau. On se retrouve alors avec plusieurs datagrammes qui contiennent chacun l'ensemble de l'information ncessaire leur transport sur le rseau, mais qui ne doivent pas tre confondus avec le datagramme d'origine. Comment diffrencier alors le datagramme d'origine des diffrents datagrammes qui proviennent de sa fragmentation ? Le choix a donc t d'utiliser le terme "paquet" pour signifier l'unit d'information circulant sur le rseau, et "datagramme" pour reprsenter l'unit d'information mise en forme par la couche IP au niveau de la machine mettrice, et rceptionne par la machine destination. Pour rcapituler, lorsqu'une machine souhaite envoyer une information sur le rseau, la couche IP forme un datagramme. Et lorsque la machine envoit cette information sur le rseau, on parle de paquet IP. La machine destination rceptionne un ou plusieurs paquets IP et forme le datagramme d'origine.

42

DHCP
DHCP, pour quoi faire ? En matire d'administration rseau, TCP/IP pose principalement deux problmes un administrateur rseau : 1. La gestion des adresses IP C'est un travail laborieux : l'administrateur doit tenir jour une liste des ordinateurs avec leur adresse IP pour viter d'attribuer deux fois la mme adresse IP 2. Les paramtres IP, tels que masque de sous-rseau, adresses IP du gateway et des ventuels serveurs WINS ou DNS. Imaginez que vous changiez le serveur WINS d'un rseau de 200 machines : vous (ou probalement pas vous si vous avez de l'argent) devrez passer sur les 200 machines pour modifier ce paramtre : travail laborieux ! Il y a heureusement un remde ces tracasseries : DHCP (Dynamic Host Configuration Protocol) DHCP est un service tournant sur un serveur qui attribue " la vole" une adresse IP des ordinateurs qui le lui demandent, et "passe" en mme temps les paramtres IP comme le masque de sous-rseau et les adresses IP du gateway ou des ventuels serveurs DNS ou WINS. Au niveau des clients, il suffit de configurer une seule fois "attribution d'une adresse IP par un serveur DHCP" pour ne plus jamais avoir s'occuper ultrieurement de questions IP. En cas de modification d'un paramtre sur le serveur DHCP (par exemple, modification de l'adresse IP du gateway), la modification sera effective sur tous les postes du rseau leur prochain reboot (ou regnration DHCP).

Le fonctionnement gnral de DHCP Le fonctionnement de DHCP, dans les grandes lignes, est le suivant :

le client (qui n'a pas d'adresse IP !) met une requte DHCP (diffusion sur le rseau) un (ou plusieurs) serveur DHCP qui entend la requte rpond en offrant une adresse IP disponible le client slectionne une adresse IP qui lui convient et en demande l'utilisation au serveur DHCP concern le serveur DHCP accuse rception et accorde l'adresse IP pour une dure dtermine (bail) le client utilise l'adresse IP accorde

Si on reboote la machine cliente, cette dernire tentera gnralement d'obtenir l'adresse IP qu'elle possdait pralablement. Elle en profite pour mettre jour les paramtres IP (masque de sous-rseau, IP du gateway, DNS, WINS). A chaque reboot, le bail est rinitialis (souvent, le bail est configur 3-4 jours sur un LAN). Si le bail de l'adresse IP arrive chance, le client se met remettre des requtes DHCP pour obtenir une renouvellation du bail. S'il n'obtient pas satisfaction et que le bail arrive dfinitivement chance, le client "supprime" son IP, et se remet en qute d'une nouvelle adresse IP disponible. 43

DHCP dans les dtails Dans les dtails, une requte DHCP a lieu de la manire suivante : 1. Demande initiale du client : "DHCP Discover" Le client envoie sur le rseau un datagramme UDP de diffusion. Rappelons que le client n'a pas encore d'adresse IP (on dit que son adresse IP est 0.0.0.0) 2. - IP du client : 0.0.0.0 3. - Adresse physique Ethernet : 00 CC 00 00 00 00 (par exemple) Datagramme UDP envoy : - IP : 255.255.255.255 (diffus) - Adresse physique Ethernet : FF FF FF FF FF FF (diffus) Au datagramme UDP, le client rajoute un ID de transaction, par exemple 14321. 4. Offre des serveurs DHCP : "DHCP Offer" Les serveurs DHCP renvoient un datagramme UDP une adresse IP qui est toujours une diffusion puisqu'ils ne connaissent pas l'emplacement du client; par contre, le datagramme est cette fois spcifiquement dirig vers l'adresse physique de la carte du client. Datagramme UDP envoy : - IP : 255.255.255.255 (diffus) - Adresse physique Ethernet : 00 CC 00 00 00 00 (dirig) Dans le datagramme, en plus de l'ID de transaction prcdent, les serveurs DHCP proposent une adresse IP et une dure de bail. 5. Choix d'une offre par le client : "DHCP Request" Le client choisit une adresse IP qui lui plat et renvoie un datagramme UDP diffus (que tous les serveurs DHCP vont donc recevoir) qui accepte l'offre voulue et rejette les offres non retenues. Datagramme UDP envoy : - IP : 255.255.255.255 (diffus) - Adresse physique Ethernet : FF FF FF FF FF FF (diffus) Rajout d'un nouvel ID de transaction, par exemple 18336. 6. Confirmation de l'offre par le serveur DHCP concern : "DHCPACK" Le serveur DHCP concern accepte l'offre et transmet les autres paramtres IP (masque de sous-rseau, gateway, serveurs DNS et WINS) Datagramme UDP envoy : - IP : 255.255.255.255 (diffus) - Adresse physique Ethernet : 00 CC 00 00 00 00 (dirig) - ID transaction : 18336 Tant que le client ne reoit pas de DHCPACK, il remet la DHCP Request toutes les 2 minutes jusqu' 87.5% de la dure du bail. Sans rponse alors, il repart l'tape du DHCP Discover. 44

DHCP est-il routable ? Comme DHCP est bas sur de la diffusion, et que cette dernire n'est pas relaye par des routeurs TCP/IP, le serveur DHCP doit tre sur le mme segment Ethernet que les clients pour que le systme fonctionne. Si le rseau est compos de routeurs, le problme peut tre rsolu avec des routeurs utilisant le protocole "BootP distant" qui sont alors capables de relayer des diffusions DHCP.

Dans l'exemple illustr ci-dessus, le routeur avec BootP distant relaie les requtes DHCP du client avec la particularit de rajouter la requte le netID (ici 128.0.0.0) du client. De cette faon, les serveurs DHCP du rseau ne rpondront la requte que s'ils sont capables de fournir une adresse IP dans cette tendue. http://www.pnfh.net

Mettre en place un serveur DHCP


Pour quoi faire : Un serveur DHCP dlivre automatiquement des adresses IP vos stations qui se connectent. Il faut seulement indiquer la plage d'adresses que l'on s'autorise distribuer. Ainsi si votre serveur a pour adresse 192.168.0.2, vous indiquez votre serveur DHCP de dlivrer des adresses dans la plage 192.168.0.20 192.168.0.254, ce qui vous permet de connecter 235 stations. Je vous conseille de garder une plage d'adresses, ici de 192.168.0.2 192.168.0.19, pour des machines qui ont besoin d'avoir une adresse fixe. Certaines machines peuvent avoir besoin d'un adressage fixe (Si vous faites du Netmeeting par exemple, ou si cette machine a un serveur Web). Votre serveur DHCP doit tre en marche tout le temps. En effet si la station qui se connecte ne trouve pas le serveur vous aurez alors un message d'erreur. Faites aussi attention ne pas mettre en place plusieurs serveurs DHCP (par exemple un pour l'administratif et un pour le pdagogique) car alors le premier serveur qui rpond sera le bon. Les solutions : Tous les serveurs disponibles sur le march disposent d'un serveur DHCP en standard, il vous faut donc simplement l'installer. Il va de soi que vous avez alors le protocole TCP/IP d'install. Celui ci pouvant cohabiter avec les autres protocoles. 45

Conseil : Avant de mettre en place votre serveur DHCP, vrifiez que votre installation (Votre serveur, une station, votre routeur) fonctionnent correctement. Aprs vous pouvez mettre en place le DHCP, afin de simplifier la gestion de vos stations. Sous Novell : Novell n'tant pas nativement TCP/IP il faut installer d'abord la couche TCP/IP pour pouvoir installer le serveur DHCP. Netware 5 tant IP par dfaut, cela ne pose plus de problme. Sous NT : Il existe un serveur DHCP par dfaut sur NT. Sous Linux : On est l dans le royaume du TCP/IP. Toutes les distributions de Linux disposent d'un serveur DHCP. Les autres solutions : Tous les routeurs disposent d'un serveur DHCP en standard. Vous n'avez donc pas besoin d'un serveur (Novell, NT, Linux) pour en mettre un en place. Pour l'acadmie de Crteil nous avons conseill aux tablissements Instant Internet ou Congo d'ACC, je vous propose de voir la partie correspondant la configuration de ces routeurs. Source : Document ralis par Philippe Chadefaux

46

Les utilitaires TCP/IP pour WIN 95, NT, LINUX


Ping
Il existe sur tous les systmes. Cette commande trs utile vrifie des connexions avec l'hte ou des htes distants en envoyant des paquets d'cho Internet Control Message Protocol (ICMP). On obtient le nombre de paquets transmis et des paquets reus. On peut aussi bien tester le nom d'hte (ex : ping mail.ac-creteil.fr) que l'adresse IP de l'hte (ex : ping 195.98.246.20). Attention certains FireWall pour des raisons de scurit ne laissent pas passer les ping. Ping existe aussi sur un serveur Novell (si vous avez TCP/IP d'install bien sr). Faire pour cela Load ping sur le serveur. On peut ajouter des paramtres ( voir suivant le systme). On peut pinguer sa propre machine en faisant ping localhost ou ping 127.0.0.1.

tracert ( win95) - traceroute (NT et Linux)


Cet utilitaire dtermine l'itinraire pris par le paquet pour atteindre la cible sur internet. Il existe des paramtres qui diffrent suivant le systme. On peut utiliser l'adresse IP de destination ou bien le nom d'hte. Attention comme pour ping certains routeurs ou Firewall ne se laissent pas voir avec la commande tracert.

Route
Cette commande est un peu plus dlicate et vous n'aurez certainement pas l'occasion de vous en servir souvent. Elle permet d'ajouter ou de supprimer, ou de modifier une route sur votre machine (on peut effectuer cela depuis le voisinage rseau sous NT et sous Win95 ou depuis Linuxconf ou YaST sur Linux). 47

La syntaxe est presque quivalente sur tous les systmes. route commande [destination] mask. Sans option on obtient (Ici il n'y a aucune route particulire d'indique. La passerelle par dfaut est la machine philippe.ici.fr)

Winipcfg ( Win95)
Vous donne des informations sur votre station (adresse IP, masque, Serveur DNS, Serveur Wins, Type de connexion). On a l'information pour les cartes rseaux qui se trouvent sur la machine et aussi pour la connexion PPP.

Ipconfig ( NT )
La variante sous NT . Cela donne les mmes informations, adresse IP, type et nombre de cartes rseaux, passerelle. Par contre il faut ouvrir une fentre dos pour pouvoir l'utiliser. Il existe dans l'option pack un produit plus conviviale. ipconfig sans option affiche seulement l'adresse IP, le masque et la passerelle. Ipconfig /all pour avoir toutes les informations. Ipconfig /release libre l'adresse IP de la carte Ipconfig /renew renouvelle l'adresse IP de la carte.

48

ifconfig (Linux)
Mme commande sous Linux, mais en plus on peut changer l'adresse de la carte, ajouter une carte. Il existe donc un grand nombre d'options. Ifconfig sans option donne desd informations sur vos cartes rseaux.

nslookup (NT et Linux)


Outil trs puissant qui donne un grand nombre d'informations sur un domaine. Ainsi nslookup ac-creteil.fr, vous donne l'adresse IP du serveur de nom du domaine ac-creteil.fr, inversement nslookup 195.98.246.20 vous donne le nom de la machine correspondante et son domaine. Nslookup dispose d'un grand nombre de commandes qui vous permettent d'avoir toutes les informations sur un domaine (nom des machines, adresses IP des machines, voir fonction des machines d'un domaine).

Netstat
Permet d'afficher les statistiques de toutes les connexions TCP,IP et UDP. Il existe plusieurs options possibles. Existe sous les trois systmes.

Telnet (NT, Win95 et Linux)


Outil trs courant sous Linux, moins connu des utilisateurs Microsoft (Les systmes Microsoft ne disposent pas de serveur Telnet par dfaut).Sous les UNIX, il permet d'administrer le 49

systme distance. On peut utiliser telnet pour vrifier que sa bote aux lettres (serveur POP3) fonctionne correctement indpendamment de votre mailer habituel. On peut aussi dtruire un message trop volumineux sans le tlcharger.

Traceroute Prsentons l'application traceroute, ses principes, et pourquoi ses implmentations diffrent et peuvent embrouiller la comprhension de la chose. Traceroute est une application qui permet de dterminer un instant t les diffrentes passerelles que vous utilisez pour joindre une autre machine sur Internet. Exemple: Traceroute www.google.fr 1 2 3 4 5 6 7 8 9 10 11 12 13 <1 ms 27 ms 26 ms 24 ms 24 ms 27 ms 28 ms 38 ms 38 ms 39 ms 68 ms 69 ms 68 ms <1 ms 26 ms 25 ms 25 ms 24 ms 26 ms 28 ms 39 ms 68 ms 37 ms 68 ms 71 ms 66 ms <1 ms 192.168.0.254 24 ms 1.240.39-62.rev.gaoland.net [62.39.240.1] 25 ms 5-193-118-80.kaptech.net [80.118.193.5] 25 ms V3994.c1cbv.gaoland.net [212.94.162.209] 27 ms V4975.core1.itx.gaoland.net [212.94.161.178] 26 ms lambdanet-france.sfinx.tm.fr [194.68.129.164] 27 ms PZU-1-pos033.fr.lambdanet.net [217.71.96.233] 37 ms F-1-pos300.de.lambdanet.net [217.71.96.33] 38 ms F-8-eth100-0.de.lambdanet.net [217.71.105.110] 37 ms Google-F.de.lambdanet.net [217.71.111.38] 67 ms 216.239.48.146 70 ms 216.239.49.18 67 ms 66.102.11.99

Itinraire dtermin. On voit ainsi les diffrents routeurs par lesquels on passe pour atteindre la machine www.google.fr.

Comment ca marche ?
Pour comprendre le fonctionnement de traceroute, il faut connatre le principe du TTL de l'en-tte IP. Un champ est rserv dans l'en-tte IP qui a une certaine valeur comprise entre 0 et 255 (cette valeur peut varier selon les systmes d'exploitation) Lors du passage par un routeur, ce TTL est dcrment de 1. Lorsque le TTL vaut 0, le datagramme (ou paquet ;-) ) est jet la poubelle. Ainsi, si jamais un paquet IP se ballade indfiniment sur le rseau cause par exemple d'une boucle de routage, il sera dtruit au bout d'un moment, quand le TTL vaudra 0. Et ce qui est plus fort, c'est que la machine qui a dtruit le paquet prvient l'metteur en lui envoyant un paquet ICMP TTL exceeded. Le rapport avec traceroute ? Et bien traceroute se base sur ce principe pour dterminer les diffrentes machines prsentes sur un chemin. Si je veux savoir quelle est la cinquime machine par laquelle je passe pour atteindre www.google.fr, il me suffit d'envoyer un paquet IP avec un TTL de 5. Ainsi, lors du passage par le cinquime routeur, le TTL vaudra 0 et le routeur me renverra un paquet ICMP time exceeded en me disant "Je suis tel routeur, et j'ai jet ce paquet la poubelle car le TTL vallait 0" Ainsi, pour connatre l'ensemble des routeurs par lesquels je passe pour atteindre www.google.com, il me suffit d'emmettre successivement des paquets IP avec des TTL
50

croissant de 1 x jusqu' atteindre la destination. Chacun des routeurs rencontrs me renverra alors un paquet ICMP TTL exceeded me permettant de l'identifier.

Traceroute est donc bas sur de l'ICMP


Oui, mais non, c'est un peu plus compliqu que cela. Comme nous l'avons vu, traceroute se base sur deux tapes diffrentes. D'une part, l'envoi d'un paquet IP avec un certain TTL, et d'autre part, la rception d'un message d'erreur ICMP TTL exceeded. Il faut donc bien dcoreller ces deux tapes. Pour aller dans le sens de l'affirmation prcdente, la seconde tape est bien base d'ICMP. Par contre, si on prcise bien que la premire doit se faire par l'envoi d'un paquet IP, il n'est rien mentionne sur les protocoles suprieurs. Et c'est ici que a drape... Le choix du protocole permettant de gnrer l'erreur ICMP est laiss libre. Ainsi, on peut tout aussi bien utiliser du TCP, de l'ICMP ou de l'UDP, selon son choix et ses besoins. Mais le rsultat n'est pas toujours le mme selon que tel ou tel traffic est filtr ou non. Donc dire que traceroute est un protocole qui se base sur ICMP est un peu restrictif et risque d'amener des erreurs de comprhension. Par exemple, si vous filtrez l'UDP, que vous laissez passer l'ICMP et que votre application traceroute se base sur l'envoi de datagrammes UDP, il y a de fortes chances pour que ca ne fonctionne pas :-(

Parfois, a marche bizarrement...


Il y a des fois des traceroutes qui donnent des rsultats bizarres. Mais il y a toujours une explication. Prenons l'exemple suivant: Traceroute www.google.fr 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <1 ms 27 ms 26 ms 24 ms 24 ms 27 ms 28 ms 38 ms 38 ms 39 ms 39 ms 68 ms 69 ms 68 ms <1 ms 26 ms 25 ms 25 ms 24 ms 26 ms 28 ms 39 ms 68 ms 37 ms 37 ms 68 ms 71 ms 66 ms <1 ms 192.168.0.254 24 ms 1.240.39-62.rev.gaoland.net [62.39.240.1] 25 ms 5-193-118-80.kaptech.net [80.118.193.5] 25 ms V3994.c1cbv.gaoland.net [212.94.162.209] 27 ms V4975.core1.itx.gaoland.net [212.94.161.178] 26 ms lambdanet-france.sfinx.tm.fr [194.68.129.164] 27 ms PZU-1-pos033.fr.lambdanet.net [217.71.96.233] 37 ms F-1-pos300.de.lambdanet.net [217.71.96.33] 38 ms F-8-eth100-0.de.lambdanet.net [217.71.105.110] 37 ms Google-F.de.lambdanet.net [217.71.111.38] 37 ms Google-F.de.lambdanet.net [217.71.111.38] 67 ms 216.239.48.146 70 ms 216.239.49.18 67 ms 66.102.11.99

Itinraire dtermin. A en croire le rsultat, il semblerait que l'on passe deux fois par le mme routeur au dixime hop Google-F.de.lambdanet.net, ce qui n'est pas trs cohrent au niveau routage. Comment expliquer alors ce rsulat ? Il se peut qu'il y ait plusieurs rponses cette question mais l'une d'entre elles est plus probable que les autres et provient des principes mme du routage.
51

En effet, l'un des principes majeur du routage est que chaque paquet IP est rout indiffremment des autres. Ainsi, il est possible que pour une mme destination, deux paquets IP passent par deux itinraires diffrents, et arrivent tous deux destination sans que la machine receptrice puisse s'en rendre compte (je vous rappelle qu'aujourd'hui ce sont la plupart du temps des protocoles de routage dynamiques qui sont utiliss et qu'une route volue en temps rel) C'est typiquement ce qui a pu se passer pour notre exemple de traceroute. Il est tout fait possible que lors de l'tape 11 (qui correspond l'envoi d'un datagramme IP avec un TTL de 11) le chemin emprunt ne soit pas le mme que celui utilis pour l'tape 10. Si jamais le chemin emprunt passe par un routeur de plus avant l'tape 10, ce sera le mme routeur qui apparatra dans le traceroute (le dixime routeur pour le premier chemin sera aussi le onzime pour le second chemin) Par exemple, si une machine A veut dialoguer avec une machine B et a deux chemins possibles pour l'atteindre: A --> H --> I --> B Ou A --> H --> J --> I --> B Si lors de l'envoi d'un datagramme avec un TTL de 2 c'est le premier chemin qui est utilis, ce sera le routeur I qui rpondra. Et si lors de l'envoi d'un datagramme avec un TTL de 3 c'est le second chemin qui est utilis, ce sera encore le routeur I qui rpondra !! On verra donc apparatre deux fois le routeur I, comme deuxime et troisime routeurs traverss.

Conclusion
Comme nous avons pu le voir, l'application traceroute se sert d'une astuce au niveau du protocole IP (ou du moins d'ICMP) pour obtenir la liste des routeurs traverss pour joindre une destination un instant t. Mais il faut tre extrmement vigilants avec cette dfinition puisque le rsultat effectif donn par traceroute n'est pas du tout celui escompt (la liste obtenue n'est pas reprsentative d'un chemin utilis un instant t, mais l'enchanement des routeurs utiliss successivement t, t+1, t+2, etc.) Il faut donc garder l'esprit cette diffrence pour comprendre l'application elle-mme, mais aussi ses rsultats qui peuvent parfois tre choquants...

Source : Document ralis par Philippe Chadefaux http://www.ac-creteil.fr/reseaux/Internet/Protocoles/tcp/utilitaires.htm

52

Dossier : L'ADSL
(Article crit par Jean-Marie Landa - juin 2006)

Source : http://obligement.free.fr/articles/adsl.php

Introduction
Dans notre sujet du jour, aprs avoir vu les principaux supports de transmission et les bases et les modulations radio, nous aborderons maintenant la mise en place de l'ADSL en France travers une parenthse historique, puis nous allons nous pencher d'une manire plus dtaille sur sa technique. Nous verrons trois exemples de dploiement xDSL, un mot sur une situation gographique, une petite visualisation en image d'une connexion type PPoE vue de l'internaute, ainsi que le branchement d'un modem 56 Kbp/s en secours de panne.

1. La longue parenthse historique franaise


Encore en phase exprimentale au milieu des annes 1990 avant sa ratification en 1998, l'ADSL (Asymetric bit rate Digital Subscriber Line) utilise les frquences non vocales sur les paires de cuivre du rseau tlphonique pour permettre la transmission de donnes entre le modem ADSL du client et le DSLAM (Digital Subscriber Line Access Multiplexer) install l'autre extrmit physique de la paire de cuivre nomme : la boucle locale. Le dbit est asymtrique et dpend de sa qualit. Le DSLAM joue un rle trs important dans l'architecture du rseau puisqu'il se situe la frontire entre la boucle locale et le rseau de collecte de l'oprateur. Cet quipement permet galement de concentrer tous les canaux de tlvision de TPS ou Canal+ pour les distribuer vers l'internaute, le zapping des chanes se faisant au niveau du DSLAM. A l'issue d'une consultation internationale, France Tlcom (aujourd'hui Orange) a slectionn dans un premier temps Alcatel, Sagem, ECI Telecom et Lucent Technologies comme fournisseurs d'quipements d'accs ADSL.

53

DSLAM Alcatel

DSLAM ECI

54

Broadband Acces Server Redback

Dans la majorit des cas, compte tenu de la qualit et de la topologie du rseau tlphonique en France ce jour, le dbit thorique destination du client final est largement suprieur 512 kbits/s, et peut donc tre qualifi de "haut dbit". Si le modem ADSL du client est connect un ordinateur, et le DSLAM un rseau de transport de donnes, puis Internet, et sous rserve du dimensionnement des quipements techniques de l'ensemble de la chane, le client final peut accder Internet "haut dbit". 1.2 Les principales offres intressant potentiellement le march rsidentiel Pour tablir un march quilibr et concurrentiel, France Tlcom a publi plusieurs offres permettant aux oprateurs alternatifs et FAI de proposer des services xDSL aux clients finaux.

L'offre de rfrence dgroupage total : qui permet aux oprateurs et FAI (Fournisseurs d'Accs Internet) d'installer leurs propres DSLAM dans les locaux de France Tlcom ou proximit, l'extrmit d'une paire de cuivre dite alors "dgroupe" entre leurs quipements et le client final. L'oprateur et le FAI matrisent alors compltement la chane technique du service offert l'abonn. Cependant, les conditions de l'offre actuelle et l'intensit capitalistique ncessaire un dploiement national ne permettent pas d'envisager que des oprateurs proposeront des services ADSL destination des clients rsidentiels court terme en dehors des villes trs forte densit de population et d'activit. Le dgroupage partiel : ou accs partiellement dgroup la boucle locale, consiste en la mise disposition de l'oprateur tiers de la bande de frquence haute de la paire de cuivre, sur laquelle il peut alors construire, par exemple, un service ADSL. La bande de frquence basse (celle utilise traditionnellement pour le tlphone) reste gre par France Tlcom, qui continue de fournir le service tlphonique son abonn, sans aucun changement induit par le dgroupage. L'offre ADSL Connect ATM : qui permet aux oprateurs de collecter en cours de rgion ADSL, le trafic de donnes en mode ATM (Asynchronous Transfer Mode) avant de l'acheminer vers un FAI. Sa structure permet l'oprateur et au FAI de matriser le dimensionnement des faisceaux de transport et le BAS (Broadband Access Server ou quipement de connexion au rseau IP Internet) et donc une partie importante des facteurs, limitant potentiellement la qualit de service et le

55

dbit offert au client final. Sa structure apparat cependant complexe et coteuse mettre en oeuvre.

L'offre IP/ADSL : plus simple, qui est principalement destine aux FAI. Elle permet aux FAI de se faire livrer le trafic en des points de collecte rgionaux et nationaux, en IP. Ils matrisent peu la qualit du service offert au client final. Les accs IP-ADSL sont raccords sur un BAS avec lequel est tablie une session PPP sur ATM.

En consquence, le transport de donnes issu de l'ADSL rsidentiel est aujourd'hui sans conteste en majorit assur par Orange (France Tlcom l'poque) via son rseau ATM, les autres oprateurs disposant de parts de march marginales. Ces offres n'ont pas t respectes quant aux dlais, obstruction systmatique des homologations modems, et aux tarifs,... partout en France les tribunaux sont submergs et les recours arrivent devant le Conseil d'Etat avec de lourdes condamnations financires. La guerre est dclare, le bnficiaire sera l'abonn. Malgr tous ces problmes, les abonns l'ADSL haut dbit sont en constante progression, au premier trimestre 2006 ils sont 10,5 millions, 1 million de plus que le trimestre prcdent, dont 3,15 millions dgroups (950000 dgroups total en augmentation et 2,2 millions dgroups partiels en stagnation). Il a fallu attendre fin 2004 pour vritablement assister a son dcollage. Actuellement, en France, l'ADSL fait partie des solutions technologiques les plus prometteuses pour permettre le dveloppement de l'accs Internet haut dbit des clients rsidentiels.

ADSL dgroup

56

ADSL partag

2. La technique ADSL
La technique de l'ADSL est une technique datant du milieu des annes 1990 qui permet d'utiliser, sur de courtes distances, les lignes tlphoniques classiques (notre paire de cuivre) mais avec un dbit trs suprieur celui des normes plus classiques (V34 ou V90), donc qualifie de "haut dbit". L'ADSL est multiplexe en FDM (Frequency Division Multiplexing), base sur une modulation DMT (Discret Multi Tone) utilisant 256 sous-canaux, moduls indpendamment en QAM (Quadrature Amplitude Modulation) pour acclrer le dbit et avec une bande passante de 1,1 MHz : nous allons dtailler tout cela ci-dessous. 2.1 Le multiplexage FDM L'ADSL fonctionne en full duplex grce FDM, permettant de faire transiter simultanment les signaux montants et descendants accompagns galement des signaux portant la voix tlphonique. La mme technique tant utilise galement en ligne tlphonique dans l'organisation du groupe primaire, cette dernire consiste regrouper 12 voix tlphoniques de 4 kHz chacune, (3 kHz utilisables plus 2 espaces inter-bandes de 0.5 kHz) ce qui donne une largeur de bande de 48 kHz rpartie entre 60 et 108 kHz. Mais dans ce cas vous comprendrez aisment que toute technologie xDSL n'a plus sa bande passante haute et est donc impossible.

57

Exemple de trois lignes multiplexes

Voici l'illustration de ce multiplexage dans le cas o les frquences pour les voies montantes et descendantes ont t clairement spares. La sparation des canaux montants et descendants s'effectue par une bande suffisamment large l'aide d'un multiplexage FDM de manire viter les phnomnes d'cho. Une autre mthode peut tre utilise, c'est celle de l'annulation d'cho. Elle consiste mesurer en temps rel l'cho produit par le signal transmis, puis soustraire le rsultat du signal de manire annuler l'cho.

Annulation d'cho

2.2 Les canaux de la bande passante

58

Multiplexage FDM

Le premier canal est utilis par la tlphonie analogique. Appel POTS (Plain Old Telephone Service), il constitue l'usage normal de la ligne tlphonique. Une barrire est rserve entre 4 kHz et 20 kHz, de manire pouvoir facilement isoler le POTS de tout ce qui va se passer au dessus. Le splitter, filtre passe bas placer sur chaque prise tlphonique, et filtre passe haut au modem, sont l pour sparer les deux services. Entre 20 kHz et 200 kHz, on trouve les canaux qui serviront l'mission des donnes. Entre 200 KHz et 1,1 MHz, nous avons les canaux rservs la rception des donnes. Voici un conseil de filtrage. nous savons que la ligne tlphonique arrive sur la premire prise qui reoit le filtre ADSL. Donc, coupez le dpart vers les autres lignes internes et rebranchez ce dpart sur la sortie bande basse du filtre par une prise gigogne. En consquence, les autres prises tlphones n'ont plus besoin d'tre filtrs.

Filtre ADSL

59

Filtre gigogne

2.3 Modulation DMT Le principe de DMT est de diviser la bande passante disponible en un grand nombre de sous-bandes distinctes et de placer le signal numrique sur des porteuses analogiques. Le spectre utilis est compris entre 26 kHz et 1,1 MHz. Deux candidats taient en lice pour l'offre ADSL : DMT (Discrete MultiTone) et CAP (Carrierless Amplitude Phase). CAP n'a pas t retenue par l'ANSI mais reste sus les rangs pour VDSL (Very high data rate Digital Suscriber Line). C'est donc DMT qui a t retenu depuis 1993 et finalis en 1995 par le standard T1.413. L'UIT (Union Internationale des Tlcommunications) a confirm le choix de DMT pour son standard ADSL en 1998, qui divise la totalit de la bande passante en 256 souscanaux d'une largeur de 4,3 kHz. Ainsi, le 1er canal est rserv la tlphonie. Les canaux 2 6 servent sparer la voix des donnes numriques. Le flux montant occupe les 32 canaux suivants, et le flux descendant tous les 250 canaux restants.

Modulation DMT

60

Dans le cas o aucune zone de frquence ne spare les deux sens de communication et que l'annulation d'cho est en place, le maximum possible est de 15 bits/s par canal. Les zones de la bande passante pour lesquelles l'attnuation du signal est importante ou le rapport signal/bruit trop faible, auront moins de bits/s d'allous afin de garantir une bonne qualit la rception. Si la qualit est vraiment trop faible pour un canal, il peut ne pas tre utilis. Le dbit maximum thorique d'un tel systme est donc de 15 bit/s x 4000 Hz = 60 kbit/s par canal. En fait, tel qu'il a t normalis par ADSL. Le fait que la largeur de bande montante soit plus faible que la descendante explique le terme "asymtrique" dans la dnomination ADSL. De plus, certains sous-canaux sont utiliss pour la gestion de la transmission. Un quipement ADSL doit tre en mesure de moduler ou dmoduler jusqu' 256 porteuses. Vous comprenez que l'utilisation de la technologie mise en oeuvre pour le multiplexage FDM n'est pas envisageable sur un si grand nombre de porteuses. DMT est galement candidate pour tre la modulation normalise pour VDSL. 2.4 Modulation QAM Chacun des 256 sous-canaux est modul indpendamment en utilisant la technique de QAM. Chacun des canaux dfinis par le multiplexage DMT en ADSL est modul en QAM sur 15 bits au maximum soit : 32768 combinaisons d'amplitude et de dcalage de phase sont donc ncessaires. 2.5 Procdure de transfert Avant tout transfert de donnes, une procdure de ngociation (handshake) est mise en place pour mesurer la qualit de la transmission et l'adapter en fonction de la ligne. On appelle cette technique "rate adaptative" (dbit adapt), o l'on mesure le SNR (Signal to Noise Ratio) en dcibels. Elle n'est pas fonction de la distance contrairement l'attnuation, mais de la qualit de la ligne car elle est capable de diminuer le dbit si la qualit de la transmission se dgrade.

Relation signal/bruit et chargement des canaux

61

Ajustement des dbits par canal

Pour gagner encore en largeur de bande, et donc en dbit, on peut envisager de rapprocher les deux espaces de frquence mais il faut alors annuler les perturbations et le phnomne d'cho que subissent les signaux montant et descendant mis simultanment. 2.6 Porte et dbit

Dbit et porte

3. Trois exemples du dploiement des techniques xDSL

62

Le dploiement de l'ADSL

Dans sa version Lite, la technique ADSL permet de connecter Internet un particulier en utilisant simplement sa ligne tlphonique habituelle. ADSL Lite fait l'objet de la recommandation G.992.2 de l'UIT. Il reste bas sur DMT, mais utilise 127 sous-canaux, rduisant la bande totale 550 kHz au lieu de 1,1 MHz. Les dbits offerts sont de 1,5 Mbit/s en rception et 512 kbit/s en mission. Le filtre chez l'abonn n'est plus ncessaire, celui-ci est inclus dans le modem ADSL. C'est cette version d'ADSL que Orange (France Tlcom) a choisi pour ses exprimentations. Depuis le 27 mai 2005, l'ARCEP a autoris la mise en place du ReADSL2 (Reach extended ADSL2). Il s'agit d'une volution de la norme ADSL qui permet de prolonger la porte des signaux. Par rapport la norme ADSL "classique" pour des dbits allant jusqu' 512 kbit/s, et donc d'amliorer l'ligibilit au haut dbit pour les lignes longues du rseau commut. Grce au ReADSL2, les oprateurs peuvent donc proposer des accs large bande (jusqu' 512 kbit/s) des abonns qui n'avaient jusqu'alors pas pu bnficier de l'ADSL en raison de leur loignement du central tlphonique. En France, nous sommes donc pass de l'ADSL l'ADSL2+ directement, cette norme IUT G 992-5 ratifie en octobre 2004 est base sur le doublement de la bande passante utilise par l'ADSL premire gnration. Le spectre de frquence va en effet jusqu' 2,2 MHz au lieu de 1,1 MHz, il est donc double avec, en contrepartie, une porte rduite par rapport l'ADSL, privilgiant de fait les abonns les plus proches du central. L ou l'ADSL permet pour l'instant un dbit maximal de 8 Mbit/s pour la rception de donnes, c'est--dire en canal descendant, l'ADSL2+ autorise un dbit thorique allant jusqu' 24 Mbit/s pour les clients proches (environ 40 % des clients autour du central). Dans le sens remontant, le dbit restera sensiblement le mme, soit environ de 640 kbit/s 1,2 Mbits.

4. Situation gographique
Cette possibilit (rate adaptive) d'ajustement la qualit de la ligne en fait une technologie particulirement adapte au Rseau Tlphonique Commut (RTC) dont la qualit peut tre trs ingale suivant les localisations gographiques.
63

Par exemple : pourquoi, bien que nous disposions de l'ADSL2+ au DSLAM, je n'ai pas remplac mon routeur modem ADSL (8 Mbit/s) par un modem ADSL2+ (25 Mbit/s) ? Simplement parce que je suis distant du DSLAM de 1610 mtres (l'attnuation de la ligne est de 33 db), et que, par consquent le gain que pourrait nous offrir le modem ADSL2+ n'est pas d'un grand intrt. Mon dbit descendant est dj de l'ordre de 7 Mbit/s, et mme si ma ligne ne faisait que 50 mtres, je ne pourrais obtenir que 12 Mbit/s, car j'habite une zone lectromagntique fortement perturbe (proximit de la gare SNCF, d'un hopital et 22800 lignes).

5. Exemple d'une connexion ADSL


5.1 Etat de la connexion PPP

Etat PPP-Connexion Internet

Le processus de connexion est le suivant : le modem du client appelle le numro de tlphone du fournisseur d'accs et la connexion tlphonique s'tablit si l'un au moins de ses modems est libre. L'identification du client se fait par envoi d'un nom d'utilisateur et d'un mot de passe soit directement par l'utilisateur, soit selon l'un des deux protocoles suivants : PAP (Password Authenticate Protocol) ou CHAP (Challenge Handshake Authenticate Protocol). Pour PAP, le serveur de communication, le BAS envoie au modem un paquet pour demander le nom d'utilisateur et le mot de passe (IP) et le modem renvoie ces informations directement en clair. CHAP fonctionne de la mme manire, sauf que le serveur de communication RADIUS (Remote Authenticate Dial In User Service) envoie d'abord une cl qui va permettre de crypter l'envoi du nom d'utilisateur et du mot de passe, il n'est donc pas envoy en clair contrairement PAP. Une fois l'identification du client contrle, le BAS, envoie une adresse IP, dite "dynamique" car elle varie selon les connexions l'ordinateur client qui partir de l est intgr au rseau Internet. Une fois que la session PPPoE est ouverte, les donnes PPP sont envoyes comme dans l'encapsulation PPP avec une adresse IP WAN pour tout le temps que durera sa connexion, de 24 heures 72 heures. 5.2 Etat ADSL couche physique
64

Etat ADSL-Couche physique

Fondamentale, la couche physique (couche 2 de l'OSI), fournit les moyens mcaniques, lectriques, fonctionnels et procduraux ncessaires l'activation, au maintien et la dsactivation des connexions physiques destines la transmission de bits entre deux entits de liaison de donnes. La couche physique dfinit le type de signaux mis (modulation, puissance, porte,...), la nature et les caractristiques des supports (paire torsade, fibre optique...), le SNR (Signal to Noise Ratio), l'affaiblissement de la ligne et les sens de transmission quant leurs dbits montants et descendants. 5.3 Etat du trafic ATM

65

Etat du trafic ATM

La technique ATM (Asynchronous Transfer Mode) est base sur la segmentation des donnes en cellules de taille unique (ce qui la diffrencie d'un paquet, qui est de taille variable). Ce choix avait pour but une mise en oeuvre aise tant sur des liaisons bas dbit que des liaisons haut dbit, des liaisons gnrant un trafic continu que des liaisons gnrant un trafic de type transactionnel. L'en-tte de la cellule contient l'information permettant chaque cellule de trouver son chemin : elle indique, entre autre, l'identit du canal virtuel (VCI, Virtual Channel Identifier) auquel la cellule appartient. Le VCI est local au commutateur, il est rcrit la sortie de chaque commutateur, prenant une nouvelle valeur pour le prochain noeud. Ce mcanisme vite une allocation du VCI sur tout le rseau. L'quipement fondamental est le BAS (Broadband Access Server) qui possde des interfaces ATM ct rseau de collecte d'accs ADSL et des interfaces Ethernet ct backbone IP. Le BAS est aussi le point de collecte des flux ATM provenant des DSLAM concernant les offres IP/ADSL. Le BAS Redback permet le raccordement de 2000 accs pour un dbit moyen descendant de 100 kbit/s par ligne connecte. Dans les BAS, les connexions sont de type VC UBR. Pour chaque port STM-1 du BAS, les connexions VC sont identifies dans les deux sens par un couple VPI/VCI tel que VPI = 1, 2, 3 255 et VCI = 32 4095. 5.4 Etat de la connexion TCP

66

Etat Connexion TCP

TCP (Transmission Control Protocol) est l'un des deux principaux protocoles de la couche 4 de l'OSI, avec l'UDP (User Datagram Protocol). Tous les deux utilisent IP comme couche rseau, mais TCP procure une couche de transport fiable (alors mme que IP ne l'est pas), tandis que UDP ne fait que transporter de manire non fiable des datagrammes. Tout au long de la connexion, TCP change un flux d'octets sans qu'il soit possible de sparer par une marque quelconque certaines donnes. Le contenu des octets n'est pas du tout interprt par TCP, c'est donc aux applications d'extrmit de savoir grer le flot de donnes. L'extrmit demandant l'ouverture de la connexion, est le client. Il met un segment SYN (o le bit SYN est fix 1) spcifiant le numro de port du serveur avec lequel il veut se connecter. La terminaison d'une connexion peut tre demande par n'importe quelle extrmit et se compose de deux demi-fermetures puisque des flots de donnes peuvent s'couler simultanment dans les deux sens. L'extrmit qui demande la fermeture, le client, met un segment o le bit FIN est fix 1 et o le numro de squence vaut N'. Le rcepteur du segment l'acquitte en retournant un ACK=N'+1 et informe l'application de la demi-fermeture de la connexion. partir de l, les donnes ne peuvent plus transiter que dans un sens (de l'extrmit ayant accept la fermeture vers l'extrmit l'ayant demande : le client), et dans l'autre seuls des accuss de rception sont transmis. Quand l'autre extrmit veut fermer sa demi-connexion, elle agit de mme que prcdemment ce qui entrane la terminaison complte de la connexion. 5.5 Le petit journal

67

Le petit journal d'une connexion

Pour clore ce chapitre 5, voici ce qui se passe lors de ma connexion (modem ADSL SX500 et abonnement chez Tl2 ADSL).

6. Utilisation d'un modem 56 kbps en mme temps que l'ADSL


Son fonctionnement prsente une anomalie quand l'ADSL est install. En l'utilisant normalement, avec sa prise gigogne, derrire la gigogne ADSL, le fonctionnement est alatoire et le dbit plafonne 28 kbps. En supprimant la prise gigogne et en branchant le modem 56k sur le fil la place du modem ADSL, le fonctionnement devient normal. C'est illogique car cette sortie ADSL est un passe haut 5 kHz, il devrait donc couper totalement la partie basse du spectre qui vhicule l'analogique, mais en pratique c'est un filtre "mou" qui laisse passer les frquences de quelques kHz. Par contre, la sortie tlphonique est un passe bas raide qui ne laisse passer que le vocal (pour viter les parasites dans le tlphone) et attnue fortement les frquences au dessus des 3 KHz, qui bloque le modem 56k utilisant tout le spectre en bande basse.

Conclusion
On le voit clairement, l'ADSL, cette fantastique bidouille technique, fonctionne plutt bien. Le systme reste un moyen technologiquement trs sophistiqu pour exploiter au mieux une installation tlphonique existante : sans modifier quoi que ce soit, l'ADSL permet ainsi d'utiliser une ligne tlphonique avec du haut dbit. A l'avenir, la prochaine tape sera le remplacement de notre paire de cuivre dans la boucle locale par la fibre optique, mais cela prendra de longues annes d'attente. Note : dessins raliss par A. Peres-Mas.
68

Le transfert de fichier sur le serveur : le FTP


(Article crit par Nicolas Gressard et extrait d'Obligement 38 - avril 2003)

Source : http://obligement.free.fr/articles/ftp.php

Le protocole FTP
Le protocole FTP est l'un des plus vieux protocoles utiliss sur l'internet. Pour vous le situer un peu, la date de naissance de l'anctre d'internet, Arpanet, est 1969 et la date de la premire version de FTP est 1971. (j'avais -1 an ;). Le protocole FTP tel que nous le connaissons date de 1975. Pour vous donner une petite ide de son anciennet par rapport aux autres services de l'internet, le premier navigateur web t cr en 1990. Le protocole FTP (File Transfert Protocol) est un protocole de transfert de fichiers fonctionnant sur le principe du "client-serveur". Ceci signifie que le logiciel "client" va se connecter sur un serveur sur lequel tourne le logiciel "serveur" en attente permanente de connexion et sur lequel sont stocks lesdits fichiers. Le client va ensuite envoyer des commandes au serveur afin de connatre la liste des fichiers qu'il contient et demander l'envoi ou la rception de fichiers. D'autres protocoles permettent galement d'effectuer des transferts de fichiers, mais celui-ci est certainement le plus fiable et le plus complet puisqu'il a t conu exclusivement pour cette tche. Chaque protocole normalis utilis sur l'internet est rgi selon des spcifications appeles RFC (Request For Comments). On peut les trouver sur tous les grands sites FTP, notamment les sites universitaires, ceux des organismes de recherche et ceux des socits lies l'internet. Exemples : ftp.lip6.fr, ftp.inria.fr, ftp.nic.fr. Le RFC se rapportant au protocole FTP est le 959. Sur Internet, les protocoles des diffrents services utilisent des numros de port (canaux) spcifiques, ainsi un mme serveur physique peut hberger plusieurs services (FTP, Telnet, SMTP, POP, HTTP,...). Le numro de port (habituellement) utilis par le service FTP est le 21. Lorsqu'un client se connecte un serveur, il effectue donc une connexion sur l'adresse IP du serveur et sur le port 21. Un dialogue s'engage alors sur ce port de communication permettant au client d'envoyer des commandes (List, Stor, Retr, Dele, Cwd, Quit,...) et au serveur de rpondre par des messages dbutant par trois chiffres dont la signification est normalise. Lorsque le client demande envoyer ou rcuprer un fichier sur le serveur, ce dernier cre une nouvelle connexion sur un nouveau numro de port et le transmet au client. Les transferts de fichiers peuvent s'effectuer selon deux modes : "ascii" ou "binaire". Le mode "ascii" est prvu pour les fichiers textes, et prend en charge la conversion (retours la ligne,...) entre les diffrentes plates-formes. Le mode binaire n'effectue aucune conversion et transmet le fichier octet pour octet.

Le client FTP pour Amiga : AmiTradeCenter


Le logiciel AmiTradeCenter est de faon certaine le client FTP le plus complet et le plus utilis sur Amiga. Il s'agit d'un logiciel freeware sous MUI qui n'a rien envier aux clients FTP, mme commerciaux, existant sur les autres plates-formes. Voici les spcificits qui en font un logiciel extrmement srieux et complet :

Gestion d'un catalogue de serveurs (Manager) Support des URL de type "Internet Explorer" (ftp://user:password@host) GUI trs complte sous MUI Transfert de rpertoires complets (non prvu dans le protocole) 69

Rglage de la bande passante alloue au transfert Prise en charge du "Glisser-Dposer" (Drag & Drop) Support des FireWalls Support de la commande "CHMOD" Prsence d'un mode spcial "ADT" pour AmiNet

70

Pages Web dynamique


Les pages web auxquelles on accde par l'intermdiaire du protocole HTTP sont ranger en deux catgories : les pages statiques et les pages dynamiques.

Au moment o le navigateur adresse sa requte au serveur, celui-ci dterminera d'aprs l'extension demande (.htm, .html, .php, .asp,) si la page demande est statique ou dynamique.

Les pages statiques


Le standard tabli pour la diffusion de documents sur le web est le langage HTML (HyperText Markup Language). Le langage HTML permet de dfinir la prsentation du document ainsi que des liens hypertextes vers d'autres documents l'aide de balises de formatage. Dans le code HTML, on retrouvera galement du codage javascript ainsi que des feuilles de style (CSS Cascading Style Sheets) permettant de dfinir de faon annexe au document les styles de chaque balise. Elles peuvent galement contenir des rfrences vers d'autres objets pour lesquels un 'plug-in' (1) sera ncessaire. Ces pages statiques sont des simples fichiers textes que le navigateur se chargera lui-mme de traduire. Lors de la requte HTTP, le serveur ne fera donc qu'une seule chose : transmettre le fichier au navigateur qui se chargera de faire la mise en forme et d'afficher le rsultat sur l'cran du surfeur. Ces pages statiques sont trs pratiques pour crer un site contenant quelques dizaines de pages mais avec les limitations suivantes : une maintenance difficile due l'obligation de modifier manuellement chacune des pages. l'impossibilit de renvoyer une page personnalise suivant le visiteur. l'impossibilit de crer une page dynamiquement selon les entres d'une base de donnes. C'est pourquoi il a t ncessaire de mettre au point une solution permettant de gnrer des pages web du ct du serveur, c'est--dire de crer des pages dynamiques.
(1)

Les 'plug-in' les plus rpandus : Apple QuickTime permet de lire les animations QuickTime, les fichiers de type MIDI, audio, video et VR panorama prsents dans une page web. Adobe Acrobat Reader est l'un des programmes les plus fiables et efficaces pour changer des fichiers d'information avec d'autres personnes. 71

Macromedia Flash Player constitue le moteur de la plupart des sites web anims. Ce programme est considr comme le standard du web pour tous les vecteurs d'illustrations et les animations. Macromedia Shockwave vous permet de profiter pleinement des jeux interactifs, des applications multimedia, des animations et du streaming audio prsents partout sur le web. RealNetworks RealPlayer vous permet de profiter du streaming audio (webradio), des fichiers video et des animations. Nullsoft Winamp vous offre la possibilit de profiter du streaming audio (webradio) ou d'couter des fichiers en format mp3.

Les pages dynamiques


Plusieurs solutions mettant en uvre un langage de script sur le serveur ont t mises au point. Citons : CGI (Common Gateway Interface) consistait interprter des programmes (gnralement crits en Perl ou en langage C) puis de leur faire envoyer un contenu compatible avec l'HTML. ASP (Active Server Pages) a permis de modifier l'criture de tels scripts en manipulant des objets en VBScript. PHP (Personal Hypertext preprocessor) emploie son propre langage (driv du C++ et de Perl) et permet de nombreuses fonctionnalits. JSP (Java Server Pages) est la plus rcente parmi ces technologies. Elle permet d'utiliser toute la puissance de Java pour crer des pages web dynamiques. Toutes ces technologies aboutissent toujours au mme point : au moment de la rception de la requte HTTP sur le serveur, celui-ci reconnat que la demande ne se limite pas un chargement de fichier mais s'tend galement un traitement par un programme (PHP, CGI, Perl) qui se chargera de crer le code HTML ncessaire en sortie, ce code gnr tant alors dcodable par le navigateur. Il y a donc ncessit, lorsqu'on veut crer des pages dynamiques, de s'assurer que l'hbergeur choisi possde bien les technologies prvues.

Sources : www.commentcamarche.net

www.webrankinfo.com

72

La notion de serveur
Un serveur web est un logiciel permettant de rendre accessibles de nombreux ordinateurs (les clients) des pages web stockes sur le disque. Cette fiche pratique explique comment installer le serveur web Apache

73

Configuration dun serveur apache avec le fichier .htaccess


(Source : http://www.webmaster-hub.com/publication/article4.html et site dOVH)

Le fichier .htaccess Ce chapitre a pour but de vous faire dcouvrir le fichier .htaccess et son utilisation pour amliorer votre site web. Le fichier .htaccess est un fichier texte particulier qui est dtect par le serveur web (Apache), et qui permet de dfinir des rgles spciales sur un rpertoire et l'ensemble de ses sousrpertoires. Ces fichiers n'apparaissent pas dans l'arborescence du rpertoire concern si un internaute fait un accs un rpertoire listable (qui ne contient pas de page index, et dont le listage n'est pas interdit). Ce simple fichier texte vous permet dajuster finement certains paramtres de votre serveur Apache tels que les redirections, les rcritures dURL, les redirections et les restrictions daccs. Avec le protocole ftp, il est impratif de transfrer le fichier .htaccess en mode texte et non en mode binaire, de manire obtenir les caractres de fin de ligne appropris au systme dexploitation du serveur. De mme, ldition en local devra se faire en mode texte. Cette puissance permet le meilleur comme le pire. Mme si la syntaxe des rgles du fichier .htaccess est souvent triviale, la moindre faute dans celles-ci se traduira le plus souvent par une erreur 500 . Lerreur 500 est une erreur interne au serveur, survenant le plus souvent lors de lappel dun module inexistant ou effectuant une opration illgale. Lune des utilisations les plus rpandues de ce fichier est laffichage dune page 404 (page inexistante) personnalise, beaucoup plus utile que celle procure par dfaut par votre navigateur favori. Votre hbergement permet-il son utilisation ? Cest, bien sr, la premire question se poser. Elle ne fait malheureusement pas partie de celles auxquelles on peut rpondre simplement. Si votre hbergement se fait sur un systme Unix/Linux et que le serveur Web est de type Apache, le fichier .htaccess est support. Ceci ne veut malheureusement pas dire que votre hbergeur en autorise lutilisation. Le plus souvent, les hbergements gratuits ont cette fonctionnalit dsactive. Si votre hbergeur vous permet de restreindre laccs certains de vos rpertoires laide dun mot de passe, cest en gnral laide du fichier .htaccess, dans ce cas, tout va bien. De deux choses lune : soit vous tlchargez votre fichier .htaccess et tout fonctionne comme vous lespriez, soit cela ne fonctionne pas et au pire vous obtenez une "erreur 500". Dans ce cas, il ne vous reste plus qu retirer le fichier incrimin. Ce nest pas bien dangereux, mais rservez vos essais une priode creuse. Le seul cas o un fichier .htaccess pourrait poser de rels problmes est celui o le serveur utilise des extensions Microsoft FrontPage. Ces dernires utilisent le fichier .htaccess et son crasement les empcherait jamais de fonctionner. Si vous naimez pas vivre dangereusement, le plus simple reste encore de demander votre hbergeur ou une connaissance ayant le mme type dhbergement que vous. Pour effectuer vos tests, il est judicieux de crer un rpertoire temporaire sur votre site, dans 74

lequel vous mettrez un fichier index.html et le fichier .htaccess sur lequel vous travaillez. Une fois votre fichier .htaccess mis au point, dplacez le dans le rpertoire que vous voulez protger, ou la racine de votre site. Cest support ? Bien ! Continuons ! Comment crer un fichier .htaccess Avant toutes choses, il faut arriver crer ce fichier. Sous pratiquement tous les systmes dexploitation, cela se fait sans problme comme nimporte quel fichier texte. Windows peut toutefois ne pas accepter la cration de ce fichier tel que souhait. En effet, .htaccess est vu par Windows comme un fichier sans nom comportant une extension non standard. Si notepad ou votre diteur favori ne vous permet pas denregistrer ce fichier avec le nom souhait, sauvez-le comme htaccess.txt, vous le renommerez plus tard sur votre serveur laide de votre logiciel de transfert ftp. Note : Sous windows, vous ne pouvez pas crer directement un fichier nomm .htaccess ou .htpasswd. Il vous suffit alors de le nommer autrement, de le transfrer sur votre espace web, et de le renommer en .htaccess ou .htpasswd ensuite l'aide de votre client FTP. Attention : Avec le protocole ftp, il est impratif de transfrer le fichier .htaccess en mode texte et non en mode binaire, de manire obtenir les caractres de fin de ligne appropris au systme dexploitation du serveur. De mme, ldition en local devra se faire en mode texte. Une fois renomm, le fichier doit imprativement se nommer .htaccess (dbutant par un point), sinon il sera sans effet. Que puis-je faire avec un fichier .htaccess ?

Les deux lments les plus intressants concernent la protection des accs votre site web. Ces deux lments possdent des guides spars : - protection des accs un rpertoire via une authentification :: HtaccessProtection :: - empcher certaines adresses IP d'accder votre site :: HtaccessProtectIP :: Vous pouvez galement effectuer d'autres oprations que nous allons dtailler ci-dessous... Empcher le listage du contenu d'un rpertoire Pour empcher les internautes de lister l'ensemble des fichiers contenus dans un rpertoire en l'absence d'index (.cgi, .html, .php etc ....), crez un fichier .htaccess contenant la ligne cidessous : Options -Indexes Rediriger les messages d'erreur Si vous voulez utiliser des messages d'erreur personnaliss ou rediriger les erreurs sur une page web, crez un fichier .htaccess contenant des lignes de cette forme : ErrorDocument numro_d_erreur message_ou_destination Remplacez "numro_d_erreur" par le numro correspondant. Les 3 erreurs les plus courantes sont :

75

404 : page inexistante 403 : accs interdit 500 : erreur interne du serveur Remplacez "message_ou_destination" par l'action effectuer. Pour afficher un simple message, tapez le message correspondant entre guillements. Pour rediriger sur une page, mettez le chemin d'accs cette page. Voici deux exemples pour vous clairer : Vous souhaitez indiquer "Dsol, vous n'avez pas le droit d'accder ce fichier" lors d'une erreur 403. Vous mettez la ligne ci-dessous dans votre .htaccess : ErrorDocument 403 "Dsol, vous n'avez pas le droit d'accder ce fichier" Vous souhaitez renvoyer les erreurs 404 sur votre page personnalise 404.html (pour votre domaine : domaine.com) : ErrorDocument 404 http://www.domaine.com/404.php Si cela ne fonctionne pas verifiez que dans les proprietes d'Internet explorer vous avez -onglet Avanc -dcocher "Afficher des messages d'erreur HTTP simplifis". Spcifier un fichier d'index diffrent Par dfaut, le fichier index d'un rpertoire est index.html, index.htm ou index.php. Si vous voulez que ce soit un autre fichier, vous pouvez mettre une ligne de ce type dans votre .htaccess : DirectoryIndex nom_du_fichier Par exemple, si vous voulez utiliser la page accueil.html comme page d'index, utilisez la ligne suivante : DirectoryIndex accueil.html Faire de la rcriture d'URL Vous pouvez, pour des raisons diverses, souhaiter rcrire les URLs de votre site. Pour cela, vous pouvez utiliser un fichier .htaccess de la forme suivante : RewriteEngine on RewriteRule rgle_de_rcriture Il suffit de remplacer "rgle_de_rcriture" par la rgle dont vous avez besoin. Vous pouvez bien sr crire plusieurs rgles diffrentes dans un mme fichier. Malheureusement, les possibilits sont trop nombreuses et les besoins trop diversifis pour en faire le tour dans ce guide. Rfrezvous la documentation officielle pour plus de dtails: http://httpd.apache.org/docs/misc/rewriteguide.html[4] Pour les spcificits de mod_rewrite sur les hbergements OVH, vous pouvez galement consulter ce guide: HtaccessModRewrite

Nous allons commencer notre dcouverte avec une fonctionnalit bien utile La page derreur sur mesure

76

Comme tout internaute, vous avez dj eu loccasion de faire face lerreur la plus rpandue, lerreur 404. Cette erreur vient du fait que lInternet est essentiellement mouvant, des millions de pages y apparaissent et disparaissent chaque jour. Si un de vos visiteurs dcide de mettre en favori lune de vos pages pour y revenir plus tard, rien ne lui garantit que cette page sera toujours accessible sa prochaine visite. Vous pouvez tout moment dcider de la dplacer, de la renommer ou de la supprimer. Cest votre site, vous en avez le droit le plus absolu. Que se passera-t-il lors du retour de ce mme visiteur ? Cest simple : son navigateur fera une requte pour la page souhaite, requte laquelle le serveur rpondra pas trouv . Ds la gense du Web, les diffrents concepteurs ont bien intgr le fait que les utilisateurs seraient dorigines diffrents et quune page mentionnant ce laconique pas trouv ne pourrait pas tre exhaustive sur le plan linguistique. Ils ont donc dfini des codes pour chaque type derreurs, laissant aux navigateurs le soin dafficher le message dans la langue de lutilisateur. Do, dans ce cas prcis, lerreur communment appele erreur 404 . Pour viter vos visiteurs cette page peu esthtique, une seule ligne suffit dans le fichier .htaccess : ErrorDocument 404 /mapage.html

Ds ce moment, toutes les requtes pour des pages inexistantes recevront en retour la page mapage.html. Si vous tes prvoyant, cette page pourrait prsenter un plan de votre site qui vitera votre visiteur de se sentir seul et abandonn de tous. Il faut bien sr que ce fichier mapage.html existe la racine de votre site sinon votre serveur ne saura plus o donner de la tte. Ne souriez pas, cest arriv lauteur de ces lignes. Dune manire plus gnrale, linstruction ErrorDocument scrit : ErrorDocument code-erreur fichier

En plus de lerreur 404, vous pouvez donc fournir des pages spcifiques pour les erreurs les plus frquentes, par exemple : 401 400 403 500 Autorisation Requise Mauvaise requte Interdit Erreur interne serveur

La restriction daccs par mot de passe Nous avons tous sur nos sites certains rpertoires que nous souhaitons protger des yeux indiscrets. Quil soit bien entendu ici, que la meilleure protection possible pour un document passe par la non publication sur le Web, quelle que soit le niveau de protection du serveur ou du rpertoire. Ceci est encore plus vrai sil sagit dun hbergement mutualis dont la gestion est assure par un organisme indpendant. Ne stockez donc pas sur votre serveur Web dinformations dont la divulgation pourrait vous pnaliser. Ces limitations tant exprimes, il est souvent utile ou dans certains cas indispensable davoir dans un rpertoire des informations telles que le mot de passe daccs votre base de donnes ou les statistiques de frquentation de votre serveur. Dans le cadre des hbergements sur serveur Apache, il est ais de soustraire certains rpertoires la curiosit du public. Cette fois encore, le fichier .htaccess est votre alli.

77

Le mode opratoire en est simple et sappuie sur un deuxime fichier qui contiendra les noms et mots de passe des personnes autorises accder au contenu du rpertoire. Dans le fichier .htaccess, saisissez les informations suivantes : AuthUserFile /home/login/.htpasswd AuthGroupFile /dev/null AuthName "Acces Restreint" AuthType Basic <Limit GET POST> require valid-user </Limit>

Analysons de plus prs ces quelques lignes : AuthUserFile /home/login/.htpasswd ou AuthUserFile /home/votre_login_ftp/www/'chemin d'accs au fichier .htpasswd'/.htpasswd donne le rpertoire dans lequel se trouve le fichier contenant les paires login/mot de passe des visiteurs autoriss. Notez bien quil ne sagit pas dune URL, mais bien dun chemin daccs depuis la racine du serveur. Lusage veut que ce fichier soit souvent nomm .htpasswd, mais ce nest pas du tout une obligation. Il est mme conseill dutiliser un autre nom, le fichier sera dautant plus difficile trouver. Ne le mettez pas dans un rpertoire qui fait partie du site mais placez-le plutt en dehors de cette arborescence si vous en avez le choix. Dans le systme dexploitation Unix/Linux, tous les fichiers dont le nom commence par un point dcimal sont des fichiers cachs. Attention : cach ne signifie pas invisible, mais signifie plutt quils napparaissent pas dans les commandes les plus frquentes si leur affichage nest pas spcifiquement demand. AuthGroupFile /dev/null permet de donner un droit daccs un ensemble dutilisateurs faisant partie dun mme groupe et est rarement utilise dans le cas de sites Web personnels. Dans lexemple, le fichier /dev/null est lquivalent Unix de nulle-part ou pas de fichier spcifique AuthName "Acces Restreint" est la chane de caractre qui apparatra dans la bote de dialogue au moment de la saisie du nom et du mot de passe. AuthType Basic dtermine le type dauthentification utilis, dans notre cas lauthentification HTTP standard. <limit GET POST> ... </limit> dtermine le type doprations permises. GET sapplique la majorit des pages Web, PUT est utilis par certains scripts ou diteurs pour faire de lupload sous protocole http. Il est important de mettre GET et POST en majuscule sur les dernires versions dApache.

78

require valid-user signifie littralement quun utilisateur valide est requis, savoir un utilisateur pour le nom duquel une ligne existe dans le fichier .htpasswd. Une variante pourrait tre : require user pierre paul pour limiter laccs aux seuls utilisateurs pierre et paul Par dfaut, Apache applique les restrictions du fichier .htaccess l'ensemble des fichiers du rpertoire dans lequel il se trouve ainsi qu' tous les fichiers contenus dans ses sous-rpertoires. Pour bloquer l'accs un ou plusieurs fichiers prcis et non pas tout le rpertoire, il suffit d'ajouter les balises (une balise FILES par fichier): <Files test.php> AuthUserFile /home/votre_login_ftp/www/'chemin d'accs au fichier .htpasswd'/.htpasswd AuthGroupFile /dev/null AuthName "Accs Restreint" AuthType basic <Limit GET POST> require valid-user </Limit> </Files> Il faut utiliser une seule balise <Files> par fichier. Sinon, l'erreur suivante est reporte dans le fichier de log des erreurs : .htaccess: Multiple arguments not (yet) supported.

Pour info, il faut ajouter que depuis Apache 1.3, il est conseill d'utiliser la balise <FilesMatch> la place de la balise <Files>. Cette nouvelle balise ne supporte aussi qu'un seul argument. Le fichier .htpasswd Ce fichier contiendra la liste des utilisateurs ayant le droit de se connecter, et le mot de passe qui leur est associ. Il sera ensuite utilis par le fichier .htaccess. Il s'agit d'un fichier texte simple, l'intrieur duquel sont indiqus les noms des utilisateurs et leur mot de passe sous forme crypte, par exemple pierre :saqKFoHV4rU.E Le fichier .htpasswd ne doit pas forcment tre au mme endroit que le fichier .htaccess. Vous pouvez par exemple le placer la racine de votre hbergement, et l'utilisez pour protger diffrents rpertoires de votre site, tant donn qu'un seul fichier .htpasswd peut tre utilis par plusieurs fichiers .htaccess. Le fichier .htpasswd doit contenir une ligne par utilisateur prcisant le nom d'utilisateur et le mot de passe associ. Ces lignes sont de la forme suivante : utilisateur:mot_de_passe_crypt Pensez a mettre un retour chariot a la suite du mot de passe crypt.

79

La seule difficult, pour autant que cen soit une, tant de crypter le mot de passe. Si vous avez accs a un shell Unix/Linux utilisez la commande : htpasswd -c passwdfile username Dans cette commande, passwdfile reprsente le chemin complet du fichier mot de passe souhait, username est le nom de lutilisateur. Si vous navez pas accs cette commande, vous trouverez un programme pour encoder vos mots de passe ladresse suivante : http://www.webmaster-hub.com/publication/Le-fichier-htaccess.html (en bas de page) Voici comment encrypter votre mot de passe (algorithme DES avec cl) : Nom: Mot de passe: Cl:
Crypter

La cl de deux caractres demande permet de diversifier les mots de passe gnrs. Ces deux caractres constituent ce quon appelle le "sel" (salt) de lencryptage. Vous voil en mesure de restreindre laccs vos rpertoires privs ou, pourquoi pas, de crer des rpertoires rservs aux copains ou aux membres de votre famille. Aprs avoir rempli les deux premiers champs et cliqu sur "crypter", vous rcuprerez la forme crypt du mot de passe dans le champs "Le mot crypt". Il faudra copier le texte correspondant dans le fichier .htpasswd Un autre programme se trouve sur ovh : http://www.ovh.com/cgi-bin/crypt.pl Vous avez dplac vos pages ? Il est parfois ncessaire de dplacer certaines pages ou rpertoires dun site dans loptique dune restructuration. Ceci ne va pas sans poser quelques problmes inhrents au changement dadresse : la page nest plus accessible pour les visiteurs qui lont mise dans leurs favoris. les rfrences cette page dans les moteurs de recherche et annuaires pointent vers lancienne adresse. Dans ces deux cas de figure, plutt que de prsenter une page derreur personnalise au visiteur, il est beaucoup plus lgant de le rediriger automatiquement vers la nouvelle adresse. Ici encore, le fichier .htaccess nous sera prcieux. Pour dplacer une page : RedirectPermanent ancien.html http://www.domaine.tld/nouveau.html

80

Cette directive signale au navigateur que la page ancien.html a t renomme nouveau.html et renvoie lentte correcte au navigateur pour signaler ce fait (entte 301 "dplacement permanent"). Lavantage de cette approche est que les robots dindexation des diffrents moteurs apprendront que cette page a t dplace et modifieront leur index pour reflter la nouvelle adresse. Dans le cas de Google, le PageRank ( Indice de mesure de popularit dune page utilis par Google et not sur une chelle de 0 10.) de lancienne page sera automatiquement transmis la nouvelle page. Pour dplacer un rpertoire : RedirectPermanent /ancien http://www.domaine.tld/nouveau/ Il est important de noter que dans le cas dutilisation de la directive RedirectPermanent, la nouvelle adresse de page ou de rpertoire doit tre une URL complte. Pour changer de nom de domaine : RedirectPermanent / http://www.nouveaudomaine.tld/ redirigera la racine de lancien site vers le nouveau domaine. Note : Seuls les moteurs de recherche ajusteront leur index pour reflter la nouvelle adresse. Noubliez pas de demander aux annuaires de modifier leurs liens vers vos pages.

Comment bloquer certaines IP au niveau de mon site ? Procdure suivre Il vous suffit de crer un fichier nomm .htaccess et de le placer dans le rpertoire www (ou dans un repertoire rpertoire particulier que vous souhaitez restreindre). Ce fichier devra contenir des rgles de blocage. Chaque rgle est dfinie sur une ligne de la forme suivante : Deny from adresse_IP Ou Deny from plage_IP Ou Deny from domaine Il vous suffit ensuite de remplacer le terme gnrique par l'lment que vous voulez bloquer. Voici quelques exemples : Vous souhaitez bloquer l'adresse IP 192.168.1.2, vous crivez : Deny from 192.168.1.2 Vous souhaitez bloquer toutes les IP en 192.168.x.x, vous crivez : Deny from 192.168 Vous souhaitez bloquer toutes les adresses IP qui ont une identification Wanadoo (c'est un exemple, il n'y pas de raison de le faire priori...), vous crivez : Deny from .wanadoo.fr

Grer les types de fichiers

81

Un type MIME (en anglais MIME type) est un ensemble de types de fichiers standard, permettant d'associer une extension de fichier donne une application, afin d'automatiser le lancement de l'application. Ajouter un Mime-Type un rpertoire La syntaxe est la suivante :
AddType (mime/type [liste d'extension])

Voici un exemple de mise en oeuvre du fichier .htaccess :


AddType image/x-photoshop PSD AddType application/x-httpd-php .php3 AddType application/x-httpd-php .htm

Le serveur enverra au navigateur Internet le fichier en lui disant de lancer le programme PhotoShop (s'il est install sur votre machine) et de lui donner le fichier. Habituellement, ceci est utilis pour des fichiers ncessitant un Plug-In particulier non reconnu par votre navigateur. Cette commande permet aussi d'annuler tout lment prdfini. Ainsi, vous pouvez enregistrer un fichier .wav avec une extension .gif et prciser au navigateur de considrer les fichiers .gif comme des fichiers audio ! En pratique, on pourra donc utiliser cette commande pour ordonner PHP de parser d'autres extensions de fichier, .htm par exemple. Forcer tous les fichiers d'un rpertoire un Mime-Type Voici la syntaxe adopter :
ForceType (mime/type)

Par exemple avec la ligne suivante, tous les fichiers du rpertoire contenant le fichier .htaccess seront considrs comme tant des fichiers .jpg quelle que soit leur extension : ForceType image/jpg Note aux utilisateurs FrontPage Lorsque les extensions FrontPage sont installes, un fichier .htaccess est cr la racine du site. Il faut donc tre trs prudent et viter dcraser ce fichier, faute de quoi les extensions FrontPage ne fonctionneraient plus sur votre site. De mme, avant toute modification, une sauvegarde du fichier originel est utile, car toute erreur dans ce fichier pourrait rendre lentiret de votre site inaccessible. Sur cette page Web, vous pouvez gnrer via un simple formulaire les instructions les plus souvent utilises mettre dans votre fichier HTaccess: http://aspirine.org/htaccess.html

82

Rfrences

http://help.ovh.com/HtaccessOther http://guide.ovh.com/HtaccessAutre http://www.domaine.com/404.php http://httpd.apache.org/docs/misc/rewriteguide.html http://www.infres.enst.fr/~danzart/frames/htaccess.html http://www.commentcamarche.net/apache/apacht.php3

83

Les scripts ct serveur, exemple de PHP


Sources : ces quelques pages sont extraites de Comment a Marche (www.commentcamarche.net) PHP Implantation du code sont l pour vous aider comprendre les exemples que nous allons faire ensemble. Si vous voulez aller plus loin, lisez lensemble des pages du site dont sont issues ces informations et inscrivez-vous en developper

Quest-ce que PHP


PHP est un langage interprt (un langage de script) excut du ct serveur (comme les scripts CGI, ASP, ...) et non du ct client (un script crit en Javascript ou une applet Java s'excute sur votre ordinateur...). La syntaxe du langage provient de celles du langage C, du Perl et de Java. Ses principaux atouts sont : Une grande communaut de dveloppeurs partageant des centaines de milliers d'exemples de script PHP ; La gratuit et la disponibilit du code source (PHP est distribu sous licence GNU GPL) ; La simplicit d'criture de scripts ; La possibilit d'inclure le script PHP au sein d'une page HTML (contrairement aux scripts CGi, pour lesquels il faut crire des lignes de code pour afficher chaque ligne en langage HTML) ; La simplicit d'interfaage avec des bases de donnes (de nombreux SGBD sont supports, mais le plus utilis avec ce langage est MySQL, un SGBD gratuit disponible sur de nombreuses plateformes : Unix, Linux, Windows, MacOs X, Solaris, etc...) ; L'intgration au sein de nombreux serveurs web (Apache, Microsoft IIS, etc.). Laccs des fonctions avances comme la cration de pdf la vole (La librairie FPDF est par exemple une classe crite en php permettant de gnrer dynamiquement du PDF. http://www.fpdf.org ) ou la gnration dimages (par exemple bibliothque GD permettant de redimensionner ou dajouter un cadre une image de base) Un script PHP est un simple fichier texte contenant des instructions crites l'aide de caractres ASCII 7 bits (des caractres non accentus) incluses dans un code HTML l'aide de balises spciales et stock sur le serveur. Ce fichier doit avoir l'extension .php pour pouvoir tre interprt par le serveur. Ainsi, lorsqu'un navigateur (le client) dsire accder une page dynamique ralis en PHP : le serveur reconnait l'extension d'un fichier PHP et le transmet l'interprteur PHP Ds que l'interprteur rencontre une balise indiquant que les lignes suivantes sont du code PHP, il ne lit plus les instructions: il les excute! L'interprteur excute l'instruction puis envoie les sorties ventuelles au serveur A la fin du script, le serveur transmet le rsultat au client (le navigateur).

Un script PHP est interprt par le serveur, les utilisateurs ne peuvent donc pas voir le code source! Le code PHP stock sur le serveur n'est donc jamais visible directement par le client puisque ds qu'il en demande l'accs, le serveur l'interprte! De cette faon aucune modification n'est apporter sur les navigateurs. Pour que le script soit interprt par le serveur deux conditions sont ncessaires : Le fichier contenant le code doit avoir l'extension telle que .php et non .html Le code PHP contenu dans le code HTML doit tre dlimit par des balises du type <? et ?> Un script PHP doit : comporter l'extension .php tre imbriqu entre les dlimiteurs <? et ?>

84

Pour des raisons de conformit avec certaines normes (XML et ASP par exemple), plusieurs balises peuvent tre utilises pour dlimiter un code PHP : 1. 2. 3. 4. <? et ?> <?php et ?> <script language="php"> et </script> <%php et %>

Voici ci-dessous l'exemple classique de script PHP :

<html> <head><title>Exemple</title></head> <body> <?php echo "Hello world"; ?> </body> </html>
On notera bien videmment que la fonction echo permet d'afficher sur le navigateur la chaine dlimite par les guillemets. La manire d'crire les choses en langage PHP a son importance. Le langage PHP est par exemple sensible la casse (en anglais case sensitive), cela signifie qu'un nom contenant des majuscules est diffrent du mme nom crit en minuscules. Toutefois, cette rgle ne s'applique pas aux fonctions, les spcifications du langage PHP prcisent que la fonction print peut tre appele print(), Print() ou PRINT(). Enfin, toute instruction se termine par un point-virgule.

Concept de variable avec PHP


Une variable est un objet repr par son nom, pouvant contenir des donnes, qui pourront tre modifies lors de l'excution du programme. Les variables en langage PHP peuvent tre de trois types : scalaires tableaux tableaux associatifs

Quelque soit le type de variable, son nom doit obligatoirement tre prcd du caractre dollar ($). Contrairement de nombreux langages de programmation, comme le langage C, les variables en PHP n'ont pas besoin d'tre dclares, c'est--dire que l'on peut commencer les utiliser sans en avoir averti l'interprteur prcdemment, ainsi si la variable existait prcdemment, son contenu est utilis, sinon l'interprteur lui affectera la valeur en lui assignant 0 par dfaut. De cette faon si vous ajoutez 3 une nouvelle variable (non dfinie plus haut dans le code), sa valeur sera 3... Avec PHP, les noms de variables doivent rpondre certains critres : un nom de variable doit commencer par une lettre (majuscule ou minuscule) ou un "_" (pas par un chiffre) un nom de variable peut comporter des lettres, des chiffres et le caractre _ (les espaces ne sont pas autoriss!)

Nom de variable correct $Variable $Nom_De_Variable $nom_de_variable $nom_de_variable_123 $nom_de_variable

Nom de variable incorrect $Nom de Variable $123Nom_De_Variable $toto@mailcity.com $Nom-de-variable nom_de_variable

Raison comporte des espaces commence par un chiffre caractre spcial @ signe - interdit ne commence pas par $

85

Les noms de variables sont sensibles la casse (le langage PHP fait la diffrence entre un nom en majuscule et un nom en minuscules), il faut donc veiller utiliser des noms comportant la mme casse!

Porte (visibilit) des variables


Selon l'endroit o on dclare une variable, celle-ci pourra tre accessible (visible) de partout dans le code ou bien que dans une portion confine de celui-ci ( l'intrieur d'une fonction par exemple), on parle de porte (ou visibilit) d'une variable. Lorsqu'une variable est dclare dans le code mme, c'est--dire l'extrieur de toute fonction ou de tout bloc d'instructions, elle est accessible de partout dans le code (n'importe quelle fonction du programme peut faire appel cette variable). On parle alors de variable globale Lorsque l'on dclare une variable l'intrieur d'un bloc d'instructions (entre des accolades), sa porte se confine l'intrieur du bloc dans lequel elle est dclare. Une variable dclare au dbut du code, c'est--dire avant tout bloc de donne, sera globale, on pourra alors les utiliser partir de n'importe quel bloc d'instructions Une variable dclare l'intrieur d'un bloc d'instructions (dans une fonction ou une boucle par exemple) aura une porte limite ce seul bloc d'instructions, c'est--dire qu'elle est inutilisable ailleurs, on parle alors de variable locale

D'une manire gnrale il est prfrable de donner des noms diffrents aux variables locales et globales pour des raisons de lisibilit et de comprhension du code.

Les oprateurs de calcul


Les oprateurs de calcul permettent de modifier mathmatiquement la valeur d'une variable Rsultat (pour x=7) 10 4 21 2.3333333 Met la valeur 3 dans la variable $x 1

Oprateur + * / = %

Dnomination oprateur d'addition oprateur de soustraction oprateur de multiplication plus: oprateur de division

Effet Ajoute deux valeurs Soustrait deux valeurs Multiplie deux valeurs Divise deux valeurs

Exemple $x+3 $x-3 $x*3 $x/3 $x=3

oprateur d'affectation Affecte une valeur une variable oprateur modulo

Donne le reste de la division entire entre $x%3 2 nombres

Les oprateurs d'assignation


Ces oprateurs permettent de simplifier des oprations telles que ajouter une valeur dans une variable et stocker le rsultat dans la variable. Une telle opration s'crirait habituellement de la faon suivante par exemple: $x=$x+2 Avec les oprateurs d'assignation il est possible d'crire cette opration sous la forme suivante: $x+=2 Ainsi, si la valeur de x tait 7 avant opration, elle sera de 9 aprs... Les autres oprateurs du mme type sont les suivants : Oprateur Effet

86

+= -= *= /= %= |= ^= &= .=

addition deux valeurs et stocke le rsultat dans la variable ( gauche) soustrait deux valeurs et stocke le rsultat dans la variable multiplie deux valeurs et stocke le rsultat dans la variable divise deux valeurs et stocke le rsultat dans la variable donne le reste de la division deux valeurs et stocke le rsultat dans la variable Effectue un OU logique entre deux valeurs et stocke le rsultat dans la variable Effectue un OU exclusif entre deux valeurs et stocke le rsultat dans la variable Effectue un Et logique entre deux valeurs et stocke le rsultat dans la variable Concatne deux chanes et stocke le rsultat dans la variable

Les oprateurs d'incrmentation


Ce type d'oprateur permet de facilement augmenter ou diminuer d'une unit une variable. Ces oprateurs sont trs utiles pour des structures telles que des boucles, qui ont besoin d'un compteur (variable qui augmente de un en un). Un oprateur de type $x++ permet de remplacer des notations lourdes telles que $x=$x+1 ou bien $x+=1 Oprateur ++ -Dnomination Incrmentation Dcrmentation Effet Augmente d'une unit la variable Diminue d'une unit la variable Syntaxe $x++ $x-8 6 Rsultat (avec x valant 7)

Les oprateurs de comparaison


Oprateur Dnomination Effet Compare deux valeurs et vrifie leur galit Vrifie qu'une variable est strictement infrieure une valeur Vrifie qu'une variable est infrieure ou gale une valeur Vrifie qu'une variable est strictement suprieure une valeur Vrifie qu'une variable est suprieure ou gale une valeur Vrifie qu'une variable est diffrente d'une valeur Exemple $x==3 Rsultat Retourne 1 si $x est gal 3, sinon 0 Retourne 1 si $x est infrieur 3, sinon 0 Retourne 1 si $x est infrieur ou gale 3, sinon 0 Retourne 1 si $x est suprieur 3, sinon 0 Retourne 1 si $x est suprieur ou gal 3, sinon 0 Retourne 1 si $x est diffrent de 3, sinon 0

== A ne pas confondre avec le oprateur d'galit signe d'affectation (=)!! < oprateur d'infriorit stricte oprateur d'infriorit oprateur de supriorit stricte oprateur de supriorit oprateur de diffrence

$x<3

<=

$x<=3

>

$x>3

>=

$x>=3

!=

$x!=3

Les oprateurs logiques (boolens)


Ce type d'oprateur permet de vrifier si plusieurs conditions sont vraies : Oprateur Dnomination || ou OR && ou AND XOR ! OU logique ET logique OU exclusif NON logique Effet Vrifie qu'une des conditions est ralise Vrifie que toutes les conditions sont ralises Vrifie qu'une et une seule des conditions est ralise Syntaxe ((condition1)||(condition2)) ((condition1)&&(condition2)) ((condition1)XOR(condition2))

Inverse l'tat d'une variable boolenne (retourne la valeur 1 (!condition) si la variable vaut 0, 0 si elle vaut 1)

Autres oprateurs

87

Les oprateurs ne peuvent pas tre classs dans une catgorie spcifique mais ils ont tout de mme chacun leur importance! Oprateur . $ Dnomination Concatnation Rfrencement de variable Effet Joint deux chanes bout bout Permet de dfinir une variable Syntaxe Rsultat

"Bonjour"."Au revoir" "BonjourAu revoir" $MaVariable = 2;

PHP - Les structures conditionnelles


Qu'est-ce qu'une structure conditionnelle?
On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot cl true 1 et false 0). Exemple de structure conditionnelle :

Cette structure se traduira par :

<?php if ($a > $b) {print "a is bigger than b";} elseif ($a == $b) {print "a est gal b";} else {print "==> a is smaller than b.";} ?>
Ces structures conditionnelles peuvent tre associes des structures qui se rptent suivant la ralisation de la condition, on appelle ces structures des structures de boucle

La notion de bloc
Une expression suivie d'un point-virgule est appele instruction. Par exemple a++; est une instruction. Lorsque l'on veut regrouper plusieurs instructions, on peut crer ce que l'on appelle un bloc, c'est--dire un ensemble d'instructions (suivies respectivement par des point-virgules) et comprises entre les accolades { et }. Les instructions if, while et for peuvent par exemple tre suivies d'un bloc d'instructions excuter...

L'instruction if
L'instruction if est la structure de test la plus basique, on la retrouve dans tous les langages (avec une syntaxe diffrente...). Elle permet d'excuter une srie d'instruction si jamais une condition est ralise. La syntaxe de cette expression est la suivante :

if (condition ralise) { liste d'instructions }

88

Remarques:

la condition doit tre entre des parenthses il est possible de dfinir plusieurs conditions remplir avec les oprateurs ET et OU (&& et ||) par exemple l'instruction suivante teste si les deux conditions sont vraies :

if ((condition1)&&(condition2))
L'instruction ci-dessous excutera les instructions si l'une ou l'autre des deux conditions est vraie :

if ((condition1)||(condition2))
s'il n'y a qu'une instruction, les accolades ne sont pas ncessaires...

L'instruction if ... else


L'instruction if dans sa forme basique ne permet de tester qu'une condition, or la plupart du temps on aimerait pouvoir choisir les instructions excuter en cas de non ralisation de la condition... L'expression if ... else permet d'excuter une autre srie d'instruction en cas de non-ralisation de la condition. La syntaxe de cette expression est la suivante :

if (condition ralise) { liste d'instructions } else { autre srie d'instructions } L'instruction if ... elseif ... else
L'instruction if ... else ne permet de tester qu'une condition, or il est parfois ncessaire de tester plusieurs conditions de faon exclusive, c'est--dire que sur toutes les conditions une seule sera ralise ... L'expression if ... elseif ... else permet d'enchaner une srie d'instructions et vite d'avoir imbriquer des instructions if. La syntaxe de cette expression est la suivante :

if (condition ralise) { liste d'instructions } elseif (autre condition ralise) { autre srie d'instructions } ... else (dernire condition ralise) { srie d'instructions } une faon plus courte de faire un test (oprateur ternaire)
Il est possible de faire un test avec une structure beaucoup moins lourde grce la structure suivante, appele oprateur ternaire :

(condition) ? instruction si vrai : instruction si faux


Remarques:

la condition doit tre entre des parenthses

89

Lorsque la condition est vraie, l'instruction de gauche est excute Lorsque la condition est fausse, l'instruction de droite est excute

L'instruction switch
L'instruction switch permet de faire plusieurs tests de valeurs sur le contenu d'une mme variable. Ce branchement conditionnel simplifie beaucoup le test de plusieurs valeurs d'une variable, car cette opration aurait t complique (mais possible) avec des if imbriqus. Sa syntaxe est la suivante :

switch (Variable) { case Valeur1 : Liste d'instructions break; case Valeur2 : Liste d'instructions break; case Valeurs... : Liste d'instructions break; default: Liste d'instructions break; }
Les parenthses qui suivent le mot cl switch indiquent une expression dont la valeur est teste successivement par chacun des case. Lorsque l'expression teste est gale une des valeurs suivant un case, la liste d'instructions qui suit celui-ci est excute. Le mot cl break indique la sortie de la structure conditionnelle. Le mot cl default prcde la liste d'instructions qui sera excute si l'expression n'est jamais gale une des valeurs. N'oubliez pas d'insrer des instructions break entre chaque test, ce genre d'oubli est difficile dtecter car aucune erreur n'est signale...

Les boucles
Les boucles sont des structures qui permettent d'excuter plusieurs fois la mme srie d'instructions jusqu' ce qu'une condition ne soit plus ralise... On appelle parfois ces structures instructions rptitives ou bien itrations. La faon la plus commune de faire une boucle, est de crer un compteur (une variable qui s'incrmente, c'est--dire qui augmente de 1 chaque tour de boucle) et de faire arrter la boucle lorsque le compteur dpasse une certaine valeur.

La boucle for
L'instruction for permet d'excuter plusieurs fois la mme srie d'instructions: c'est une boucle! Dans sa syntaxe, il suffit de prciser le nom de la variable qui sert de compteur (et ventuellement sa valeur de dpart, la condition sur la variable pour laquelle la boucle s'arrte (basiquement une condition qui teste si la valeur du compteur dpasse une limite) et enfin une instruction qui incrmente (ou dcrmente) le compteur. La syntaxe de cette expression est la suivante :

for (compteur; condition; modification du compteur) { liste d'instructions }


Par exemple :

for ($i=1; $i<6; $i++) { echo "$i<br>"; }


Cette boucle affiche 5 fois la valeur de $i, c'est--dire 1,2,3,4,5

90

Elle commence $i=1, vrifie que $i est bien infrieur 6, etc... jusqu' atteindre la valeur $i=6, pour laquelle la condition ne sera plus ralise, la boucle s'interrompra et le programme continuera son cours. D'autre part, le langage PHP autorise la dclaration de la variable de boucle dans l'instruction for elle-mme! Par exemple :

for ($i=0; $i<10; $i++) { echo "$i<br>"; }


il faudra toujours vrifier que la boucle a bien une condition de sortie (i.e le compteur s'incrmente correctement) une instruction echo dans votre boucle est un bon moyen pour vrifier la valeur du compteur pas pas en l'affichant! il faut bien compter le nombre de fois que l'on veut faire excuter la boucle: o o o o for($i=0;$i<10;$i++) excute 10 fois la boucle ($i de 0 9) for($i=0;$i<=10;$i++) excute 11 fois la boucle ($i de 0 10) for($i=1;$i<10;$i++) excute 9 fois la boucle ($i de 1 9) for($i=1;$i<=10;$i++) excute 10 fois la boucle ($i de 1 10)

L'instruction while
L'instruction while reprsente un autre moyen d'excuter plusieurs fois la mme srie d'instructions. La syntaxe de cette expression est la suivante :

while (condition ralise) { liste d'instructions }


Cette instruction excute la liste d'instructions tant que (while est un mot anglais qui signifie tant que) la condition est ralise. La condition de sortie pouvant tre n'importe quelle structure conditionnelle, les risques de boucle infinie (boucle dont la condition est toujours vraie) sont grands, c'est--dire qu'elle risque de provoquer un plantage du navigateur!

Saut inconditionnel
Il peut tre ncessaire de faire sauter la boucle une ou plusieurs valeurs sans pour autant mettre fin celle-ci. La syntaxe de cette expression est "continue;" (cette instruction se place dans une boucle!), on l'associe gnralement une structure conditionnelle, sinon les lignes situes entre cette instruction et la fin de la boucle seraient obsoltes. Exemple: Imaginons que l'on veuille imprimer pour $x allant de 1 10 la valeur de 1/($x-7) ... il est vident que pour $x=7 il y aura une erreur. Heureusement, grce l'instruction continue il est possible de traiter cette valeur part puis de continuer la boucle!

$x=1; while ($x<=10) { if ($x == 7) { echo "Division par zro!"; continue; } $a = 1/($x-7); echo "$a<br>"; $x++; }
Il y avait une erreur dans ce programme... peut-tre ne l'avez-vous pas vue : Lorsque $x est gal 7, le compteur ne s'incrmente plus, il reste constamment la valeur 7, il aurait fallu crire :

$x=1; while ($x<=10) { if ($x == 7) { echo "division par 0";

91

$x++; continue; } $a = 1/($x-7); echo "$a<br>"; $x++; } Arrt inconditionnel


A l'inverse, il peut tre voulu d'arrter prmaturment la boucle, pour une autre condition que celle prcis dans l'entte de la boucle. L'instruction break permet d'arrter une boucle (for ou bien while). Il s'agit, tout comme continue, de l'associer une structure conditionnelle, sans laquelle la boucle ne ferait jamais plus d'un tour! Dans l'exemple de tout l'heure, par exemple si l'on ne savait pas quel moment le dnominateur ($x-7) s'annule (bon...OK...pour des quations plus compliques par exemple) il serait possible de faire arrter la boucle en cas d'annulation du dnominateur, pour viter une division par zro!

for ($x=1; $x<=10; $x++) { $a = $x-7; if ($a == 0) { echo "division par 0"; break; } echo "1/$a<br>";

PHP - Affichage de texte sur le navigateur


Les trois fonctions standards
PHP fournit 3 fonctions permettant d'envoyer du texte au navigateur. Ces fonctions ont la particularit de pouvoir insrer dans les donnes envoyes des valeurs variables, pouvant tre fonction d'une valeur rcupre par exemple, c'est ce qui rend possible la cration de pages dynamiques. Les 3 fonctions sont les suivantes : echo print

La fonction echo
La fonction echo permet d'envoyer au navigateur la chane de caractres (dlimite par des guillemets) qui la suit. La syntaxe de cette fonction est la suivante :

echo Expression;
L'expression peut tre une chane de caractres ou une expression que l'interprteur value

echo "Chaine de caracteres"; echo (1+2)*87;


Ainsi, tant donn que la chane de caractres est dlimite par des guillemets, l'insertion de guillemets doubles dans la chane provoquerait une erreur. C'est la raison pour laquelle les guillemets doubles, ainsi que tous les caractres spciaux, doivent tre prcds d'un antislash. Voici un rcapitulatif des caractres spciaux ncessitant l'ajout d'un antislash : Caractre <TD\"< td><TDGUILLEMET< td> <TD\$< td><TDCARACT&EGRAVE;RE td $<> <TD\\< td>< inverse oblique> <TD\R< td><> <TD\N< td>< la > <TD\T< td><TDTABULATION< td> Description

92

Le caractre $ a un rle particulier dans la mesure o l'interprteur le comprend comme une variable, ce qui signifie que lorsque le caractre $ est rencontr dans la chane qui suit la fonction echo, l'interprteur rcupre le nom de la variable qui suit le caractre $ et le remplace par sa valeur. Dans l'exemple suivant par exemple, on assigne la date actuelle une variable appele $MaDate, puis on l'affiche sur le navigateur :

<HTML> <HEAD> <TITLE>Affichage de l'heure</TITLE> </HEAD> <BODY> <? // Rcupration de la date // et stockage dans une variable $MaDate = date("Y"); echo "Nous sommes en $MaDate"; ?> </BODY> </HTML>

La fonction print
La fonction print est similaire la fonction echo la diffrence prs que l'expression afficher est entre parenthses. La syntaxe de la fonction print est la suivante :

print(expression);
L'expression peut, comme pour la fonction echo tre une chane de caractres ou une expression que l'interprteur value :

print("Chaine de caracteres");

PHP - Les variables d'environnement

Notion de variable d'environnement


Les variables d'environnement sont, comme leur nom l'indique, des donnes stockes dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script PHP est : Le serveur Le client

Ces variables sont cres par le serveur chaque fois que le script PHP est appel, le serveur les lui fournit en paramtres cachs lors de l'excution de l'interprteur. Elles permettent notamment d'avoir des informations sur le type de serveur, son administrateur, la date laquelle le script a t appel, l'adresse IP et le type de navigateur du client,...

Les variables d'environnement dpendant du client


Variable d'environnement $AUTH_TYPE $COMSPEC $CONTENT_TYPE $DOCUMENT_ROOT Description Il s'agit de la mthode d'authentification qui a t utilise par le client pour accder au script PHP Location de l'interprteur de commandes sur la machine (Sous Windows) Type de donnes contenu prsent dans le corps de la requte. Il s'agit du type MIME des donnes Racine des documents sur le serveur

93

$DOCUMENT_URI $HTTP_ACCEPT

Adresse du script PHP en relatif ( partir de la racine du serveur) Types MIME reconnus par le serveur (spars par des virgules)

$HTTP_ACCEPT_ENCODING Types d'encodage que le serveur peut raliser (gzip,deflate) $HTTP_ACCEPT_LANGUAGE Langue utilise par le serveur (par dfaut en-us) $HTTP_CONNECTION $HTTP_HOST $HTTP_REFERER Type de connexion ouverte entre le client et le serveur (par exemple Keep-Alive) Nom d'hte de la machine du client (associe l'adresse IP) URL de la page qui a appel le script PHP Cette variable permet d'avoir des informations sur le type de navigateur utilis par le client, ainsi que son systme d'exploitation. Voici quelques exemples de UserAgents :

Mozilla/4.0 (compatible; MSIE 5.01;


$HTTP_USER_AGENT

Windows NT; TUCOWS Network) Mozilla/4.7 [en] (X11; I; Linux 2.2.14-15mdk i686)

$LAST_MODIFIED $PATH $PATH_INFO $PHP_SELF $REDIRECT_STATUS $REDIRECT_URL $QUERY_STRING $REMOTE_ADDR $REMOTE_PORT

Date et heure de dernire modification du fichier Il s'agit du chemin d'accs aux diffrents rpertoires sur le serveur Il s'agit du chemin d'accs au script PHP en relatif (de la racine du serveur jusqu'au script PHP) Nom du script PHP Il s'agit de l'tat de la redirection (echec ou succs) Il s'agit de l'URL vers laquelle le navigateur du client a t redirig Il s'agit de la partie de l'URL (ayant servi accder au script PHP) situe aprs le point d'interrogation. C'est de cette manire que sont transmises les donnes d'un formulaire dans le cas de la mthode GET Cette variable contient l'adresse IP du client appelant le script CGI Cette variable permet de savoir le port sur lequel la requte HTTP a t envoye au serveur Chemin d'accs complet au script PHP Sous windows, il sera de la forme : c:/php/php.exe Chemin d'accs relatif (par rapport au chemin d'accs la racine web ($DOCUMENT_ROOT)) au script PHP

$SCRIPT_FILENAME

$SCRIPT_NAME

Affichage des variables d'environnement


PHP fournit la fonction getenv() permettant de retourner la valeur de la variable d'environnement passe en paramtre :

<? echo getenv("HTTP_USER_AGENT"); ?>

PHP - Rcupration de donnes

PHP rend trs simple la rcupration de donnes envoyes par l'intermdiaire de formulaires HTML.

94

Cration d'un formulaire


Grce la balise FORM du langage HTML, il est trs simple de crer des formulaires comprenant : des champs de saisie des cases cocher des boutons radio des listes choix multiples des champs "hidden" (cachs) pour transmettre certaines informations ...

Pour utiliser un tel formulaire capable d'envoyer des informations un script PHP, il suffit de mettre le nom du fichier PHP qui rceptionnera les informations en tant que valeur de l'attribut ACTION de la balise FORM. Voici ce quoi peut ressembler un formulaire en HTML, permettant d'envoyer les coordonnes d'une personne un fichier PHP nomm test.php3 :

<FORM Method="POST" Action="test.php3"> Nom : <INPUT type=text size=20 name=nom><BR> Prnom : <INPUT type=text size=20 name=prenom><BR> Age : <INPUT type=text size=2 name=age><BR> <INPUT type=submit value=Envoyer> <INPUT type=hidden name=afficher value=ok> </FORM>
Le rsultat de ce code est le suivant (le bouton Envoyer est volontairement dsactiv) :

Nom : Prnom : Age :


Envoyer

Rcupration et utilisation des donnes Note sur les variables globales


Les variables globales peuvent tre actives ou dsactives selon la configuration du serveur, ce qui dtermine la faon dont on pourra rcuprer les informations des formulaires. Pour connaitre leur statut sur le serveur PHP que vous utilisez, il vous suffit de crer une page contenant uniquement ce code, et de la tlcharger sur votre serveur :

<?php phpinfo(); ?>


Ouvrez ensuite ce fichier situ sur le serveur et observez la ligne register_globals, et vous verrez inscrit en face ON ou OFF (activ ou dsactiv). Pour des raisons de scurit, depuis la version 4.2.0 de PHP, les variables globales sont dsctives par dfaut. Cependant, l'administrateur du serveur peut changer cette option.

Avec les variables globales actives


Si les variables globales sont actives, chaque donne (valeur saisie dans le champ) transmise par formulaire est directement passe dans une variable (intitule comme l'attribut NAME du champ). Exemple (d'aprs le formulaire prcdent), sur la page test.php3, on aura :

$nom = 'le_contenu_du_champ_nom'

95

$prenom = 'le_contenu_du_champ_prenom' $age = 'le_contenu_du_champ_age' $afficher = 'ok'


Cette page test.php3 affichera donc le contenu des champs :

<HTML> <HEAD> <TITLE>Affichage des rsultats</TITLE> <BODY> <?php echo $nom; echo '<br>' echo $prenom; echo '<br>'; echo $age; echo '<br>' echo $afficher; ?> </BODY> </HTML>

PHP Mail
PHP tant un langage consacr au Web, il possde bien videmment des fonctions lui permettant de communiquer avec le "monde extrieur" l'aide de fonctions standards. Le service le plus utilis sur Internet tant la messagerie lectronique, il est naturel que PHP permette d'envoyer des mails.

La fonction mail()
En PHP il existe une fonction trs simple qui permet d'envoyer un email. Voil sa syntaxe

Entier mail(chane email_destinataire, chane Sujet, chane corps_du_message, chane options);


Le dernier champ est facultatif, on en parlera juste aprs. Dans un premier temps nous allons envoyer un email de base. Voil le nouveau code du fichier traitant les donnes envoyes par le formulaire prcdant :

<html?> <body?> <h4>Merci <?echo $nom;??></h4?> <? echo "<p>Votre commentaire : $texte</p?>"; mail( "webmaster@commentcamarche.net", "Commentaire sur CCM", "$nom a laiss un commentaire propos de commentcamarche.net: \n\n$texte" ); ?> </body?> </html?>
Les \n l'intrieur du corps de m'email permettent d'aller la ligne Chez certains hbergeurs (dont Free) la fonction mail est dsactive car elle permet de simuler un envoi de mail partir de n'importe quelle adresse. Ainsi elle est parfois remplace par la fonction email()

Les options / en-ttes


Le champ options de la fonction mail permet d'ajouter une en-tte au message que l'on envoie. On peut par exemple y mettre la date, le logiciel utilis pour envoyer l'email ou encore l'adresse de retour... Voil un exemple d'en-tte utiliser lors d'un envoi de mail :

$from_email = "contact@phpfrance.com"; $entetedate = date("D, j M Y H:i:s -0600"); // Offset horaire

96

$entetemail = "From: $from_email \n"; // Adresse expditeur $entetemail .= "Cc: \n"; $entetemail .= "Bcc: \n"; // Copies caches $entetemail .= "Reply-To: $from_email \n"; // Adresse de retour $entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ; $entetemail .= "Date: $entetedate";
La commande prcdente quivaut donc :

mail( "webmaster@commentcamarche.net", "Commentaire sur commentcamarche.net", "$nom a laiss un commentaire propos de commentcamarche.net: \n\n$texte", $entetemail );

97

Dcouverte du langage PHP au travers de Quelques petits exemples (utiles)


Ma premire page en PHP (bonjour.php) Soit un petite page (bonjour.php) servant afficher un message lcran en mlangeant les techniques PHP et HTML ; une partie du message sera affiche par du code HTML adquat, lautre au moyen de code PHP ; cet exercice dpourvu dutilit en soi, permet de constater ce qui arrive au niveau du navigateur par rapport ce qui est stock sur le serveur, notamment, vous pourrez constater que ct navigateur, il ny a dans les sources plus aucune trace de PHP ! Voici le source du script et le rsultat attendu Code PHP
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Ma premire page PHP</title> <link href="php.css" rel="stylesheet" type="text/css"> </head> <body > <div class="wrapper"><h2>Ma premire page PHP</h2> <p>Bonjour tous, de la part de HTML ! </p> <p> <?php // section en code PHP $salut= "Salut tous"; echo "$salut, <b>de la part de PHP</b> !" ; ?> </p> </div> </body> </html>

Excution

Ma premire page PHP


Bonjour tous, de la part de HTML !

Salut tous, de la part de PHP !

Examen du code expdi par le serveur, et affich par le navigateur : c'est du pur HTML ! Code HTML reu
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Ma premire page PHP</title> <link href="php.css" rel="stylesheet" type="text/css"> </head> <body >

Excution

Ma premire page PHP


Bonjour tous, de la part de HTML !

Salut tous, de la part de PHP !

98

<div class="wrapper"><h2>Ma premire page PHP</h2> <p>Bonjour tous, de la part de HTML ! </p> <p> Salut tous, <b>de la part de PHP</b> !</p> </div> </body> </html>

Nous constatons que le rle du moteur PHP sur le serveur s'est cantonn, sur cet exemple, inclure la chaine de caractres Salut tous, <b>de la part de PHP</b> ! dans la page HTML (reue par le navigateur), c'est--dire remplacer la variable par sa valeur. L'instruction echo (on peut utiliser aussi print) crit donc simplement son argument, entre guillements, dans la page HTML, mais en remplaant les noms de variables par leur valeur. (ceci dit on aurait pu crire directement le texte comme argument de linstruction echo sans passer par une variable intermdiaire :

Utilisation dun formulaire pour changer des donnes entre HTML et PHP le nom donn en HTML un lment de formulaire grce au paramtre NAME devient une variable PHP portant le mme nom, mais prcde du symbole $ (ce symbole distingue toujours les identificateurs de variables) Ainsi, chaque NAME="abc" dfinit automatiquement une variable $abc. Sa valeur PHP est gale au contenu du champs HTML, identifi par "NAME=abc" Par exemple, soit le simple formulaire :
<FORM ACTION="inscrire.php" > <INPUT TYPE="text" NAME="prenom" SIZE=10 VALUE="Jean"> <INPUT TYPE="submit" VALUE="Valider"> <FORM >

La validation du formulaire provoque le transfert des donnes du formulaire (nature, nom et valeur des lments) vers le programme PHP contenu dans la page appele inscrire.php . Celui-ci possde d'emble une variable $prenom dont la valeur est la chaine saisie la validation, ou "Jean" par dfaut. Interactivit entre HTML et PHP On distingue 2 faons de passer des valeurs issues d'un formulaire un script crit en PHP (ou un autre langage). Il s'agit de mthodes implmentes dans le protocole HTTP appeles GET et POST 1. mthode GET o Il s'agit du mode de transmission par dfaut . Les paramtres passs au moment de la validation sont ajouts l'URL du script appel. o Cette chaine s'crit ?nom1=valeur1&nom2=valeur2&... et sera rajoute ladresse de la page invoque comme argument de action Mthode GET Donnez votre prnom, puis validez :
<FORM> Donnez votre prnom, puis validez : <INPUT TYPE=text NAME=prenom> <INPUT TYPE=submit

99

Valider

Vous vous appelez

VALUE="Valider"> </FORM> <P> Vous vous appelez <?php echo "$prenom"; ?>

Commentaires
o

L'interprteur PHP a accs immdiat aux donnes des formulaires HTML, lorsque ceux-ci sont soumis, c'est--dire la validation par le bouton submit. La rgle est simple : Le nom de l'lment de formulaire devient une variable PHP, qui porte le mme nom, tout en tant prfixe par le symbole $ (ce qui caractrise toujours les variables PHP) Si on laisse le champ de saisie vide, la page est recharge, avec une URL laquelle s'est ajout ?nom=. On en dduit que laisser le champ vide, n'a pas provoqu d'affectation la variable PHP $nom, d'o l'affichage inchang. Si on a valid le nom "toto" dans le formulaire, la chaine ?nom=toto est ajoute l'URL de la prsente page , ce qui indique : 1. Il y a bien affectation de $nom la chaine saisie dans le champ nomm nom 2. L'URL de la page tant change, la page est recharge 3. L'instruction PHP incorpore dans le code HTML echo $nom; a t excute sur le serveur et se traduit par l'affichage observ 4. Pour bien comprendre que la validation de la saisie quivaut l'ajout de la chaine ?nom=.. dans l'URL, saisissez directement le nom dans l'URL. Qu'observez-vous ? Le mode de requte dcrit ci-dessus est le mode par dfaut, appel mthode GET. Les paramtres passs au moment de la validation sont ajouts sous forme d'une chaine ?nom1=valeur1&nom2=valeur2&... l'URL demande, qui se trouve tre la mme page par dfaut, si on n'en prcise pas d'autre.

2. La mthode POST
<FORM ACTION="php-formulaire.php" METHOD="POST"> Donnez votre prnom, puis validez : <INPUT TYPE=text NAME=prenom2> <INPUT TYPE=submit VALUE="Valider"> </FORM> <P> Vous vous appelez <?php echo "$prenom2"; ?>

Mthode POST Donnez votre prnom, puis validez :


Valider

Vous vous appelez

On sait qu'il y a cration automatique d'une variable PHP, pour chaque composant nomm (par NAME= ... ), mme si le composant n'a fait l'objet d'aucune saisie (champ "text"), ou d'aucune slection (boutons, cases, listes droulantes ..).

100

Dans ce cas, ces variables de champ sont dfinies, mais n'ont pas de valeur. On teste cette situation avec la fonction empty($var).qui alors renvoie TRUE. Sinon FALSE quand la variable $var est dfinie et possde une valeur. Pour savoir si une variable est dfinie, qu'elle ait reue une valeur ou non, on utilise isset($var). Elle renvoie TRUE si la variable $var est dfinie, FALSE sinon. Il est plus simple finalement d'intgrer le script de traitement du formulaire dans la page mme qui contient ce formulaire. (Auto-soumission) Naturellement, cette page doit avoir l'extension .php pour que le serveur HTTP fasse appel l'interprteur PHP. L'url passe dans le champ ACTION du formulaire doit donc tre celle de la page elle-mme. Affichage conditionnel d'un formulaire et de son traitement. On doit d'abord proposer le formulaire, puis lorsqu'il est soumis, ne pas le rafficher. Pour dcider dans quel cas o se trouve il suffit de tester l'existence d'une variable dans le script, qui attestera coup sr que la validation du formulaire a bien eu lieu. Le plus simple est de tester la variable correspondant au nom du bouton submit Voici un schma gnral de programme :
<? if (isset($valide)) { /* traitement du formulaire */ } else { ?> / * affichage du formulaire HTML si $valide = FALSE */ <FORM ACTION="<? echo $PHP_SELF ?>" METHOD="POST"> /* affichage des composants */ <INPUT TYPE="submit" NAME="valide" VALUE="Valider"> </FORM>

Exemple pratique
<? if (isset($valide)) { if (! empty($mot ) echo "Bonjour $mot <P>"; else echo "Vous n'avez pas donn votre prnom [:-( <P>" ; echo "Pour <A HREF=\"$PHP_SELF\"> afficher le formulaire</A>"; } else echo " <FORM ACTION=\"$PHP_SELF\" METHOD=\"POST\"> Quel est votre prnom ? <BR> <input type=\"text\" name=\"mot\" value=\"\"> <P> <INPUT TYPE=\"submit\" NAME=\"valide\" VALUE=\"Valider\"> <INPUT TYPE=\"reset\" NAME=\"reset\" VALUE=\"Annuler\"> </FORM> " ?>

Ce code affichera lcran :

Quel est votre prnom ?

101

Valider

Annuler

Si vous ne donnez pas de prnom et que vous validez vous obtiendrez : Vous n'avez pas donn votre prnom [:-(

Retour au formulaire
Si vous indiquez votre nom : Bonjour

Grard

Retour au formulaire
Voici un autre exemple utilisant une slection par bouton radio :
<form action="php-formulaire.php" method="post"> <h4>Quel est votre niveau en programmation ?</h4> <input type="radio" name="niveau" value="dbutant">dbutant <input type="radio" name="niveau" value="moyen" checked>moyen <input type="radio" name="niveau" value="expert">expert <P> <input type="submit" value="Valider"> </form> <?php echo "Etes vous sr(e) d'avoir le niveau $niveau ?" ?>

Qui saffichera comme suit aprs avoir choisi un niveau:

Quel est votre niveau en programmation ?


dbutant
Valider

moyen

expert

Etes vous sr(e) d'avoir le niveau

dbutant ?

Petit formulaire (formulaire.html et reponse.php)) L'interactivit de notre premier script est vraiment nulle. Voici un second exemple qui va faire dcouvrir l'aisance de PHP traiter les formulaires HTML. Il s'agit ici de prsenter l'utilisateur un petit formulaire HTML classique, qu'il devra remplir puis valider. A sa validation, les valeurs contenues dans ce formulaire sont envoyes au programme reponse.php situ sur le serveur (que ces valeurs aient t saisies par l'utilisateur ou bien proposes par dfaut et inchanges). Ce script PHP a t crit de faon "rpondre" (ventuellement aprs traitement, voire consultation d'une base de donnes). La rponse est forcment une page HTML expdie au navigateur de l'utilisateur. Voici le code de cette page HTML, nomme demande.html. Les valeurs du questionnaire seront traites la validation par le script reponse.php . 102

Code HTML de formulaire.html


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Document sans nom</title> </head> <body> <FORM ACTION="reponse.php" METHOD="POST"> <TABLE BORDER=0><TR> <TD>Nom</TD><TD><INPUT TYPE="text" NAME="nom" SIZE=20 value=""></TD> </TR><TR> <TD>Prnom</TD><TD><INPUT TYPE="text" NAME="prenom" SIZE=20 value=""></TD> </TR><TR> <TD>Age</TD><TD><INPUT TYPE="text" NAME="age" SIZE=5 value="25"></TD> </TR><TR> <TD>Sexe</TD><TD> <INPUT TYPE="radio" NAME="sexe" VALUE="Madame" checked > fminin <INPUT TYPE="radio" NAME="sexe" VALUE="Monsieur" > masculin</TD> </TR><TR> <TD>Profession</TD><TD> <input type="radio" checked name="profession" VALUE="professeur"> professeur <input type="radio" name="profession" VALUE="formateur"> formateur</TD> </TR></TABLE> <P> <INPUT TYPE="submit" VALUE="Valider"> <INPUT TYPE="reset" VALUE="Effacer"> </FORM> </body> </html>

Excution

Nom Prnom Age Sexe


25

fminin masculin

Profession
Valider

enseignant formateur
Effacer

et voici le code du script reponse.php et le rsultat de son excution Code PHP de reponse.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Rponse au formulaire</title> <link href="php.css" rel="stylesheet" type="text/css">

Excution

Rponse au questionnaire
Bonjour monsieur xxx xxx Vous tes : enseignant et vous dclarez avoir 103

</head> <body> <div align="center"><h2>Rponse au questionnaire</h2></div> <? echo "Bonjour $titre $nom $prenom <br>" ; echo "Vous tes : $profession<br>"; echo "et vous dclarez avoir actuellement $age ans"; ?> </body> </html>

actuellement 40 ans

Envoi dun email (remplace efficacement lutilisation du mailto) (mail.php) Il s'agit de faire envoyer des messages lors de l'excution de scripts PHP. Le message peut tre envoy automatiquement en raction un vnement rencontr lors de l'excution, par exemple une erreur intercepte, une mise jour affectue par un utilisateur dans une base de donnes, .. Ou bien, ce qui est l'exemple trait ici, le message peut tre envoy par un utilisateur lors de la validation d'un formulaire qu'il aura dment renseign. Si l'envoi d'un message textuel ne pose pas de problme majeur (si le paramtrage du PHP le permet bien sr !), en revanche l'expdition de pices jointes est bien plus dlicate. Cela sera trait dans une autre page. L'envoi du message quel qu'il soit, sera effectu par la fonction mail() (rfrence : http://www.php.net/manual/fr/function.mail.php) Elle s'efforce de poster un message une liste de destinataires et renvoie un boolen de compte-rendu. Syntaxe mail ( $liste, $sujet, $message, $entete) o : $destinataire : liste de destinaires du message $sujet : sujet $message : le corps du message $entete : l'adresse de l'expditeur, et ventuellement l'adresse reply-to. par exemple : "From: $adresse_expediteur\r\nreplyTo: $adresse_expediteur" Problmes rencontrs Attention une valeur TRUE renvoye indique seulement que la fonction mail() a correctement transmis le message au systme sous-jacent, mais n'est pas un indice de bon acheminement, ce n'est ni un reu, ni un accusion de rception ! (rp. http://www.php.net/manual/fr/ref.mail.php)

Exemple :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> 104

<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Test email</title> <link href="php.css" rel="stylesheet" type="text/css"> </head> <body> <div class="wrapper"> <h1>Mini-Mailer</h1> <p>&nbsp;</p> <div class="boite"> <form action="<?php echo $PHP_SELF; ?>" method="post"> <p>Votre adresse email ? <input type="text" name="Mail"> </p> <p> Votre message: </p> <p> <textarea name="message" cols="80" rows="10" wrap="soft"> </textarea> </p> <p> <input type="submit" value="Envoyer le message"> </p> </form> </div></br> <?php if (isset($_POST['Mail']) && $_POST['Mail'] != "") { if(mail("gerard.barmarin@skynet.be", "Vous avez du courrier !", "$message", "From: $Mail")) { echo "</br><p>Merci ! Votre message a &eacute;t&eacute; transf&eacute;r&eacute; !</p>\n"; } else { echo "</br><p>Malheureusement il y a eu un probl&egrave;me lors de l'envoi !</p>\n"; } } ?> </div> </body> </html> Autre version plus complte : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Envoi d'email avec PHP</title> <link href="php.css" rel="stylesheet" type="text/css"> </head> <body> <div class="wrapper"> <?PHP $envoi=$_POST['envoi']; $destinataire=$_POST['destinataire']; $expediteur=$_POST['expediteur']; $sujet=$_POST['sujet']; $message=$_POST['message']; 105

if (! isset($envoi)) { echo " <H3 align='center'>Envoi de messages par PHP</H1> <form method='post' action='mail.php'> <div class='email' border=0 width=80% cellspacing=3 cellpadding=3 bgcolor='#ebebeb' align='center'><tr> <p> Destinataire: <input type=text name='destinataire' size=30 value=''></p> <p> Expditeur: <input type=text name='expediteur' size=30 value=''></p> <p> Sujet: <input type=text name='sujet' value=''></p> <p> Texte du message: </p> <p><textarea rows=10 cols=50 name='message' value='Voici mon message\n'></textarea></p> <p>Validation : <input type='submit' name='envoi' value='Envoyer'></p> </div> </form> "; } else { /* pour neutraliser les \ ajouts la transmission devant les ' et les " */ $message=stripslashes($message); $sujet=stripslashes($sujet); $entete="From: $expediteur\r\nReply-To: $expediteur\r\nX-Mailer: PHP/"; /* expdition et compte-rendu */ $ok=mail($destinataire, $sujet,$message,$entete); if ($ok) echo "Envoi russi du message $destinataire !"; else echo "L'envoi a chou .."; } ?> </div> </body> </html>

Affichage du contenu de la page partir dun fichier texte (affichage.php) PHP permet de composer une page HTML partir de plusieurs fichiers. On peut ainsi dfinir une barre de menu et linclure automatiquement dans tous les fichiers. Nous allons pour cela utiliser linstruction include : include ("nom_de_fichier.extension") Cette instruction ouvre le fichier dont le nom figure en argument et intgre son contenu dans la page HTML lendroit o se trouve linstruction, sans aucune transformation. Si le contenu contient des tags HTML, ils seront tout simplement affich dans le code HTML avant son envoi au navigateur. Exemple :

106

Ce script inclut dans la page le contenu du fichier texte.txt dans la page (Ce fichier que vous aurez cr avec Notepad doit tre bien sr transfrer sur le serveur avec votre logiciel FTP favori (Filezilla). <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Affichage du contenu d'un fichier txt en PHP</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link href="php.css" rel="stylesheet" type="text/css"> </head> <body> <div class="wrapper"> <h1 align="center"><strong><font color="#330066" face="Arial, Helvetica, sans-serif">Page test modification du contenu d'un fichier txt nomm&eacute; contact.txt </font></strong></h1> <p> <?php include("texte.txt"); ?> </p> <div class="contenu"><a href="passadmin.php"><font color="#3300FF" face="Arial, Helvetica, sans-serif"><strong>Acc&egrave;s &agrave; la page d'administration </strong></font></a> </div> </div> </body> </html> Autre exemple, inclusion dun menu, dun footer et dun lien vers une feuille de style en php (menu.php): <HTML> <HEAD> <TITLE>Dmo Include </TITLE> <?php include("style.txt"); ?> </HEAD> <BODY> <H1> Dmo Include </H1> <?php /* Menu */ include("menu.txt"); ?> <p> Ici vient le contenu de chaque page</p> <p>Lorem ipsum</p> <?php /* A footer */ include("footer.txt"); ?> </BODY> </HTML> Page administration protge par un mot de passe ( passadmin.php, password.php et script.php) La page passadmin permet de demander un login et un password et de les transfrez password.php qui permettra la mise jour du contenu du fichier texte ; la page script.php se charge denregistrer les modification dans le fichier texte.txt 107

Passadmin.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Entre des login et mot de passe</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link href="php.css" rel="stylesheet" type="text/css"> </head> <body> <div class="wrapper"><h1>Authentification</h1> <div class="formulaire"> <form method="POST" action="password.php"> <div class="zonechamp"><input class="champ" type="text" name="user" size="10">User:</div> <div class="zonechamp"><input class="champ2" type="password" name="password" size="10">Password:</div> <div class="zonechamp"><input class="champ" type="submit" value="Envoyer" name="prive"></div> </form></div> </div> </body> </html> Password.php <? // vrification du mot de passe if ($_POST['user']=="ifbilou" && $_POST['password']=="tupasses") { $valide="oui"; } else { $valide="non"; } ?> <html> <head> <title>Page prive</title> <link href="php.css" rel="stylesheet" type="text/css"> </head> <body> <div class="wrapper"> <? if ($valide=="oui") { ?> <h1>Page d'administration</h1> <p>Texte initial de la page : </p> <br> <?php include('contact.txt'); ?> <br> <br> <p>Nouveau texte:</strong></p> 108

<br> <form method="post" action="script.php"> <textarea name="txt" cols="80" rows="20"> <?php include('contact.txt'); ?> </textarea> <br><br> <input type="submit" name="cmdModifier" value="Modifiertexte" /> </form> <br> <br> <br>

<br> <? } else { ?> <br> <br> <div class="erreur"> <h1 >User et/ou Password incorrect</h1> <p ><a href="passadmin.php">recommencer</a></p> </div> <? } ?> </div> </body> </html> Script.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Document sans titre</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link href="php.css" rel="stylesheet" type="text/css"> </head> <body> <div class="wrapper"> <?php // on regarde si on a cliquer sur le bouton if ( isset($_POST['cmdModifier']) ) { // ouverture en mode criture, en crasant l'ancien contenu... //$fp = fopen('contact.txt','wt'); $fp = fopen ('contact.txt','wt'); // on crit le fichiers... // $_POST['txt'] contient le champ TEXTAREA du formulaire // stripslashe() enlve les /' superflues... fwrite( $fp, stripslashes( $_POST['txt'] ) ); // on ferme le fichier fclose($fp); } 109

?> <h1>Bravo! Texte modifi</font></strong></h1> <p>Voici le nouveau texte:</p><br> <br> <?php include('contact.txt'); ?> <br> <br> <a href="passadmin.php" target="_self">Nouvelle modification</a><br> <br> <a href="affichage.php" target="_self">Retour au site</a><br> </div> </body> </html>

110

Goodies

Installer une webcam sur votre site :

WebcamFirst 3.1.8
WebcamFirst est un petit utilitaire qui va vite se rvler indispensable aux webmasters en herbe, heureux possesseurs d'une Webcam. En effet, contrairement aux logiciels livrs avec les Webcam, WebcamFirst est d'une simplicit enfantine. Vous pouvez ainsi facilement afficher sur une page web, un intervalle de temps donn, une capture de votre Webcam. Pratique pour savoir ce qui se passe chez soi ou pour montrer la superbe vue de votre balcon au monde entier... Il vous suffit d'indiquer l'adresse du serveur, votre login, votre mot de passe et le tour est jou...

A propos de ce logiciel
Version : 3.1.8 Taille du fichier : 3,30 Mo Prix : Gratuit Langue : Franais Editeur : Andr Buhart Systme : Windows 98/Me/2000/XP Note : Tlcharge r WebcamFi rst 3.1.8

111

Xinha, Un diteur HTML open source tout fait inclure dans votre interface administrateur
http://xinha.python-hosting.com/wiki/NewbieGuideFrance Download des fichiers : http://xinha.python-hosting.com/wiki/DownloadsPage Commencer Vous devez tlcharger les fichiers de Xinha. La dernire release stable est recommande, car bien que la version nightly contient certainement des amliorations, elle peut tout aussi bien tre temporairement casse. Ce qui rendrait l'initiation bien plus difficile ! *** *** Normallement vous devriez utiliser la dernire release stable, mais au moment de l'criture de ce document, vous devez utiliser la version "nightly" pour pouvoir faire fonctionner Xinha Installer les fichiers Copier le contenu du tlchargement sur votre serveur web dans un rpertoire comme par exemple "xinha/". Cela signifie que votre rpertoire "xinha" contient les rpertoires "examples", "images", "lang", "plugins", "popups", "skins" et quelques fichiers. Nous vous recommandons de conserver le rpertoire d'exemples puisqu'il sera une excellent rfrence si vous voulez configurer Xinha plus tard. Les exemples pourront ds lors tre excuts sur votre serveur web l'adresse "xinha/examples/full_examples.html". Code de la page Maintenant vous avez besoin du code suivant sur votre page, pour transformer un <textarea> existant en un X-Area WYSIWYG. En tout premier lieu, ajouter ce code quelquepart dans votre page (si possible dans la section <head></head> de votre document HTML) :
<script type="text/javascript"> _editor_url = "/xinha/" // (de prfrence absolue) URL (incluant le slash de fin) o Xinha est install _editor_lang = "fr"; dans l'diteur. </script> <script type="text/javascript" src="/xinha/XinhaCore.js"></script> // Et la langue que nous voulons utiliser

Si vous utilisez un rpertoire diffrent, assurez-vous de d'accorder l'url de XinhaCore?.js avec ce rpertoire d'installation. Vous aurez galement besoin d'un peu de code de configuration inclus galement sur la page - il y a deux manire de le faire : 1) copier le code de configuration ans un fichier appel "my_config.js" puis inclure ce fichier en utilisant
<script type="text/javascript" src="/xinha/my_config.js"></script>

Cela vous permettra d'utiliser plusieurs X-Areas sur diffrentes pages en leur faisant tous partager la mme configuration. 2) copier le code suivant dans votre page - cela est ncessaire sur chaque page o vous dsirez avec un diteur, et vous permettra de les configurer individuellement. Vous aurez 112

besoin d'encadrer le code suivant par les tags <script type="text/javascript"> </script> si vous utilisez cette deuxime option.
xinha_editors = null; xinha_init xinha_config = null; = null;

xinha_plugins = null;

// Contient les names des textareas que nous transformons en diteurs Xinha xinha_init = xinha_init ? xinha_init : function() { /** ETAPE 1 *************************************************************** * Tout d'abord, quels sont les plugins utiliser avec les diteurs sur * cette page. Liste tous les plugins ncessaires, mme si tous les diteurs * n'utilisent pas tous les plugins. * * La liste des plugins ci-dessous est un bon point de dpart, mais si vous * prfrez commencer avec un diteur plus simple vous pouvez utiliser ceci * * xinha_plugins = xinha_plugins ? xinha_plugins : [ ]; * * ce qui ne chargera aucun plugin supplmentaire.

*********************************************************************** */

xinha_plugins = xinha_plugins ? xinha_plugins : [ 'CharacterMap', 'ContextMenu', 'FullScreen',

113

'ListType', 'SpellChecker', 'Stylist', 'SuperClean', 'TableOperations' ]; // CETTE TOUCHE DE JAVASCRIPT CHARGE LES PLUGINS, NE PAS TOUCHER :) if(!Xinha.loadPlugins(xinha_plugins, xinha_init)) return;

/** ETAPE 2 *************************************************************** * Maintenant, quels sont les noms (identifiants) des textareas * transformer en diteurs ?

*********************************************************************** */

xinha_editors = xinha_editors ? xinha_editors : [ 'myTextArea', 'anotherOne' ];

/** ETAPE 3 *************************************************************** * Cration d'une configuration par dfaut utilise par tous les diteurs. * Si vous voulez configurer certains diteurs diffrement, cela pourra * tre fait en tape 5. * * Si vous voulez changer la configuration par dfaut vous devez faire * quelque chose comme ceci :

114

* * * * * xinha_config = new Xinha.Config(); xinha_config.width = '640px';

xinha_config.height = '420px';

*********************************************************************** **/

xinha_config = xinha_config ? xinha_config() : new Xinha.Config();

/** ETAPE 4 *************************************************************** * Cration des diteurs pour les textareas. * * Vous pouvez le faire de deux manires, soit * * xinha_editors = Xinha.makeEditors(xinha_editors, xinha_config, xinha_plugins); * * si vous voulez tous les diteurs avec les mmes plugins, SOIT : * * xinha_editors = Xinha.makeEditors(xinha_editors, xinha_config); * xinha_editors['myTextArea'].registerPlugins(['Stylist','FullScreen']); * xinha_editors['anotherOne'].registerPlugins(['CSS','SuperClean']); * * si vous voulez utiliser un jeu diffrent de plugins par diteurs.

*********************************************************************** */

115

xinha_editors xinha_plugins);

= Xinha.makeEditors(xinha_editors, xinha_config,

/** ETAPE 5 *************************************************************** * Si vous voulez changer les variables de configuration de n'importe lequel * des diteurs, c'est le moment de faire. Vous pouvez par exemple changer * la largeur et la hauteur du textarea myTextArea en faisant : * * * * xinha_editors.myTextArea.config.width = '640px';

xinha_editors.myTextArea.config.height = '480px';

*********************************************************************** */

/** ETAPE 6 *************************************************************** * Fin et "dmarrage" des diteurs. C'est ici que les textareas se * transforment en diteurs Xinha.

*********************************************************************** */

Xinha.startEditors(xinha_editors); }

window.onload = xinha_init;

Plus de code Vous devez vous assurer que le tag du textarea a transformer possde un bien un paramtre "id"

116

<textarea id="newbiearea1" name="newbiearea1" rows="10" cols="50" style="width: 100%"></textarea>

il peut tre le mme que le "name" - assurez-vous juste que cet identifiant est unique sur la page ! Maintenant, dans le code copi dans le fichier "my_config.js" (ou dans le <head></head> si vous avez utilis cette mthode), vous devez diter l'tape 2 qui liste les diteurs transformer. Dans cet example, deux textareas sont lists : 'myTextArea' et 'anotherOne' - vous devez changer 'myTextArea' en l'ID dfini pour votre textarea - dans ce nouvel exemple, nous l'avons appel 'newbiearea1'. Vous devez galement supprimer la rfrence 'anotherOne' puisque nous ne transformons que un seul textarea ici ! (attention, ici les valeurs sont spares par des virgules MAIS il n'y a pas de virgule aprs la dernire valeur), votre nouveau code devrait ressembler ceci :
/** ETAPE 2 *************************************************************** * Maintenant, quels sont les noms (identifiants) des textareas * transformer en diteurs ?

*********************************************************************** */

xinha_editors = xinha_editors ? xinha_editors : [ 'newbiearea1' ];

Et voil ! Votre X-Area apparait maintenant sur la page quand celle-ci a fini de se charger (pas besoin de toucher la proprit onload du tag <body> puisque window.onload = xinha_init; en prend soin) Plugin intressant pour charger avec Xinha des fichiers images ou non : http://xinha.python-hosting.com/wiki/Plugins/ExtendedFileManager

117

OS Commerce Installer osCommerce


Pas pas, les tapes pour mettre en place son propre site e-commerce complet au moyen d'un script PHP Open-source. Source : http://developpeur.journaldunet.com/tutoriel/php/050118-php-installer-oscommerce.shtml

Plutt que de rinventer la roue, le monde de l'Open-Source permet de disposer de scripts de qualit qui prennent en charge la plupart des interactions ncessaires au bon droulement d'une transaction marchande sur Internet : prsentation, commande, facturation, suivi osCommerce est de ces applications qui permettent de monter un site fonctionnel en quelque clics, et il y en a d'autres comme ZenCart ou MyMarket...
Installation

Un autre intrt de l'Open-Source est de disposer de traductions tout aussi gratuites et bien faites que le produit lui-mme. En l'occurrence, osCommerce dispose d'une communaut d'utilisateurs active, et qui fournissent directement une version francise d'osCommerce. Tlchargez-la et installez-la sur votre serveur (ou en local), puis lancez le script d'installation en allant dans /catalog/. Un message d'erreur surgira ds votre lance du script depuis /catalog/ : il vous annonce que vous devez avoir autoris l'utilisation de variables globales. Vous devez le faire en modifiant la ligne register_globals = off en register_globals = on dans votre fichier php.ini, puis en relancant votre serveur Apache. Pour ceux qui sont en hbergement partag, et n'ont donc pas accs au fichier php.ini de leur hbergeur, il est possible d'activer les variables globales uniquement pour votre boutique, au moins du fichier .htaccess (qui existe dj dans la distribution de osCommerce). Ajoutez simplement les lignes suivantes ce fichier :
php_flag register_globals 1

Pour ceux qui n'ont pas non plus le droit d'utiliser .htaccess il leur faudra trouver une autre solution logicielle
Configuration

Ceci fait, vous entrez dans l'interface d'installation d'osCommerce. Sous une courte prsentation du produit se trouvent deux boutons : Install et Upgrade. Etant donn que nous faisons une nouvelle installation, cliquons sur Install. L'cran suivant prsente deux choix. Le premier demande de mettre en place l'ensemble des tables de la base de donnes, ce qui est ncessaire pour une premire installation. Le second choix fera une sauvegarde de votre configuration. Il est prfrable de laisser ces deux cases coches Vient ensuite la configuration de l'accs la base MySQL. Le remplissage se fait selon les informations donnes par votre hbergeur. Le serveur sera le plus souvent 127.0.0.1. Pour une installation sous EasyPHP, l'utilisation sera "root" et le mot de passe reste vide. Vous devez utiliser une base dj cre, et si possible vide car le nom des tables installes par cette version de osCommerce ne comportent pas de prfixe (type "osc_") permettant de les diffrencier des autres tables. Pour le stockage des sessions, le script vous conseille, en cas d'hbergement collectif, de les stocker dans la base. Faites en fonction de votre cas L'cran suivant devrait vous signifier la russite de l'opration. Continuez. La base de donnes est importe. Celle-ci remplit votre boutique de quelques catgories et produits, ce qui vous permettra de vous familiariser avec la modification et la suppression d'lments

118

Vous arrivez sur l'cran de configuration Web. Modifiez les champs qui vous semblent ne pas correspondre la ralit, et continuez. Validez quelques crans, et l'installateur vous prsentera une confirmation finale d'installation. Cliquez sur le bouton Catalogue pour accder votre boutique comme le ferait un client. Vous devriez voir deux messages d'erreurs s'afficher en rouge au haut de l'cran. Pour qu'elles ne s'affichent plus, il vous faut renommer ou effacer le dossier install, et rendre le fichier /includes/configure.php inaccessible en criture (ou, accessible en lecture seule).
Personnalisation

La boutique est maintenant en place. Comme vous pouvez le voir, les produit prsents ne sont pas forcment ceux que vous comptez vendre, et les textes affichs indiquent qu'il reste du travail faire. Allez dans la partie administration (/admin/) pour arranger cela. Cliquez sur Catalogue pour accder aux catgories de produits : nous allons en crer une nouvelle. Cliquez sur Nouvelle catgorie, entrez simplement son nom, validez. C'est tout. Crer une sous-catgorie n'est gure plus compliqu : toujours dans Catalogue, cliquez sur le texte de la catgorie que vous venez de cre, puis cliquez sur Nouvelle catgorie, et suivez le mme cheminement. Ajouter un produit prend un peu plus de temps : entrez dans la catgorie (ou la sous-catgorie) vise, et cliquez sur Nouveau produit. La page qui s'affiche demande plus d'informations que pour une simple catgorie, mais rien d'insurmontable. Il vous est possible d'indiquer une catgorie spciale, le fabriquant (qui peut tre l'diteur d'un livre ou le constructeur d'un scooter). Quelques fabricants sont dj prsents, mais vous pouvez et devez, pour aider le visiteur dans sa recherche, en ajouter d'autres. Cela se fait dans Catalogue/Fabricants, de la mme manire que se cr une catgorie. Idalement vous devriez avoir une image pour chaque produit, osCommerce affichant sinon une image vide Il est aussi important de pouvoir tre pay, et donc de mettre sa boutique en contact avec sa banque ( moins que vous ne souhaitiez faire vos rglements par chque). La communaut osCommerce franaise a pour cela compil une liste des modules bancaires disponibles. Tlchargez celui qui vous intresse, dcompressez-le dans un dossier temporaire, lisez sa documentation et placez les fichiers aux endroits adquats. Une fois les fichiers installs, il vous faut activer le module, au travers du panneau d'administration, dans le menu Modules/Paiement. Suivez les instructions affiches, et le module devrait tre activ sans problme. Il vous reste ensuite personnaliser votre boutique comme bon vous semble
Xavier Borderie, JDN Dveloppeurs

119

Dossier : les types de distributions logicielles


(Article crit par David Brunet et extrait d'Obligement 45 - mis jour en aot 2005) Faut-il dire logiciel libre ou open source ? Quelle diffrence y a-t-il entre un shareware et un freeware ? Quelle est la manire la plus avantageuse, la fois pour le dveloppeur et l'utilisateur, pour distribuer un logiciel ? Nous tenterons, dans cet article, de nous frayer un chemin dans cette jungle des dnominations sur la distribution des logiciels.

Distribuer un logiciel
La cration d'un programme s'accompagne gnralement de sa diffusion (mais pas toujours, comme nous le verrons plus bas) et il se pose donc la question du type de distribution. Si pour une entreprise commerciale, le choix de diffusion est assez restreint (distribution commerciale avec logiciel propritaire), ce n'est pas le cas pour les programmeurs du dimanche qui n'ont pas les mmes objectifs commerciaux que les entreprises : ils se tourneront plus volontiers vers le shareware voire le domaine public. Entre ces deux extrmes, il existe aussi des variantes, notamment le logiciel libre qui monte en puissance depuis une dizaine d'annes grce l'idologie GNU/Linux.

Les types de distributions


Voici les grandes classes de distributions logicielles. Logiciel propritaire : C'est un logiciel, trs souvent payant, dont le code source n'est pas disponible pour l'utilisateur. On dit "propritaire" car il relve de la proprit intellectuelle de quelqu'un qui ne souhaite pas s'en sparer ou la mettre dans le domaine public. Les logiciels propritaires sont l'oppos des logiciels libres : l'utilisateur ne pourra ni adapter le programme son utilisation personnelle, ni corriger les bogues. Bundle : C'est un groupe de logiciels (propritaires ou gratuits) ralis par un diteur, un dveloppeur ou un revendeur. Le but d'un bundle est souvent promotionnel. Un revendeur peut, par exemple, regrouper des logiciels qui ne se vendent pas bien afin d'couler son stock et de donner une seconde vie ces logiciels au sein d'un bundle dont le prix sera trs comptitif. On rencontre aussi des bundles thmatiques : des logiciels sur un thme prcis sont runis afin que l'utilisateur final ait tout ce qu'il faut pour s'en sortir (ex : la compilation Net Connect de chez Active Technologies comprend tous les logiciels ncessaires pour utiliser l'internet sur Amiga). Dans le cas de gros bundles (le SuperBundle de Genesi), on a affaire la fois une manoeuvre promotionnelle et aussi une volont de mettre disposition du client un maximum de logiciels. Distribution : C'est un ensemble de logiciels (mais pas seulement) formant tout ce dont on a besoin pour utiliser une application, notamment un systme d'exploitation. Trs utilises dans le monde Linux (Debian, Red Hat, Slackware,...), ces distributions n'ont pas de rgles strictes : elles peuvent tre gratuites ou payantes (mais le prix reste tout fait abordable), contenir des logiciels libres ou non, et contenir des logiciels complets ou non. Logiciel du domaine public : 120

Il s'agit d'un programme qui n'a pas de propritaire : le ou les auteur(s) originel(s) ont dcid de ne pas s'approprier la proprit intellectuelle de leur logiciel (pour diverses raisons : l'idalisme de l'auteur, la mauvaise qualit du produit, le faible nombre de clients potentiels, un constructeur qui veut inonder un march,...). Le code source de ce type de programme n'est pas ncessairement disponible. Tout le monde peut l'utiliser sans payer de licence, les logiciels du domaine public sont donc tous gratuits et distrinuable librement. Toute entreprise peut aussi s'accaparer ce type de programme pour en faire la base d'un logiciel propritaire. Inutile de prciser que les programmes du domaine public sont extrmement nombreux :-). Logiciel libre : Terme synonyme : logiciel open source. C'est un logiciel dont le code source est disponible pour tous les utilisateurs, il s'oppose donc au logiciel propritaire. Il n'est pas forcment gratuit mais peut tre modifi volont et mme redistribu sous sa forme modifie condition que les codes sources d'origine accompagnent cette version. Le logiciel peut appartenir ses auteurs, contrairement aux logiciels du domaine public, grce un systme de copyright. En rsum, un logiciel libre donne la libert ses utilisateurs d'excuter, de copier, de distribuer, d'tudier, de modifier et d'amliorer le logiciel. Les exemples les plus connus de logiciels libres sont Linux, Apache, Perl, OpenOffice, Mozilla, PHP et MySQL. Licence GPL : La licence GPL (GNU General Public License) est une licence de logiciel libre particulire : C'est une licence de "logiciel" car c'est le programmeur du logiciel qui dfinit un cadre d'utilisation. "Libre" car le cadre d'utilisation dfini par cette licence est de s'assurer qu'un certain nombre de liberts seront respectes sur le logiciel sous licence GPL (ou sur tout logiciel en drivant). Les liberts sont la libert d'excuter le logiciel, de le modifier, de le redistribuer (gratuitement ou contre rmunration), et de distribuer des versions modifies. La GPL ne donne pas l'utilisateur des droits de redistribution sans limite. Le droit de redistribuer est garanti seulement si l'utilisateur inclut dans le code source une modification. En outre, les copies distribues, incluant les modifications, doivent tre aussi sous les termes de la GPL. Cette condition est connue sous le nom de copyleft (gauche d'auteur), et il obtient son origine lgale du fait que le programme est copyright. Puisqu'il est copyright, l'utilisateur n'a aucun droit de le modifier ou de le redistribuer, sauf sous les termes du copyleft. On est oblig d'adhrer la GPL si on souhaite exercer des droits normalement limits (voire interdits) par le copyright, comme la redistribution. Ainsi, si on distribue des copies du travail sans respecter les termes de la GPL (en gardant le code source secret par exemple), on peut tre poursuivi par l'auteur original en vertu du copyright. Licence BSD : La licence BSD est une licence libre, qui diffre de la licence GNU GPL, car elle n'est pas contaminante : toute personne peut rutiliser le composant sans aucune restriction, qu'il soit intgr dans une application open source, gratuite mais non libre ou mme commerciale. La version originale de la licence BSD incluait une clause de publicit particulirement contraignante qui obligeait la mention du copyright dans toute publicit ou document fourni avec le logiciel, ce qui peut provoquer quelques problmes en cas d'utilisation d'un grand nombre de 121

composants sous cette licence. Sous la pression de la Fondation pour le logiciel libre, la nouvelle version de cette licence exclut cette clause de publicit. Abandonware : Les abandonwares sont des vieux logiciels n'ayant plus aucun intrt commercial (aux yeux de leurs propritaires) et qui sont abandonns la communaut. A force d'tre harceles, certaines socits d'dition "lchent" leurs vieux logiciels ; d'autres diteurs, plus lucides, le font d'euxmmes. Dans ce cas, les logiciels sont disponibles sur leur site internet, et dans le cas contraire, ce sont des sites web spcialiss dans l'abandonware qui s'en chargent. A noter que certains d'entre eux sont la limite du piratage car ils n'ont pas demand l'avis pralable des auteurs. Il y a une autre sorte d'abandonwares : ce sont les logiciels non-finis qui sont offerts la communaut. Ici, le code source est livr avec le programme. Les auteurs esprent, de ce fait, que leur logiciel soit un jour termin par quelqu'un d'autre. S'il arrivait que le logiciel soit achev, il ne serait bien sr plus qualifi d'abandonware. Il prendrait alors n'importe quelle autre dnomination (gnralement freeware, open source ou domaine public), suivant les volonts des auteurs. On peut citer comme abandonware le jeu Transport Tycoon Deluxe de Microprose disponible sur le site www.abandonware-france.org/. Freeware : C'est un logiciel en version complte distribu gratuitement par son/ses auteur(s). Le copyright demeure la proprit des auteurs et eux seuls peuvent autoriser ou non la distribution de leur produit par d'autres circuits de distribution. Les freewares sont souvent crs par des jeunes dveloppeurs (qui ne franchissent pas le cap de la commercialisation pour diverses raisons) mais aussi par des entreprises qui veulent inonder un march (la socit Netscape avec son Navigator, suivie par Microsoft et son Internet Explorer voulaient s'accaparer le march de navigateurs web avec cette technique de distribution). Les freewares sont disponibles sur Internet et/ou via des distributeurs comme Fish ou Aminet. Pour ces derniers, on ne payait que le support (disquette, cdrom) ou divers frais mais en aucun cas les logiciels eux-mmes. Enfin, leur code source n'est, gnralement, pas accessible, ce qui est l'une des petites diffrences qu'ils ont avec les logiciels du DP. Shareware : Termes synonymes : contributiel, partagiciel, logiciel contributif, distributiel. C'est un logiciel propritaire particulier, puisque, aprs une priode d'utilisation gratuite, l'utilisateur doit rtribuer le concepteur du programme. Gnralement, cette contribution est modeste car le modle de distribution est direct. En effet, il n'existe pas d'intermdiaire entre l'acheteur et le concepteur (vente par Internet ou par envoi postal direct). Ceci permet de diminuer les prix par rapport un logiciel identique qui aurait t vendu travers un circuit de distribution classique. La participation financire un shareware permet d'avoir une version complte du logiciel et non limite dans le temps. Cela ouvre aussi parfois le droit des mises jour gratuites. Exemple : le jeu PairsNG de Christian Kimna ncessite un enregistrement de 10 euros pour avoir la version complte. Logiciel promotionnel : C'est un programme en version complte distribu gnralement avec un autre produit. Il est 122

destin faire connatre l'entreprise ou la personne qui a dvelopp ce programme. On peut acqurir ces logiciels via les circuits de distribution habituels ou directement chez l'entreprise qui a fait la publicit. Leur code source n'est pas disponible. Exemples : Pepsi All Over The World dvelopp par Ego Soft (1991), Bifi 2 dvelopp par Art Department (1994), ou Player Manager version Paris Saint Germain dvelopp par Anco. Caritaticiel : Terme synonyme : charityware, careware. C'est une classe de logiciels trs rare. Cela dcrit des programmes dont on rgle la licence par un don une oeuvre ou association caritative. Soit le nom de l'association est mentionn dans le logiciel, soit il n'y a rien de prcis et c'est l'utilisateur de faire un don l'oeuvre caritative qu'il souhaite. Exemple : l'diteur de texte VIM sous Linux. Adware : C'est un logiciel propritaire qui vous est fourni gratuitement, mais qui contient des publicits. Ce produit est aussi disponible dans une version qui ne contient pas de publicit, mais il faudra s'en acquitter financirement parlant. Ce type de programme se rencontre surtout sur Internet. Mailware : Le mailware est un programme gratuit avec parfois des fonctions brides. On demande aux utilisateurs de mailwares d'envoyer un courrier lectronique vers l'auteur afin que celui-ci expdie : la cl qui dbridera le logiciel, des informations supplmentaires, d'autres de ses logiciels ou diverses choses. Cela a l'avantage, pour l'auteur, de savoir combien de personnes, environ, utilisent son logiciel. Exemple : ViruZ III, Detris,... Giftware : Termes synonymes : cadeaugiciel, donationware. C'est une classe de logiciels se rapprochant du shareware et du freeware. Le logiciel est complet et gratuit mais l'utilisateur est invit, s'il le veut bien, faire une donation l'auteur. Les donations ("gift" en Anglais signifie "cadeau") peuvent tre de toute ordre : argent, objet, service, logiciel, etc. Exemple : le jeu Brutal Tenia ou l'utilitaire Magic Menu. Par extension, on peut dfinir un nombre quasiment infini de giftwares particuliers, il suffit d'ajouter le suffixe "ware" aux cadeaux/donations que l'ont souhaite : chocoware (pour avoir du chocolat), cardware (carte postale), tchoutchouware (locomotive miniature), candyware (bonbons), etc. Cardware : Terme synonyme : postcardware. C'est un giftware particulier. Il s'agit d'un logiciel distribu gratuitement mais l'utilisateur doit envoyer une carte postale l'auteur. Comme pour les autres giftwares, cela permet l'auteur de voir, peu prs, combien de personnes utilisent son logiciel. Et cela lui fait aussi une belle collection de cartes postales du monde entier :-). Exemple : XBase, WBStartupPlus. 123

Crippleware : Ce sont des logiciels distribus gratuitement mais dans une version bride et/ou limite dans le temps. Il faut donc payer sa licence pour en avoir toutes les fonctionnalits. On recevra ainsi une mise jour du programme de la part de l'auteur. Beaucoup de sharewares sont des cripplewares. Dongleware : Terme synonyme : logiciel cl. Le dongleware est gratuit mais pour bnficier de toutes ses fonctions, il faut acheter son dongle. Ce dernier est un petit priphrique qui se branche sur l'ordinateur (port srie, port joystick,...) et qui dbridera le logiciel. Evidemment, le code source d'un dongleware n'est pas disponible. C'est l'une des meilleures solutions contre le piratage de logiciels. Guiltware : Il s'agit d'un logiciel gratuit, parfois mme livr avec son code source, qui vous donne honte de l'utiliser si vous ne payez pas sa licence d'utilisation. Pour cela, l'auteur mentionne trs clairement dans sa doc combien de temps il lui a fallu pour concevoir son produit et le nombre hallucinant de problmes auquel il a t confront, sans parler du coup "si vous voulez que je continue dvelopper des logiciels, j'ai besoin de votre support". Pour plus d'impact, des messages arrivent mme de temps en temps sur des fentres lors de l'utilisation de ce type de logiciels. C'est un bon moyen pour leurs auteurs de se faire rmunrer sous un statut pourtant gratuit. Nagware : C'est une sous-classe du shareware, le logiciel est payant mais distribu gratuitement. Le logiciel (grce des messages intempestifs) rappelle rgulirement l'utilisateur non enregistr qu'il doit payer sa licence. Exemple : Une des versions du FastFileSystem. Olderware : C'est une classe de logiciels distribus gratuitement sous la forme d'une version ancienne, dont on peut avoir la dernire version en payant sa licence (pour un prix gnralement infrieur). Formeware : Logiciel non distribu. "For Me" signifie "pour moi". Il reste sur le disque dur de l'auteur. C'est, par exemple, un outil qui permet de simplifier d'utilisation de sa propre machine, alors l'auteur ne voit pas l'intrt de le distribuer car c'est un logiciel aux fonctions trs personnelles. Ce type de programme est assez important en nombre, surtout chez les bidouilleurs qui en crent en permanence afin de rendre leur machine aussi proche que possible de l'idal qu'ils se sont fix.

Conclusion
Le nombre de types de distributions logicielles est vaste, notamment dans la catgorie du logiciel libre o de nouvelles licences apparaissent sans cesse. Comme nous sommes dans un article parlant des distributions, je finirais par ajouter des types de distributions qui ne sont pas spcialement ddies aux logiciels : OEM : Acronyme anglophone de "Original Equipment Manufacturer". Il dsigne du matriel 124

informatique ou des logiciels vendus aux constructeurs informatiques ou aux assembleurs d'ordinateurs. N'tant pas prvu pour tre vendu l'unit, il est gnralement dpourvu de bote et de manuel d'utilisation, voire de pilote. Bulk : Ce terme s'emploie pour des pices dtaches d'ordinateurs. Il signifie "nu", c'est--dire vendu sans bote, sans logiciel, sans notice. Contrairement aux produits OEM, les produits Bulk peuvent tre achets par les particuliers. Retail : Appel aussi version bote, un matriel "Retail" est un matriel informatique vendu aux particuliers dans son emballage original (avec accessoires d'origine, manuel, logiciel, pilote). Exemples : un graveur de CD qui comprend aussi le disque d'installation, les cables, un ou plusieurs cds vierges, le manuel, etc.

125

Bien s'installer devant son PC


Mal de dos, problme de vue. On accuse l'ordinateur de tous les maux, souvent exagrment. Il reste que, la maison ou au bureau, enfants et adultes passent du temps devant leur cran. Voici les rgles respecter pour travailler ou jouer plus confortablement. (Une partie de ce dossier est tir du magazine l'Ordinateur individuel, numro 94 d'avril 1998)

De bonnes conditions de travail

Pourtant, vous tes apparemment l'aise devant votre cran, l'instar de plus de huit millions d'utilisateurs rguliers de l'informatique en milieu professionnel (lors de la dernire tude officielle, de 1993, du centre d'tude de l'emploi) et de plus d'une famille franaise sur cinq (selon une tude du GFK de dcembre 1997, 22% des familles seront quipes d'un micro la fin de l'anne 1998). En fait, cour terme, aucune douleur ne vous indique que vous tes mal install. Il faut souvent du temps pour qu'apparaissent les premiers symptmes. Mdecins et ergonomistes planchent depuis 20 ans sur ces multiples dsagrments de notre quotidien informatique. Les plus virulents tirent encore le signal d'alarme dans des termes plutt inquitants: strilit, troubles de comportement, agressivit. De leur point de vue, un ordinateur plus ou moins mal install est un vritable danger pour la sant. D'autres spcialistes, les plus nombreux, tout en reconnaissant les nuisances du travail sur cran dressent un bilan nettement moins catastrophique, et proposent en outre une batterie de solutions pratiques et simples mettre en oeuvre pour amliorer le confort d'emploi de l'ordinateur. Avant d'accuser le PC, il convient de se poser deux questions: votre poste est-il correctement install? Et tes-vous bien votre aise devant votre poste? Dans cette optique, nous avons list pour vous les points sensibles surveiller et l'amnagement qu'il convient d'apporter votre environnement micro-informatique. Franois Cail, physiologiste au service de physiologie environnementale de l'INRS (Institut national de recherche et de scurit), reconnat que, lorsque ces quelques recommandations sont appliques, elles permettent d'amliorer son bien-tre et ses performances. La premire mesure prendre, on l'a compris, est de vrifier si l'utilisateur et la machine sont correctement installs. Puis, et l'on n'y pense pas forcment, apporter des petits soins la machine et au local de travail: dpoussirer rgulirement le moniteur avec un chiffon lgrement humide, maintenir la temprature de la pice (23 tant un maximum) et l'arer frquemment, prserver une humidit ambiante entre 40 et 60% (un humidificateur d'air reste la meilleure des solutions) ou disposer des plantes vertes... tous ces petits gestes faciles amliorent nettement la qualit de l'air, et donc votre confort. Les spcialistes s'accordent galement pour admettre que des pauses frquentes, consacres d'autres tches que le travail sur cran (au moins 15 minutes toutes les 2 heures et 5 minutes toutes les heures pour les femmes enceintes) permettent de diminuer le stress et les troubles visuels. Il est aussi conseill de paramtrer son ordinateur de faon le rendre le plus efficace possible et limiter ainsi les causes d'nervement parfois l'origine d'un nouveau type de stress: bips rptitifs et inutiles, applications lances au dmarrage qui ralentissent l'accs aux programmes souhaits, machine lente, souris encrasse qui trane un peu et oblige rpter les manoeuvres... Par ailleurs, ce ne sont plus seulement les adultes qui utilisent un micro rgulirement, voire intensivement, dans leur cadre professionnel. Les jeunes enfants, les lycens ou les tudiant, pour jouer, apprendre sur Internet et sur CD-Rom, ou encore travailler la rdaction de dossiers et de mmoire universitaires, tous passent de plus en plus de temps sur leur ordinateur... ou de la tlvision. Eux aussi doivent donc pouvoir bnficier des meilleures conditions de confort et d'une organisation, la plus cohrente possible, du poste informatique. En effet, deux tudes 126

mdicales, l'une en 1990 par Marcel Rufo (professeur en pdopsychiatrie la facult de Marseille), l'autre en 1992 par Jean Bourque (orthopdagogue l'acadmie de Qubec, Canada), semble prouver qu'une utilisation longue (plus de 2 heures) et rpte (plusieurs fois par semaine) d'un micro par des enfants, sans pause, ni prcaution d'installation, peut avoir des consquences sur leur performances scolaires. Capacit de mmorisation divise par cinq, agressivit, dissipation, baisse des rsultats... Pourtant, ces deux praticiens ne prconisent pas l'interdiction des cran, omniprsent dans le monde de l'enfance (tlvision, console de jeux, micro-ordinateur), mais plutt une utilisation modre, assortie de quelques mesures prventives (filtres antireflet, distance par rapport l'cran...). Dans les annes venir, petits et grands passeront donc de plus en plus de temps devant l'cran de leur ordinateur. Ce qui obligera souvent repenser l'espace de travail et trouver l'endroit idal pour le matriels informatique dans une maison. Prendre autant de soin l'installation de son micro, que l'on en apporte l'emplacement de sa chre tlvision? Le confort d'emploi maximum et une bonne forme sont, sont sans doute, ce (petit) prix.
O placer son PC ?

L'clairage Les fentres : Idalement, la pice o se trouve l'ordinateur ne comporte qu'une seule fentre, dont la surface de vitrage n'excde pas le quart de la surface au sol (5 cm 2 pour une pice de 20m2). Le poste doit tre le plus possible loign de cette ouverture et l'cran positionn perpendiculairement celle-ci. Les stores lamelle horizontales sont susceptibles de limiter les gnes causes par la lumire naturelle et sont placs l'intrieur pour viter tout reflet du soleil sur les vitres. Eclairage direct : Pour viter l'blouissement aucune source de lumire ne doit tre visible dans un angle de 30 au-dessus du niveau des yeux. Il es t indispensable que les ranges de luminaires soit disposes paralllement aux fentres. Le poste de travail est alors install entre ces ranges afin de recevoir la lumire artificielle latralement. Eclairage indirect : Ce type d'clairage, obtenu grce des luminaires halognes par exemple, est prconis dans de petits locaux, aux murs de couleurs claires. La lumire doit tre dirige vers le plafond, l'aplomb du poste de travail. L'emplacement Murs : Les missions d'ondes ultra basse et trs basse frquence sont en majorit mises par l'arrire et les cts de l'cran. Il est donc prfrable de ne pas se tenir en permanence l'arrire d'un poste de travail dans une salle quipe de plusieurs machines. Il est parfois galement prfrable, dans une chambre, de positionner l'ordinateur dos un mur (cartez cependant ce genre de disposition si le travail sur cran est pratiqu en permanence). Pour le confort des yeux, vitez un environnement fait de surfaces brillantes, qui reflteraient les sources de lumire (bureau laqu, fauteuil en ska...), prfrez plutt les mattes. L'cran Reflets : Il est toujours conseill de vrifier dans la notice d'utilisation, ou mieux avant achat, si le moniteur a t trait contre les reflets, ce qui empche galement l'accumulation d'lectricit statique et limite la quantit d'missions de champs magntiques et lectricit alternative vers l'cran. Les meilleurs modles remplissent les normes MPRII (voire MPRIII), dites sudoise, et gnralement signales au dos de l'appareil. Si votre cran date d'avant 1991, optez de prfrence pour un filtre antireflet. Pour vous protger, viter les filtres en plastique color et adoptez plutt les filtres polarisants de bonne qualit (environ 300f). N'oubliez pas non plus de dpoussirer rgulirement votre moniteur.
La position idale devant l'cran

Les yeux Vous avez parfois des migraines, blouissement et autres trouble de la vue. Votre cran est sans doute mal plac ou mal clair. Sa partie suprieure doit tre au mme niveau que votre 127

front, et il doit se trouver entre 50 et 70 cm de vos yeux. Un petit truc au passage: multipliez par 170, la hauteur d'une majuscule d'Arial en corps 12 mesure 4mm. Vous devez donc idalement vous tenir 68 cm de votre cran. Les documents papier doivent tre clairs par une source lumineuse supplmentaire et positionne la mme distance de votre regard que l'cran et le clavier, pour que vos yeux n'aient pas de mise au point trop frquente effectuer. Les oreilles Pour limiter largement les maux de tte, les bourdonnements d'oreilles et la tension nerveuse, il convient de diminuer les bruits ambiants et rpts. Une imprimante en marche perptuelle sera de prfrence place dans un endroit non occup en permanence pour viter les nuisances sonores. Un cran mal rgl peut aussi mettre des sifflements. Faites alors appel un professionnel pour faire disparatre tout bruit gnant. Les systmes de ventilation ou de conditionnement d'air dans les bureaux doivent aussi tre vrifis frquemment. Le cou Lorsque vous tes confortablement dans votre fauteuil, vrifiez que votre nuque est droite et que vous n'avez pas vous pencher vers l'avant. Vos paules doivent tre le plus proche possible de votre nuque et vos coudes doivent former un angle de 90 Vous diminuez ainsi votre fatigue . musculaire, vos douleurs dorsales et autres crampes du haut du corps. Le dos Votre sige doit tre ajustable en hauteur sur au moins 20cm et comporter une lgre cambrure devant soutenir le bas de votre dos. De profil, il faut que votre oreille, votre paule et votre hanche soient parfaitement alignes. Les problmes lombaires, les points douloureux dans le bas du dos devraient alors se faire plus rares. Les poignets Pour bien travaill sur votre clavier, il est indispensable que vos avant-bras forment un angle droit avec vos bras, que vos poignets soient plus hauts que l'extrmit de vos doigts et, de prfrence, ne reposent pas sur le bord du bureau. Idalement le clavier est plac sur une surface indpendante du plan de travail, ajustable en hauteur. Les accoudoirs du fauteuil doivent vous permettre de dtendre de temps en temps vos bras. Voil de quoi viter les fourmis dans les doigts et les crampes dans les articulations de la main. Les jambes Assis sur votre sige, vos genoux doivent tre la mme hauteur que vos hanches, former un angle de 90 et y tre loigns de votre plan de tr avail d'environ 15cm (au moins l'paisseur de vos deux mains poses sur vos genoux). Il faut que vos pieds prennent appui sur une surface ferme et plane. Il est prfrable que les rebords de votre sige soient rembourrs pour aider la circulation du sang dans vos cuisses. Les risques de jambes lourdes, de crampes et mme de tendinites s'en trouveront considrablement diminus.
Choisir un meuble micro Si vous souhaitez travailler dans de bonnes conditions, ne ngligez pas votre meuble. Il doit tre assez grand pour pouvoir accueillir votre unit centrale, votre cran, ainsi que tous vos priphriques tels que l'imprimante et les hautparleurs. Le but est de pouvoir accder tout sans bouger de votre fauteuil. Evitez les meubles qui visent accueillir tous vos lments dans un minimum d' espace car vous y perdrez en confort. Exemple : une imprimante au niveau des genoux qui vous oblige vous lever chaque fois que vous souhaiter y ajouter du papier. Autre inconvnient ; l'impossibilit d'y allonger vos jambes d'o une fatigue accrue au bout de quelques heures de travail.

Les prix varient de 199F plus de 1000F en fonction de la structure souhaite. Les premiers prix ne comprennent qu'une tablette coulissante pour y placer votre clavier. A partir de 400F, le meuble prsente un espace pour votre imprimante. Pour un meuble avec tagres de rangement, comptez 800F minimum. Si votre budget est limit et si l'esthtisme de l'ensemble n'est pas votre priorit, vous pouvez envisager la solution la plus simple : deux trteaux et un plateau. Cela vous revient environ 200F et vous bnficiez de toute la place ncessaire pour vos lments. 128

Dans tous les cas surveillez la stabilit de l'ensemble. Le poids d'un grand cran risquerait avec un meuble de mauvaise qualit de tout faire crouler. Renseignez vous donc sur la charge maximum autorise du meuble qui vous intresse.

129

Mieux connatre les virus Malgr notre conscience des virus informatiques, combien d'entre nous peuvent dfinir ce qu'est un virus informatique ou comment il infecte les ordinateurs ? Cet article a pour but de dmystifier les bases des virus informatiques, de rsumer ce qu'ils sont, comment ils attaquent et ce que nous pouvons faire pour nous en protger.
Introduction Dfinition du virus Les diffrents types de virus Comment se rpandent-ils ? Ce qu'ils ne peuvent pas faire... Comment savoir si son PC est infect ? Comment se protger ? Comment s'en dbarrasser ? Liens

Introduction Au milieu des annes 80, d'aprs la lgende, les frres Amjad du Pakistan tenaient un magasin informatique. Frustrs par le piratage informatique, ils crivirent le premier virus informatique, un virus de secteur de dmarrage appel Brain. A partir de l, une entire industrie de contreculture de cration et de distribution de virus mergea, nous laissant aujourd'hui avec une estimation de plusieurs milliers de virus. En moins d'une dcennie, la plupart d'entre nous sont familiers avec le terme virus informatique. Mme ceux qui ne savent pas utiliser un ordinateur ont entendu parler de virus travers les films hollywoodiens tels que Independence Day ou Hackers (bien que la description d'Hollywood soit gnralement trs inexacte). Des magazines et des journaux internationaux ont rgulirement des menaces de virus la une. Il n'y a aucun doute que notre culture est fascine par le danger potentiel de ces virus. De nombreuses personnes pensent que le pire des virus peut formater votre disque dur. En fait, ce type de charge est maintenant inoffensif pour ceux d'entre nous qui sauvegardent les donnes importantes. Encore plus destructeurs sont les virus qui corrompent subtilement les donnes. Considrez, par exemple, les effets d'un virus qui modifient de 10 20% les valeurs des nombres d'une feuille de calcul d'un courtier en bourse. D'autres 'mchants' virus postent des documents confidentiels de votre entreprise sous votre propre nom dans le forum de discussion alt.sex, un acte qui peut ruiner votre rputation et la confidentialit de l'entreprise. Dfinition du virus Un virus est un logiciel informatique destin modifier votre insu le fonctionnement de votre ordinateur. Cette modification peut tre un changement du contenu de vos fichiers, voir la suppression de ces derniers. Un virus n'est pas forcment trs dangereux. On dnombre de nombreux virus qui n'affecteront pas de faon visible le comportement de votre PC ou qui, vous afficheront un simple message. Par contre il en existe de plus actifs, permanents ou temporaires en fonction de la date du jour (exemple le virus Friday 13th qui ne sera actif qu'un vendredi 13). Tout comme une bactrie dans le corps humain, un virus informatique a la facult de se propager l'intrieur mme de votre ordinateur, en infectant petit petit tous vos fichiers. Les plus virulents peuvent galement se transmettre par mail aux correspondant enregistrs dans votre logiciel de messagerie (dernier exemple en date ; le virus Sircam). Un PC infect par un virus peut arrter de fonctionner correctement du jour au lendemain sans que vous ne russissiez le redmarrer. Il est donc important de se protger. Un virus peut se transmettre de plusieurs faons : 130

- Les disquettes - CDRom et DVD - Internet (Les sites vous au piratage informatique et au MP3 sont les plus sensibles) - Logiciels (mme les plus connus comme la suite Office de Microsoft) - Par rseau (dans une entreprise par exemple)

131

Les diffrents types de virus Le Cheval de Troie Un Cheval de Troie est un programme simulant de faire quelque chose, mais faisant tout autre chose la place. Leur nom vient du fameux Cheval de Troie de la Grce antique, offert en cadeau, mais qui en fait avait pour but de causer la ruine et la destruction de la ville ayant reu ce cheval en bois. Un Cheval de Troie sur un ordinateur est un programme excutable indpendant, qui est prsent comme ayant une action prcise. Nanmoins lorsque ce programme est lanc, il va par exemple formater le disque dur, voler les mots de passe ou envoyer des informations confidentielles au crateur via Internet. Les Vers Un Ver est un programme indpendant, qui se copie d'ordinateur en ordinateur. La diffrence entre un ver et un virus est que le ver ne peut pas se greffer un autre programme et donc l'infecter, il va simplement se copier via un rseau ou Internet, d'ordinateur en ordinateur. Ce type de rplication peut donc non seulement affecter un ordinateur, mais aussi dgrader les performances du rseau dans une entreprise. Comme un virus ce ver peut contenir une action nuisible du type destruction de donnes ou envoi d'informations confidentielles. Virus de Zone d'amorce Un virus de zone d'amorce utilise la mthode la plus simple existante pour se propager. Il infecte la zone d'amorce des disques durs et des disquettes, la zone d'amorce est la premire partie du disque lu par l'ordinateur lors de son dmarrage, elle contient les informations expliquant l'ordinateur comment dmarrer. Cette zone contient aussi des informations expliquant l'ordinateur comment le disque est format, si il y a des partitions etc. Pour tre infect, il faut avoir dmarr sur une disquette, ou un disque amovible contenant le virus. Une fois la zone d'amorce de l'ordinateur infecte, ce virus se transmettra sur toute disquette ou support amovible insr dans l'ordinateur. La plupart des virus de zone d'amorce ne fonctionnent plus sous les nouveaux systmes d'exploitation tels que Windows NT. Virus Macro Les virus Macros sont la plus grande menace ce jour, ils se propagent lorsqu'un document Microsoft Word, Excel ou PowerPoint contamin est excut. Un virus Macro est une srie de commandes permettant d'effectuer un certain nombre de tches automatiquement au sein des applications ci dessus. Le but non nuisible du langage de macro dans ces applications est l'origine de pouvoir crer des raccourcis pour effectuer des tches courantes, par exemple en une touche imprimer un document, le sauvegarder et fermer l'application. Les Virus Macros non supprims se rpandent trs rapidement. L'ouverture d'un document infect va contaminer le document par dfaut de l'application, et ensuite tous les documents qui seront ouverts au sein de l'application. Les documents Word, Excel et PowerPoint tant les documents les plus souvent partags, envoys par Internet, ceci explique la diffusion rapide de ces virus. De plus le langage de programmation des Macros est beaucoup plus facile apprendre et moins compliqu qu'un langage de programmation classique. Virus Polymorphe Ceci est une sous catgorie, dans le sens ou n'importe lequel des types de virus ci dessus peut en plus tre polymorphe. Les virus polymorphes incluent un code spcial permettant de rendre chaque infection diffrente de la prcdente. Ce changement constant rend la dtection de ce type de virus compliqu. Souvent le code change, mais l'action pour lequel il a t cr est toujours la mme. Par exemple, le virus peut intervertir l'ordre des instructions de son action en son sein, ou rajouter de fausses instructions afin de tromper la vigilance de l'antivirus, qui lui, recherche une signature prcise. Beaucoup de virus polymorphes sont aussi encrypts. Le virus encryptera son code et ne le dcryptera que lorsqu'il doit infecter un nouveau fichier, le rendant encore plus difficile dtecter. Virus Furtif 132

Un virus furtif, comme son nom l'indique, va se cacher lorsque l'ordinateur ou l'utilisateur accde au fichier infect. Si l'utilisateur ou l'antivirus tente de voir si le fichier est infect, le virus le saura et va se cacher offrant l'antivirus et l'utilisateur une version non infecte du fichier. Par exemple un virus macro non furtif, serait visible dans le menu Outils, Macros de Word, rvlant sa prsence d'un simple coup d'il, alors qu'un virus macro furtif, ne montrera pas sa prsence de la sorte. Virus Multi cibles Les virus multi cibles utilisent la fois les techniques d'infection des virus programmes et ceux de zone d'amorce. Ils infecteront donc la fois les zones d'amorces et les programmes. Ces virus ont tendance avoir une taille un peu plus leve que les autres types puisqu'ils doivent contenir les instructions pour effectuer deux types d'infections. En doublant l'infection, le virus double sa chance d'tre transmis un autre ordinateur et de se rpandre. Ceci explique qu'ils sont responsables d'un grand nombre d'infections, sans tre trs nombreux. Par exemple si vous lancez un programme infect par le virus Tequila, ce virus infectera dans un premier temps la zone d'amorce de l'ordinateur. La prochaine fois que vous allumerez votre ordinateur, ce virus Tequila infectera donc tous les programmes que vous utilisez ou qui sont lancs au dmarrage de votre machine et ainsi de suite, tout programme excut sera donc infect. Hoax ou "Faux virus" Ces fausses alertes sont aussi srieuses que les vrais virus. En effet elles font perdre du temps et peuvent gnrer une certaine anxit quant la vrit ou non du message. Une des raisons pour lesquels ces Hoax sont si rpandus, c'est qu'il suffit d'avoir une certaine crativit et un talent rdactionnel, pour envoyer un email contenant de fausses informations. Le premier de ces Hoax connu a t envoy par deux abonns AOL en 1992, il s'appelle Good Times. Depuis les messages du type "si vous recevez un email avec comme sujet bonjour, effacez le, ne l'ouvrez pas, il dtruira votre ordinateur", sont presque aussi rpandus que les vrais virus. Nous pouvons facilement dvelopper des armes pour lutter contre les vrais virus, il est plus difficile de concevoir quelque chose pour lutter contre la dsinformation. Le seul moyen c'est l'ducation des utilisateurs de micro ordinateurs. Comment se rpandent-ils ? Les virus se rpandent lorsque vous lancez une application infecte ou dmarrez votre ordinateur depuis une disquette comportant des fichiers systme infects. Ainsi, par exemple, si un programme de traitement de texte contient un virus, ce dernier s'active lorsque vous lancez ce programme. Lorsque le virus est en mmoire vive, il infecte gnralement toutes les applications que vous excutez, y compris les applications rseau (si vous avez accs en criture des dossiers ou des volumes en rseau). Tous les virus ne se comportent pas de la mme faon. Certains restent activs dans la mmoire jusqu' ce que vous teigniez votre ordinateur, d'autres n'y restent que tant que les applications infectes sont actives. Le fait d'teindre votre ordinateur ou de quitter l'application infecte supprime le virus de la mmoire, mais ne le supprime pas du fichier ou du disque infect : si le virus rside dans un fichier systme, il se ractivera lorsque vous rallumerez votre ordinateur depuis le disque en question. Si le virus s'est greff sur une application, il se ractivera au prochain lancement de cette application. Ce qu'ils ne peuvent pas faire... Les virus ne peuvent pas infecter les fichiers placs sur des disques protgs en criture ( l'exception des virus de macros de Word, qui n'infectent que les documents et les modles crs sous Word 6.0 ou suprieur). Ils n'infectent pas les fichiers compresss. Cependant, les applications au sein d'une archive compresse peuvent avoir t infectes avant leur compression. Les virus sont incapables de s'attaquer votre matriel (moniteurs, claviers, composants lectroniques, etc.) : seuls les logiciels les intressent. Sachez galement que les virus sur Macintosh ne peuvent rien contre les ordinateurs compatibles PC, et vice-versa. Par exemple, le virus Michelangelo (de triste rputation) ne peut pas s'attaquer aux applications Macintosh. La seule exception, l encore, porte sur les virus de macros Word et Excel, qui s'attaquent aux feuilles de calcul, aux documents et aux modles pouvant s'ouvrir sur un ordinateur sous Windows ou sous Mac OS. Enfin, les virus ne se laissent pas toujours dceler, mme s'ils ont un effet destructif. 133

Tlcharger un fichier n'entrane pas d'infection virale - Rptons-le, vous devez excuter un programme pour contracter un virus. Alors, si vous tlchargez un document, vous pouvez attraper un virus en ouvrant votre traitement de texte pour le lire (techniquement parlant, les documents sont des donnes et ne peuvent tre contamins, c'est une macro ou un modle de document qui sont contamins). Ou si vous tlchargez un logiciel souponneux, vous pouvez contracter un virus en essayant de l'installer. Par exemple, il existe un programme appel AOL4Free qui vous permettra d'utiliser les services d'America Online sans payer (l'tudiant qui a cr ce programme a rcemment plaid coupable d'escroquerie envers AOL). Il existe galement un Cheval de Troie appel AOL4Free qui, si excut, dtruit tous les fichiers de votre disque dur. Le tlchargement du fichier est en soi inoffensif, aussi longtemps que vous ne l'excutez pas! Pour tre en scurit, inspectez chaque fichier que vous tlchargez avant d'en faire quoi que ce soit. Comment savoir si son PC est infect ? Les symptmes Les fauteurs de virus et les auteurs de logiciels de dtection se livrent perptuellement l'escalade. (Certaines mauvaises langues vont mme jusqu' insinuer que ce sont les mmes, mais nous n'en avons pas de preuve.) Ds que les premiers inventent une ruse nouvelle, les seconds se htent de trouver une parade efficace. La tactique d'un "bon" virus est de ne pas se faire reprer, retardant ainsi au maximum sa dtection, donc son radication. Nous carterons les virus bnins, cits plus haut, qui, eux, au contraire, cherchent se faire reprer par des manifestations le plus souvent audio-visuelles. Plusieurs symptmes peuvent rvler qu'un fichier a t infest : changement de taille, de date de cration, de somme logique de contrle (checksum). La taille mmoire disponible pourra se rvler rduite par rapport ce qu'on a coutume d'observer (639 Ko au lieu de 640). Mais qui va se soucier d'aller quotidiennement vrifier ces paramtres ? Autrement dit, seul un expert peut, assez rapidement, souponner la prsence d'un virus. L'utilisateur normal devra recourir des logiciels spcialiss capables d'une analyse fine (et souvent complexe) du contenu de la mmoire et de celui du disque. De son ct, l'utilisateur qui a l'impression que sa machine ne se comporte pas tout fait comme d'habitude (programmes plus lents se charger, aspect de l'cran diffrent de celui auquel il est habitu, rsultats obtenus surprenants) doit immdiatement admettre la possibilit d'une attaque virale. La dtection de l'ennemi Il existe une catgorie de dtecteurs de virus qui oprent sur une collection de signatures. Les virus les plus simples comportent tous, en effet, une suite d'instructions caractristique, propre chacun, mais parfaitement identifiable et qu'on appelle leur signature. On peut en tablir un catalogue qui ira en grossissant au fur et mesure qu'apparatront de nouveaux virus. Les programmes qui exploitent cette mthode s'appellent des scanners. Ils ne donnent que trs peu de fausses alarmes, mais ils sont naturellement inefficaces pour les virus polymorphiques puisque ceux-ci ont la facult de modifier leur apparence. L'inconvnient de cette mthode est la ncessit de remise jour priodique du catalogue, ce qui impose l'utilisateur de souscrire un abonnement et procure au distributeur et l'diteur de l'anti-virus une apprciable source de revenus. Une autre mthode existe, qui a l'avantage de ne pas ncessiter de mise jour. Elle se base sur des algorithmes heuristiques pour souponner dans certaines successions d'instructions la possibilit d'un virus. La probabilit de fausses alarmes est plus forte qu'avec les scanners mais l'efficacit est permanente. Tout au moins jusqu' l'apparition d'une nouvelle forme gnrale d'attaque. Comment se protger ?
Mme si plusieurs milliers de virus informatiques sont connus des chercheurs, la vaste majorit sont enferms bien loin dans des laboratoires informatiques. Des 500 virus qui existent dans la nature, la plupart sont relativement inoffensifs, ils peuvent soutirer une petite quantit de mmoire, mais ils ne dtruiront probablement pas tous les fichiers de votre disque dur. Cependant, vous ne devez prendre aucune chance. Suivez ces tapes simples et vous serez sur la bonne voie de l'informatique sans souci:

134

1. Procurez-vous un logiciel antivirus - Le logiciel antivirus parfait n'existe pas, et les fausses alarmes peuvent tre aussi drangeantes que les virus eux-mmes. Dans un monde informatique aujourd'hui hyper branch, aucun ordinateur ne devrait tre sans logiciel antivirus. Assurez-vous de le mettre jour frquemment, des nouveaux virus apparaissent tous les jours. 2. Inspectez tous les disques - En gnral, vous devriez tre trs prudent avant d'insrer une disquette provenant de sources inconnues dans votre ordinateur, surtout si la disquette a t partage entre plusieurs personnes. Quelques fois vous n'aurez pas le choix. Dans ces situations, la seconde chose que vous devriez faire (aprs avoir insr la disquette dans votre lecteur) c'est de l'inspecter avec votre logiciel antivirus. Inspectez tous les fichiers de la disquette, pas seulement les fichiers d'application. Faites cela galement pour les logiciels achets et emballs. Lorsque vous remettez une disquette quelqu'un d'autre, protgez-la en criture. De cette manire, le virus situ sur l'ordinateur de l'autre personne ne contaminera pas votre disquette ( moins que cette personne retire la protection en criture pour effectuer des changements, ce sera alors la responsabilit de cette personne). Les CD-ROM sont moins risques, mais inspectez-les la premire fois que vous les utilisez. Le virus Concept fut trouv sur les CD-ROM du test de la compatibilit pour Windows 95 et dans celui sur les outils de support Windows 95 pour Windows NT. 3. Tlchargez prudemment - Plusieurs utilisateurs d'ordinateur croient que la meilleure source de contamination est le tlchargement de fichiers. Rien n'est plus loin de la vrit: la vaste majorit des virus voyagent par l'entremise des disquettes partages ou les fichiers d'un rseau. Vous ne pourrez jamais tre assez prudent, surtout si vous utilisez des logiciels clandestins comme AOL4Free (qui est vritablement un Cheval de Troie). Par prudence, tlchargez tous les fichiers dans un rpertoire spcial sur votre disque dur, puis assurez-vous de tous les inspecter avant de les utiliser. 4. Inspectez les documents annexs aux courriers lectroniques avant de les lire - Alors qu'il est impossible de contracter un virus simplement en lisant un message, c'est possible par l'entremise d'un document annex au message. Certains logiciels de courrier lectronique vont ouvrir automatiquement certains documents annexs en utilisant l'application approprie. C'est bien et cela rend la lecture des documents annexs plus efficace, mais peut devenir une source potentielle de cauchemars si des virus s'y cachent. Dsactivez cette fonction de votre logiciel de courrier lectronique, et inspectez chaque document annex que vous recevez avant de les consulter. 5. Sauvegardez les fichiers partags en format RTF - Si vous dsirez partager des donnes sur un serveur rseau, et que vous dsirez conserver votre environnement l'abri des virus, sauvegardez tous vos fichiers en formats RTF et ASCII. Aucun de ces formats ne conserve des macros ou des informations de styles, cela vous protgera des macros virus. 6. Faites une copie de scurit complte - Faites des copies de scurits de vos documents de travail et des fichiers de configuration du systme rgulirement. Conservez ces copies de scurit dans un endroit scuritaire, ailleurs que sur votre disque dur. Ainsi, si votre systme est contamin par un virus, vous pourrez compter sur vos copies de scurit. 7. Dans Outlook Express, dsactivez le volet de prvisualisation. En effet, le seul fait de visualiser un mail peut permettre aux virus qu'il contient de vous infecter (Cliquer sur Bote de rception dans l'arborescence puis Affichage/Disposition et dcochez l'option "Afficher le volet de visualisation". Pour la mme raison, il est maintenant prfrable de supprimer purement et simplement sans mme les ouvrir tous les mails contenant une pice jointe dont l'expditeur vous est inconnu. Comment s'en dbarrasser ? La plupart des logiciels antivirus d'aujourd'hui inspectent la mmoire de votre ordinateur aussitt le dmarrage amorc, et le logiciel devrait vous prvenir aussitt que vous tentez d'ouvrir un document contamin. A ce stade, laissez le logiciel nettoyer le fichier contamin, ou dtruisez le fichier si ncessaire (heureusement, vous avez une copie de scurit). Nanmoins, certains virus russissent parfois percer vos dfenses. Peut-tre quelqu'un a-t-il utilis votre ordinateur l'heure du lunch ou peut-tre que votre logiciel antivirus est dsuet ? Alors que faire ? 1. Restez calme - Vous pouvez pleurer, crier, supplier votre patron d'allonger la date limite de remise de votre travail, mais quoi que vous fassiez, ne paniquez pas. Le virus n'a probablement pas dtruit votre ordinateur, le jeter par la fentre le fera srement.

135

2. Redmarrez votre ordinateur proprement - Fermez votre ordinateur et redmarrez-le partir d'une disquette d'amorage protge en criture. 3. Cherchez et rparez les fichiers contamins - Utilisez votre logiciel antivirus pour trouver et rparer les fichiers contamins. Si les dommages sont trop grands pour que le logiciel puisse les rparer, remplacez les fichiers contamins par ceux de votre copie de scurit. 4. Vrifiez de nouveau - Inspectez tout votre systme avec votre logiciel antivirus une ou plusieurs fois. Normalement le logiciel antivirus devrait avoir supprim le virus. 5. Si rien n'y fait - Contactez votre revendeur pour obtenir de l'aide. Liens Secuser : Site complet sur l'actualit des virus. L'inscription la mailing list vous permettra d'tre

alert en temps rel de l'apparition d'un virus et de connatre les moyens de vous en protger.
Aspirine : un site ddi aux virus et aux moyens de les combattre.

Ce site est complet et vous permet d'y tlcharger les principaux anti-virus. Egalement : encyclopdie des virus, lexique... Symantec : retrouvez sur le site de Symantec une liste de faux-virus.

136

Vous aimerez peut-être aussi