The Unix and Internet Fundamentals HOWTO
 by Eric S. Raymond
 v1.1, 3 D�cembre 1998

 Ce document d�crit les principes fondamentaux des ordinateurs de type
 PC, des syst�mes d'exploitation de type UNIX et d'Internet dans un
 langage non technique. (Traduction fran�aise Philippe Malinge
 [email protected])
 ______________________________________________________________________

 Table des mati�res


 1. Introduction

    1.1 Sujet de ce document
    1.2 Ressources rattach�es
    1.3 Nouvelles versions de ce document
    1.4 R�actions et corrections

 2. Anatomie de base de votre ordinateur

 3. Que se passe-t-il lorsque vous allumez votre ordinateur ?

 4. Que se passe-t-il lorsque vous ex�cutez des programmes � partir du shell?

 5. Comment marchent les p�riph�riques d'entr�e et les interruptions ?

 6. Comment mon ordinateur fait-il plusieurs choses en m�me temps ?

 7. Comment mon ordinateur �vite aux processus d'empi�ter les uns sur les autres ?

 8. Comment mon ordinateur stocke des choses sur le disque ?

    8.1 Bas niveau du disque et structure du syst�me de fichiers
    8.2 Noms de fichiers et r�pertoires
    8.3 Points de montage
    8.4 Comment un fichier est retrouv� ?
    8.5 Comment les choses peuvent d�g�n�rer ?

 9. Comment fonctionnent les langages d'ordinateur ?

    9.1 Langages compil�s
    9.2 Langages interpr�t�s
    9.3 Langages P-code

 10. Comment Internet fonctionne ?

    10.1 Noms et localisations
    10.2 Paquets et routeurs
    10.3 TCP et IP
    10.4 HTTP, un protocole d'application


 ______________________________________________________________________

 11..  IInnttrroodduuccttiioonn



 11..11..  SSuujjeett ddee ccee ddooccuummeenntt

 Ce document est con�u pour aider les utilisateurs de Linux et
 d'Internet qui d�sirent apprendre en faisant. Bien que ce soit un bon
 moyen d'acqu�rir des comp�tences, quelquefois cela laisse de
 singuli�res lacunes dans la connaissance des bases -- lacunes qui
 peuvent rendre difficile la r�flexion cr�ative ou perturber fortement,
 par manque d'un mod�le mental clair sur ce qu'il devrait se passer.

 J'essaierai de d�crire clairement, dans un langage simple, comment
 tout marche. La pr�sentation sera adapt�e aux personnes qui utilisent
 Unix ou Linux sur du mat�riel de type PC. Cependant, je ferai ici
 couramment r�f�rence � 'Unix' : ce que je d�crirai se retrouvera sur
 toutes les plates-formes et sur toutes les variantes d'Unix.

 Je suppose que vous utilisez un PC avec un processeur de type Intel.
 Les d�tails diff�rent quelque peu si vous utilisez un processeur Alpha
 ou PowerPC ou une autre machine Unix, mais les concepts de base
 restent les m�mes.

 Je ne voudrais pas r�p�ter les choses, alors vous allez devoir faire
 attention, mais cela veut dire que vous retiendrez chaque mot que vous
 lirez. C'est une bonne id�e que de tout parcourir rapidement la
 premi�re fois ; vous devrez y revenir et relire un certain nombre de
 fois afin de dig�rer ce que vous avez appris.

 C'est un document en permanente �volution. Je pr�vois d'ajouter des
 chapitres en r�ponse aux feedbacks, ainsi vous pourrez p�riodiquement
 le passer en revue.


 11..22..  RReessssoouurrcceess rraattttaacchh��eess

 Si vous lisez dans l'espoir d'apprendre comment 'hacker', vous devrez
 lire How To Become A Hacker FAQ
 <http://www.tuxedo.org/~esr/faqs/hacker-howto.html>. Il y a beaucoup
 de liens vers d'autres ressources utiles.



 11..33..  NNoouuvveelllleess vveerrssiioonnss ddee ccee ddooccuummeenntt


 Les nouvelles versions de 'Unix and Internet Fundamentals HOWTO'
 seront post�es p�riodiquement dans comp.os.linux.help et  et
 news.answers <news:answers>. Elles pourront �tre t�l�charg�es � partir
 de divers sites Linux WWW ou FTP, y compris la page d'accueil du LDP.

 Vous pouvez acc�der � la derni�re version (en anglais) de ce document
 sur le World Wide Web via l'URL
 <http://sunsite.unc.edu/LDP/HOWTO/Unix-Internet-Fundamentals-
 HOWTO.html>.


 11..44..  RR��aaccttiioonnss eett ccoorrrreeccttiioonnss


 Si vous avez des questions ou des commentaires � propos de ce
 document, vous pouvez envoyer vos courriers �lectroniques � Eric S.
 Raymond, � [email protected]. Toutes suggestions ou critiques seront les
 bienvenues. Seront sp�cialement appr�ci�s les liens hypertexte vers
 des explications plus d�taill�es ou vers des concepts propres. Si vous
 trouvez des erreurs dans ce document, faites-le moi savoir afin que je
 puisse les corriger dans la nouvelle version. Merci.


 22..  AAnnaattoommiiee ddee bbaassee ddee vvoottrree oorrddiinnaatteeuurr

 Votre ordinateur poss�de un processeur � l'int�rieur duquel se font
 r�ellement les calculs. Il poss�de une m�moire interne (ce que les
 gens DOS/Windows d�signent par ``RAM'' et que les gens UNIX d�signent
 souvent par ``core''). Le processeur et la m�moire r�sident sur la
 _c_a_r_t_e _m_�_r_e qui est le coeur de votre ordinateur.

 Votre ordinateur poss�de un �cran et un clavier. Il a un (ou des)
 disque(s) dur(s) et un lecteur de disquettes. L'�cran et vos disques
 ont des _c_a_r_t_e_s _c_o_n_t_r_�_l_e_u_r que l'on connecte sur la carte m�re et qui
 aident l'ordinateur � piloter ces p�riph�riques externes. Votre
 clavier est trop simple pour n�cessiter une carte s�par�e ; le
 contr�leur est int�gr� dans le ch�ssis du clavier.)

 Nous d�crirons plus tard en d�tails comment fonctionnent ces
 p�riph�riques. Pour l'instant, quelques notions de base afin de garder
 � l'esprit comment ils fonctionnent ensemble :

 Tous les �l�ments internes de votre ordinateur sont connect�s par un
 _b_u_s. Physiquement, le bus est ce sur quoi vous connectez vos cartes
 contr�leur (carte vid�o, contr�leur disque, carte son si vous en avez
 une). Le bus est l'autoroute emprunt�e par les donn�es entre votre
 processeur, votre �cran, votre disque et le reste.



 Le processeur, qui fait tout marcher, ne peut r�ellement voir tous les
 �l�ments directement ; il doit communiquer avec eux via le bus, le
 seul sous-syst�me qui soit effectivement tr�s rapide, qui acc�de
 directement � la m�moire (le core). Afin que les programmes puissent
 s'ex�cuter, ils doivent �tre en m�moire _c_o_r_e.

 Lorsque votre ordinateur lit un programme ou une donn�e sur le disque,
 il se passe r�ellement les choses suivantes : le processeur utilise le
 bus pour envoyer une requ�te de lecture du disque � votre contr�leur
 de disque. Quelques instants apr�s, le contr�leur de disque utilise le
 bus pour signaler � l'ordinateur qu'il a lu la donn�e et qu'il l'a
 mise � un certain endroit de la m�moire. Le processeur peut utiliser
 le bus pour aller chercher ce qu'il y a � cet endroit de la m�moire.

 Votre clavier et votre �cran communiquent �galement avec le processeur
 via le bus mais d'une mani�re plus simple. Nous exposerons cela plus
 loin. Pour l'instant vous en savez suffisamment pour comprendre ce
 qu'il se passe lorsque vous allumez votre ordinateur.


 33..  QQuuee ssee ppaassssee--tt--iill lloorrssqquuee vvoouuss aalllluummeezz vvoottrree oorrddiinnaatteeuurr ??

 Un ordinateur sans programme qui s'ex�cute est juste un tas inerte
 d'�lectronique. La premi�re chose que doit faire un ordinateur
 lorsqu'il est allum� est de d�marrer un programme sp�cial appel�
 _s_y_s_t_�_m_e _d_'_e_x_p_l_o_i_t_a_t_i_o_n. Le travail du syst�me d'exploitation est
 d'aider les autres programmes de l'ordinateur � travailler, en
 traitant les d�tails m�prisables du contr�le du mat�riel de
 l'ordinateur.

 Le processus de d�marrage du syst�me d'exploitation est appel�
 _b_o_o_t_i_n_g (originalement c'�tait _b_o_o_t_s_t_r_a_p_p_i_n_g _(_l_a_�_a_g_e _d_e_s _c_h_a_u_s_s_u_r_e_s_),
 allusion � la difficult� d'enfiler soi m�me ses chaussures `par les
 lacets'. Votre ordinateur sait comment booter car les instructions de
 boot sont stock�es dans un de ses composants, le composant BIOS (ou
 Basic Input/Output System).

 Le composant BIOS dit o� aller chercher, � une place fixe sur le
 disque dur de plus basse adresse (le _d_i_s_q_u_e _d_e _b_o_o_t), un programme
 sp�cial appel�  _c_h_a_r_g_e_u_r _d_e _b_o_o_t _(_b_o_o_t _l_o_a_d_e_r_) (sous Linux le chargeur
 de boot est appel� LILO). Le chargeur de boot est charg� en m�moire
 puis lanc�. Le travail du chargeur de boot est de d�marrer le syst�me
 d'exploitation r�el.


 Le chargeur fait cela en allant chercher un _n_o_y_a_u, en le chargeant en
 m�moire et en le d�marrant. Lorsque vous bootez Linux et voyez "LILO"
 sur l'�cran suivi par une succession de points, c'est qu'il charge le
 noyau. (Chaque point signifie qu'il vient de charger un autre _b_l_o_c _d_u
 _d_i_s_q_u_e du code du noyau.)

 (Vous pouvez vous demander pourquoi le BIOS ne charge pas le noyau
 directement -- pourquoi ces deux �tapes du processus avec le chargeur
 de boot ? C'est que le BIOS n'est pas vraiment intelligent. En fait il
 est carr�ment stupide, et Linux ne l'utilise jamais apr�s avoir boot�.
 A l'origine, j'ai programm� sur des PC 8-bits primitifs avec de petits
 disques : litt�ralement ils ne pouvaient acc�der � suffisamment de
 disque pour charger le noyau directement. L'�tape du chargeur de boot
 vous permet de d�marrer plusieurs syst�mes d'exploitation � partir de
 diff�rents emplacements de votre disque, dans le cas o� Unix n'est pas
 assez bon pour vous.)

 Une fois que le noyau d�marre, il doit chercher autour de lui, trouver
 le reste du mat�riel et �tre pr�t pour ex�cuter des programmes. Il
 fait cela en non pas en fouillant � des adresses m�moire ordinaires
 mais plut�t � des _p_o_r_t_s _d_'_E_n_t_r_�_e_/_S_o_r_t_i_e -- des adresses sp�ciales du
 bus, sens�es avoir une carte contr�leur de p�riph�riques en attente de
 commandes � cet endroit. Le noyau ne fouille pas au hasard ; il a un
 ensemble de connaissances qui lui permet de savoir ce qu'il est sens�
 trouver ici, et comment les contr�leurs r�pondraient s'ils �taient
 pr�sents. Ce processus est appel� _E_x_p_l_o_r_a_t_i_o_n _a_u_t_o_m_a_t_i_q_u_e.


 La plupart des messages que vous voyez au moment du boot sont
 l'exploration de votre mat�riel par le noyau � travers les ports
 d'Entr�e/Sortie, le chiffrage de ce qui est disponible et l'adaptation
 � votre machine. Le noyau Linux est extr�mement bon pour cela,
 meilleur que la plupart des autres Unix et _t_e_l_l_e_m_e_n_t meilleur que DOS
 ou Windows. En fait, beaucoup de vieux adeptes de Linux pensent que
 l'ing�niosit� des explorations de Linux lors du boot (qui lui
 permettent de s'installer relativement simplement) ont �t� une raison
 de s'�panouir dans le monde des exp�riences des Unix libres pour
 attirer une masse critique d'utilisateurs.


 Mais rendre le noyau compl�tement charg� et s'ex�cutant n'est pas la
 fin du processus de boot ; c'est juste la premi�re �tape (quelquefois
 appel�e _n_i_v_e_a_u _d_'_e_x_�_c_u_t_i_o_n _1 _(_r_u_n _l_e_v_e_l _1_)).

 L'�tape suivante du noyau est de s'assurer que vos disques sont OK.
 Les syst�mes de fichiers sur disques sont des choses fragiles ; s'ils
 ont �t� endommag�s par une panne mat�rielle ou par une coupure
 soudaine d'alimentation �lectrique, il y a de bonnes raisons de
 r�tablir l'int�grit� avant que votre Unix ne puisse aller plus loin.
 Nous parlerons plus tard de ce que l'on dit � propos de ``comment les
 syst�mes de fichiers peuvent devenir mauvais''.


 L'�tape suivante du noyau est de lancer plusieurs _d_�_m_o_n_s. Un d�mon est
 un programme comme un spouleur d'imprimante, un serveur de mail ou un
 serveur WWW qui se cache en arri�re-plan en attendant d'avoir des
 choses � faire. Ces programmes sp�ciaux doivent coordonner plusieurs
 requ�tes qui peuvent entrer en conflit. Il y a des d�mons car il est
 souvent plus facile d'�crire un programme qui s'ex�cute constamment et
 qui sait tout des requ�tes, plut�t que d'essayer de s'assurer qu'un
 troupeau de copies (chacune traitant une requ�te et toutes s'ex�cutant
 en m�me temps) ne se g�neraient pas mutuellement. La collection
 particuli�re de d�mons que le syst�me d�marre peut varier, mais
 inclura presque toujours un spouleur d'imprimante (un d�mon garde-
 barri�re de votre imprimante).

 Une fois que tous les d�mons ont d�marr�, nous sommes dans le _n_i_v_e_a_u
 _d_'_e_x_�_c_u_t_i_o_n _2 _(_r_u_n _l_e_v_e_l _2_). L'�tape suivante est la pr�paration pour
 les utilisateurs. Le noyau d�marre une copie d'un programme appel�
 getty pour surveiller votre console (et peut �tre d'autres copies pour
 surveiller des ports-s�rie entrants) Ce programme est celui duquel
 jaillit le prompt login sur votre console. Nous sommes maintenant dans
 le _n_i_v_e_a_u _d_'_e_x_�_c_u_t_i_o_n _3 _(_r_u_n _l_e_v_e_l _3_) et pr�ts pour votre connexion et
 l'ex�cution de vos programmes.


 Quand vous vous connectez (en donnant un nom et un mot de passe), vous
 vous identifiez aupr�s de getty et de l'ordinateur. Il ex�cute
 maintenant un programme appel� (assez naturellement) login, qui
 r�alise des t�ches ancillaires et d�marre un interpr�teur de
 commandes, le _s_h_e_l_l. (Oui getty et login pourraient �tre un seul et
 m�me programme. Ils sont s�par�s pour des raisons historiques que nous
 n'expliciterons pas ici.)


 Dans la section suivante, nous parlerons de ce qui se passe lorsque
 vous ex�cutez des programmes � partir du shell.


 44..  QQuuee ssee ppaassssee--tt--iill lloorrssqquuee vvoouuss eexx��ccuutteezz ddeess pprrooggrraammmmeess �� ppaarrttiirr dduu
 sshheellll??

 Le shell normal vous donne le prompt '$' que vous voyez apr�s vous
 �tre connect� (cependant vous pouvez le modifier et mettre autre
 chose). Nous ne parlerons pas de la syntaxe du shell et des choses
 faciles que vous pouvez voir sur votre �cran ici ; alors que nous
 l'ordinateur.

 Apr�s la phase de boot et avant que vous n'ex�cutiez un programme,
 vous pouvez penser � votre ordinateur comme �tant un zoo de processus
 qui attendent qu'il se passe quelque chose. Ils attendent des
 _�_v_�_n_e_m_e_n_t_s. Un �v�nement, ce peut �tre l'enfoncement d'une touche ou
 un d�placement de la souris. Ou, si votre machine est connect�e � un
 r�seau, un �v�nement peut �tre un paquet de donn�es venant de ce
 r�seau.

 Le noyau est un de ces processus. C'en est un sp�cial, car il contr�le
 le moment o� les autres processus _u_t_i_l_i_s_a_t_e_u_r peuvent s'ex�cuter, et
 c'est normalement le seul processus qui acc�de directement au mat�riel
 de la machine. En fait, les processus utilisateurs font des requ�tes
 au noyau lorsqu'ils veulent obtenir une entr�e clavier, �crire sur
 votre �cran, lire ou �crire sur votre disque ou juste autre chose que
 consommer quelques bits en m�moire. Ces requ�tes sont appel�es _a_p_p_e_l_s
 _s_y_s_t_�_m_e.

 Normalement toute Entr�e/Sortie passe par le noyau de mani�re � ce
 qu'il puisse ordonnancer les op�rations et �viter ainsi aux processus
 de se marcher les uns sur les autres. Quelques processus utilisateur
 sont autoris�s � contourner le noyau, habituellement en ayant acc�s
 directement aux ports d'Entr�e/Sortie. Les serveurs X (les programmes
 qui traitent les requ�tes graphiques des autres programmes sur la
 plupart des machines Unix) sont des exemples classiques. Mais nous
 n'avons pas vu de serveur X pour l'instant ; vous �tes au prompt du
 shell sur une console en mode caract�res.

 Le shell est juste un processus utilisateur, et non un processus
 particuli�rement sp�cial. Il attend vos frappes sur les touches du
 clavier, �coutant (� travers le noyau) le port d'E/S du clavier. Comme
 le noyau les voit, il les affiche sur votre �cran et les passe au
 shell. Le shell essaie de les interpr�ter comme �tant des commandes.


 Tapez `ls' suivi de `Enter' afin de lister le contenu d'un r�pertoire.
 Le shell applique ses r�gles internes pour �valuer la commande que
 vous voulez ex�cuter dans le fichier `/bin/ls'. Il fait un appel
 syst�me en demandant au noyau de lancer `/bin/ls' comme un processus
 _f_i_l_s et donne son acc�s � l'�cran et au clavier � travers le noyau. Le
 shell se rendort en attendant que 'ls' se termine.

 Lorsque /bin/ls est termin�, il dit au noyau qu'il a termin� en
 effectuant un appel syst�me _e_x_i_t. Le noyau r�veille le shell et lui
 dit qu'il peut continuer � s'ex�cuter. Le shell affiche un autre
 prompt et attend une autre ligne en entr�e.

 D'autres choses peuvent �tre faites pendant l'ex�cution de `ls',
 cependant (nous supposerons que la liste du r�pertoire est tr�s
 longue). Vous pourriez basculer sur une autre console virtuelle, vous
 connecter, et lancer une jeu de Quake par exemple. Ou bien, supposez
 que vous �tes connect� � Internet : votre machine peut envoyer ou
 recevoir des mails pendant que `/bin/ls' s'ex�cute.



 55..  CCoommmmeenntt mmaarrcchheenntt lleess pp��rriipphh��rriiqquueess dd''eennttrr��ee eett lleess iinntteerrrruuppttiioonnss ??

 Votre clavier est un p�riph�rique tr�s simple ; simple car il g�n�re
 un petit flux de donn�es tr�s lentement (sur un ordinateur standard).
 Lorsque vous rel�chez une touche, cet �v�nement est signal� par le
 c�ble du clavier qui va provoquer une _i_n_t_e_r_r_u_p_t_i_o_n _m_a_t_�_r_i_e_l.

 C'est au syst�me d'exploitation de surveiller de telles interruptions.
 Pour chaque type possible d'interruption, il y a un _h_a_n_d_l_e_r
 _d_'_i_n_t_e_r_r_u_p_t_i_o_n, une partie du syst�me d'exploitation dissimule toutes
 les donn�es associ�es (comme la valeur touche enfonc�e/touche
 rel�ch�e) tant qu'elle ne peut �tre trait�e.

 Ce que le fait le handler d'interruption disque pour votre clavier est
 de d�poser la valeur de la touche dans une zone en bas de la m�moire
 (core). Ainsi elle sera disponible pour l'inspection lorsque le
 syst�me d'exploitation passera le contr�le � n'importe quel programme
 suppos� attendre pr�sentement une entr�e clavier.


 Des p�riph�riques d'entr�e plus complexes comme les disques
 travaillent de mani�re similaire. Pr�c�demment nous faisions r�f�rence
 � un contr�leur de disques utilisant le bus pour signaler qu'une
 requ�te disque a bien �t� ex�cut�e. Que se passe-t-il si ce disque
 re�oit une interruption ? Le handler de l'interruption disque copie
 alors la donn�e trouv�e dans la m�moire, pour une utilisation future
 par le programme qui en avait fait la demande.

 Chaque type d'interruption est associ� � un _n_i_v_e_a_u _d_e _p_r_i_o_r_i_t_�. Les
 interruptions de plus basse priorit� (comme les �v�nements clavier)
 sont trait�es apr�s celles de priorit� sup�rieures (comme les tops
 d'horloge ou les �v�nements disque). Unix a �t� con�u pour traiter
 prioritairement les types d'�v�nements qui doivent �tre trait�s
 rapidement afin de conserver une machine sur laquelle les temps de
 r�ponse sont sont sans �-coup.

 Les messages que vous voyez pendant la phase de boot font r�f�rence �
 des num�ros d'_I_R_Q. Vous devez �tre pr�venus qu'une des causes les plus
 courantes de mauvaise configuration de votre mat�riel est d'avoir deux
 p�riph�riques qui essaient d'utiliser la m�me IRQ, sans savoir ce que
 c'est r�ellement.

 La r�ponse est ici. IRQ est l'abbr�viation de "Interrupt ReQuest". Le
 syst�me d'exploitation a besoin de savoir au d�marrage quel num�ro
 d'interruption sera utilis� par chaque p�riph�rique, ainsi il peut
 associer le handler ad�quat pour chacun. Si deux p�riph�riques
 diff�rents essaient d'utiliser la m�me IRQ, les interruptions seraient
 quelquefois distribu�es au mauvais handler. Cela est classique au
 moins au verrouillage du p�riph�rique, et peut parfois d�stabiliser le
 syst�me d'exploitation, qu'il se "d�sint�gre" ou qu'il se crashe.


 66..  CCoommmmeenntt mmoonn oorrddiinnaatteeuurr ffaaiitt--iill pplluussiieeuurrss cchhoosseess eenn mm��mmee tteemmppss ??

 En fait, il ne le fait pas. Les ordinateurs ne peuvent traiter qu'une
 seule t�che (ou _p_r_o_c_e_s_s_u_s) � la fois. Mais un ordinateur peut changer
 de t�che tr�s rapidement, et duper l'esprit humain en lui faisant
 croire qu'il fait plusieurs choses en m�me temps. C'est ce que l'on
 appelle le _t_e_m_p_s _p_a_r_t_a_g_�.

 Une des t�ches du noyau est de g�rer le temps partag�. C'est une
 partie d�di�e � l'_o_r_d_o_n_n_a_n_c_e_u_r qui conserve chez lui toutes les
 informations sur les autres processus (non noyau) de votre
 environnement. Chaque 1/60 �me de seconde, une horloge avertit le
 noyau, g�n�rant une interruption horloge. L'ordonnanceur arr�te le
 processus qui s'ex�cute, le suspend dans l'�tat, et donne le contr�le
 � un autre processus.

 1/60 �me de seconde peut para�tre peu de temps. Mais sur les
 microprocesseurs actuels c'est assez pour ex�cuter des dizaines de
 milliers d'instructions machine, ce qui permet d'effectuer beaucoup de
 choses. M�me si vous avez plusieurs processus, chacun peut accomplir
 un petit peu sa t�che pendant ses tranches de temps.

 En pratique, un programme ne dispose pas de sa tranche de temps
 enti�re. Si une interruption arrive d'un p�riph�rique d'E/S, le noyau
 arr�tera en r�alit� la t�che courante, ex�cutera le handler
 d'interruption et retournera � la t�che courante. Une temp�te
 d'interruption de haute priorit� peut interdire tout traitement
 normal ; ce mauvais comportement est appel� _d_�_f_a_i_t_e _(_t_h_r_a_s_h_i_n_g_) et est
 difficile � provoquer sur les Unix modernes.

 En fait, la vitesse des programmes est tr�s rarement limit�e par le
 temps machine qu'ils peuvent obtenir (il y a quelques exceptions �
 cette r�gle, comme la g�n�ration de son ou de graphiques en 3-D. Le
 plus souvent, les d�lais sont dus � l'attente, par le programme, des
 donn�es d'un disque ou d'une connexion r�seau.

 Un syst�me d'exploitation qui peut supporter de mani�re routini�re
 plusieurs processus est appel� "multit�che". Les syst�mes
 d'exploitation de la famille Unix ont �t� con�us d�s le d�but pour le
 multit�che et sont vraiment bons pour �a -- beaucoup plus efficaces
 que celui de Windows et MAC OS, pour lesquels le multit�che a �t�
 introduit a posteriori et qui le traitent plut�t pauvrement. Efficace,
 multit�che, fiable sont quelques-unes des raisons qui rendent Linux
 sup�rieur pour le r�seau, les communications et les services WEB.


 77..  CCoommmmeenntt mmoonn oorrddiinnaatteeuurr ��vviittee aauuxx pprroocceessssuuss dd''eemmppii��tteerr lleess uunnss ssuurr
 lleess aauuttrreess ??

 L'ordonnanceur du noyau fait attention � s�parer les processus dans le
 temps. Votre syst�me d'exploitation les divise aussi dans l'espace, de
 telle mani�re que ces processus n'empi�tent pas sur la m�moire de
 travail des autres. Ces choses que votre syst�me d'exploitation
 r�alise sont appel�es _g_e_s_t_i_o_n _d_e _l_a _m_�_m_o_i_r_e.

 Chaque processus de votre 'troupeau' a besoin de son propre espace
 m�moire afin de mettre son code et de garder des variables et leur
 r�sultat. Vous pouvez imaginer cet ensemble constitu� d'un _s_e_g_m_e_n_t _d_e
 _c_o_d_e accessible en lecture uniquement (contenant les instrucions du
 processus) et un _s_e_g_m_e_n_t _d_e _d_o_n_n_�_e_s accessible en �criture (contenant
 toutes les variables du processus). Le segment de donn�es est
 v�ritablement propre � chaque processus, mais si deux processus
 ex�cutent le m�me code, Unix s'arrange automatiquement pour qu'ils
 partagent le m�me segment de code dans un soucis d'efficacit�.

 L'efficacit� est importante car la m�moire est ch�re. Quelquefois,
 vous ne disposez pas de suffisamment de m�moire pour faire tenir tous
 les programmes, sp�cialement si vous utilisez un gros programme comme
 un serveur X-WINDOW. Pour contourner cela, Unix utilise une strat�gie
 appel�e  _m_�_m_o_i_r_e _v_i_r_t_u_e_l_l_e. Cela n'essaie pas de faire tenir tout le
 code et les donn�es d'un processus en m�moire. Cependant, il garde
 seulement un espace de travail ; le reste de l'�tat du processus est
 laiss� dans un endroit sp�cial sur votre disque : _l_'_e_s_p_a_c_e _d_'_�_c_h_a_n_g_e
 _(_s_w_a_p _s_p_a_c_e_).

 Lorsque le processus s'ex�cute, Unix essaie d'anticiper comment l'
 espace de travail changera, et ne chargera en m�moire que les morceaux
 dont il a besoin. Faire cela efficacement est compliqu� et d�licat, je
 n'essaierai pas de le d�crire ici -- mais cela d�pend du fait que le
 code et les r�f�rences aux donn�es peuvent arriver en blocs, avec
 chaque nouveau r�f�ren�ant vraisemblablement un proche ou un ancien.
 Ainsi, si Unix garde le code ou les donn�es fr�quemment (ou r�cemment)
 utilis�s, vous gagnerez du temps.

 Notez que dans le pass�, le "quelquefois" que nous employons deux
 paragraphes plus haut �tait "souvent" voire "toujours", -- la taille
 de la m�moire �tait habituellement petite par rapport � la taille des
 programmes en cours d'ex�cution, de telle mani�re que les �changes
 entre le disque et la m�moire ("swapping") �taient fr�quents. La
 m�moire est beaucoup moins ch�re de nos jours et m�me les machines bas
 de gamme en sont bien dot�es. Sur les machines mono-utilisateur avec
 64Mo de m�moire, il est possible de faire tourner X-WINDOW et un
 m�lange de programmes sans jamais swapper.

 M�me dans cette situation joyeuse, la part du syst�me d'exploitation
 appel�e le _g_e_s_t_i_o_n_n_a_i_r_e _d_e _m_�_m_o_i_r_e a un important travail � faire. Il
 doit �tre s�r que les programmes ne peuvent modifier que leurs
 segments de m�moire -- ce qui emp�che un code erron� ou malicieux dans
 un programme de ramasser les donn�es dans un autre. Pour faire cela,
 il conserve une table des segments de donn�es et de code. La table est
 mise � jour chaque fois qu'un processus demande de la m�moire ou en
 lib�re (habituellement plus tard lorsqu'il se termine).

 Cette table est utilis�e pour passer des commandes � une partie
 sp�cialis�e du mat�riel sous-jacent appel�e un _U_G_M _(_M_M_U_) ou _u_n_i_t_� _d_e
 _g_e_s_t_i_o_n _m_�_m_o_i_r_e _(_m_e_m_o_r_y _m_a_n_a_g_e_m_e_n_t _u_n_i_t_). Les processeurs modernes
 disposent de MMUs int�gr�s. Le MMU a la facult� de mettre des
 barri�res autour de zones m�moire, ainsi une r�f�rence en "dehors des
 clous" sera refus�e et g�n�rera une interruption sp�ciale pour �tre
 trait�e.

 Si vous avez d�j� vu le message Unix qui dit "Segmentation fault",
 "core dumped" ou quelque chose de similaire, c'est exactement ce qu'il
 se passe ; un programme en cours d'ex�cution a tent� d'acc�der � de la
 m�moire en dehors de son segment et a provoqu� une interruption
 fatale. Cela indique un bug dans le code du programme ; le _c_o_r_e _d_u_m_p
 laisse une information en vue d'un diagnostic � l'attention du
 programmeur afin qu'il puisse trouver la trace de son erreur.


 88..  CCoommmmeenntt mmoonn oorrddiinnaatteeuurr ssttoocckkee ddeess cchhoosseess ssuurr llee ddiissqquuee ??

 Sur votre disque dur sous Unix, vous voyez un arbre de r�pertoires
 nomm�s et des fichiers. Normalement vous ne devriez pas � chercher �
 en savoir plus, mais cela peut s'av�rer utile de savoir ce qu'il y a
 dessous si vous avez un crash disque et besoin d'essayer de nettoyer
 des fichiers. Malheureusement il n'y a pas de bon moyen de d�crire
 l'organisation du disque en partant du niveau fichier et en
 descendant, c'est pour cela que je le d�crirai en remontant � partir
 du niveau mat�riel.


 88..11..  BBaass nniivveeaauu dduu ddiissqquuee eett ssttrruuccttuurree dduu ssyysstt��mmee ddee ffiicchhiieerrss

 La surface de votre disque , sur laquelle il stocke les donn�es est
 divis�e comme une cible de jeu de fl�chettes -- en pistes circulaires
 qui sont partag�es en secteurs. Parce que les pistes de l'ext�rieur
 contiennent plus de surface que celles pr�s de l'axe de rotation, au
 centre du disque, les pistes externes ont plus de secteurs que celles
 de l'int�rieur. Chaque secteur (ou _b_l_o_c _d_i_s_q_u_e) a la m�me taille, qui
 est g�n�ralement de 1Ko (1024 mots de 8 bits). Chaque bloc disque a
 une adresse unique ou un  _n_u_m_�_r_o _d_e _b_l_o_c _d_i_s_q_u_e.


 Unix divise le disque en _p_a_r_t_i_t_i_o_n_s _d_i_s_q_u_e. Chaque partition est une
 succession de blocs qui est utilis�e ind�pendamment des autres
 partitions, comme un syst�me de fichiers ou un espace d'�change (swap
 space). La partition ayant le plus petit num�ro est souvent trait�e
 sp�cialement, telle la _p_a_r_t_i_t_i_o_n _d_e _b_o_o_t dans laquelle vous pouvez
 mettre un noyau pour booter.


 Chaque partition est soit un _e_s_p_a_c_e _d_e _s_w_a_p (utilis� pour impl�menter
 la ``m�moire virtuelle'') soit un _s_y_s_t_�_m_e _d_e _f_i_c_h_i_e_r_s pour stocker des
 fichiers. Les partitions de swap sont trait�es comme une s�quence
 lin�aire de blocs. Les syst�mes de fichiers d'un autre cot�, ont
 besoin de relier les noms de fichiers � des s�quences de blocs disque.
 Parce que les fichiers grossissent, diminuent, et changent tout le
 temps, les blocs de donn�es d'un fichier ne seront pas une s�quence
 lin�aire mais pourront �tre dispers�s sur toute la partition (tant que
 le syst�me d'exploitation pourra trouver un bloc libre).



 88..22..  NNoommss ddee ffiicchhiieerrss eett rr��ppeerrttooiirreess

 Dans chaque syst�me de fichiers, la liaison entre les noms et les
 blocs est r�alis�e gr�ce � une structure appel�e _i_-_n_o_d_e _(_n_o_e_u_d
 _d_'_i_n_d_e_x_). Il y en a tout un tas proche de la "base" (num�ro de bloc
 les plus faibles) du syst�me de fichiers (les tout premiers sont
 utilis�s pour des besoins d'int�grit� et de label que nous ne
 d�crirons pas ici). Chaque i-node d�crit un fichier. Les blocs de
 donn�es des fichiers sont au dessus des i-nodes (conceptuellement).

 Chaque i-node contient la liste des num�ros des blocs du fichier
 (r�ellement c'est une demi-v�rit�, c'est seulement valable pour les
 petits fichiers, mais le reste de ces d�tails ne sont pas importants
 ici). Notez que l'i-node _n_e _c_o_n_t_i_e_n_t _p_a_s le nom du fichier.

 Les noms des fichiers r�sident dans les _s_t_r_u_c_t_u_r_e_s _d_e _r_�_p_e_r_t_o_i_r_e_s. Une
 structure de r�pertoire contient juste une table des noms et des
 num�ros d'i-node associ�s. C'est la raison pour laquelle, sous Unix,
 un fichier peut avoir plusieurs noms r�els (ou _l_i_e_n_s _f_o_r_t_s _(_h_a_r_d
 _l_i_n_k_s_)) ; Il y a juste plusieurs entr�es dans un r�pertoire qui
 pointent vers le m�me i-node.


 88..33..  PPooiinnttss ddee mmoonnttaaggee

 Dans le cas le plus simple, votre syst�me de fichiers Unix tient sur
 une seule partition disque. Cependant vous verrez que cette
 disposition sur des petits syst�mes Unix n'est pas pratique.
 Typiquement il est r�parti sur plusieurs partitions disque voire  sur
 plusieurs disques physiques. Ainsi par exemple, votre syst�me peut
 avoir une petite partition o� le noyau r�side, une un peu plus grande
 pour les utilitaires du syst�me et une beaucoup plus grosse pour les
 r�pertoires des utilisateurs.

 La seule partition � laquelle vous aurez acc�s imm�diatement apr�s le
 boot est votre _p_a_r_t_i_t_i_o_n _r_a_c_i_n_e _(_r_o_o_t _p_a_r_t_i_t_i_o_n_), qui est (presque
 toujours) celle  � partir de laquelle vous avez boot�. Elle contient
 le r�pertoire racine du syst�me de fichiers, le noeud le plus haut �
 partir duquel tout est raccroch�.

 Les autres partitions du syst�me doivent �tre attach�es � cette racine
 afin que votre syst�me de fichiers unique ou multi-partition soit
 accessible. Au milieu du processus de boot, votre Unix rendra ces
 partitions 'non root' accessibles. Il devra _m_o_n_t_e_r chacune d'elles sur
 un r�pertoire de la partition racine.

 Par exemple, si votre Unix a un r�pertoire appel� '/usr', c'est
 probablement un point de montage d'une partition qui contient un tas
 de programmes install�s avec votre Unix mais qui ne sont pas
 n�cessaires durant la phase initiale de boot.


 88..44..  CCoommmmeenntt uunn ffiicchhiieerr eesstt rreettrroouuvv�� ??

 Maintenant nous pouvons consid�rer le syst�me de fichiers dans une
 d�marche descendante. Lorsque vous ouvrez un fichier (tel que
 /home/esr/WWW/ldp/fundamentals.sgml) voici ce qu'il arrive :

 Votre noyau d�marre de la racine de votre syst�me de fichiers Unix
 (dans la partition root). Il cherche un r�pertoire appel� `home'.
 Habituellement `home' est un point de montage d'une grande partition
 pour les utilisateurs, il descend � l'int�rieur. Au sommet de la
 structure du r�pertoire de cette partition utilisateur, il va chercher
 une entr�e nomm�e `esr' et en extraire le num�ro d'i-node. Il ira �
 cette i-node, notez que c'est une structure de r�pertoire, et
 retrouvera `WWW'. En exploitant _c_e_t i-node, il ira au sous r�pertoire
 correspondant et retrouvera `ldp'. Ce qui lui donnera encore un autre
 i-node r�pertoire. En ouvrant ce dernier, il trouvera un num�ro d'i-
 node pour `fundamentals.sgml'. Cet i-node n'est pas un r�pertoire mais
 fournit la liste des blocs associ�s au fichier.




 88..55..  CCoommmmeenntt lleess cchhoosseess ppeeuuvveenntt dd��gg��nn��rreerr ??

 Plus haut, nous avons laiss� entendre que les syst�mes de fichiers
 �taient fragiles.  Maintenant nous savons que pour acc�der � un
 fichier vous devez parcourir une longue cha�ne arbitraire de
 r�f�rences � des r�pertoires et � des inodes. A pr�sent, supposons que
 votre disque dur poss�de une zone d�fectueuse.

 Si vous �tes chanceux, il d�truira quelques donn�es d'un fichier. Si
 vous �tes malchanceux, il va corrompre une structure de r�pertoire ou
 un num�ro d'inode et laissera un sous arbre entier de votre syst�me
 dans l'oubli -- ou, pire, cela a donn� une structure corrompue qui
 pointe par plusieurs chemins au m�me bloc disque ou inode. Une telle
 corruption peut s'�tendre par des op�rations courantes sur les
 fichiers qui ne se trouvent pas au point d'origine.

 Heureusement, ce genre de d'impr�vu devient de plus en plus rare car
 les disques sont de plus en plus fiables. Malgr� tout, cela veut dire
 que votre Unix voudra v�rifier p�riodiquement l'int�grit� du syst�me
 de fichiers afin de s'assurer que rien ne cloche. Les Unix modernes
 font une v�rification rapide sur chaque partition au moment du boot,
 juste avant de les monter. Au bout d'un certain nombre de red�marrages
 (reboot), la v�rification sera plus approfondie et durera quelques
 minutes.

 Si tout cela vous parait, comme Unix, terriblement complexe et
 pr�dispos� aux d�faillances, au contraire, c'est rassurant de savoir
 que ces v�rifications faites au d�marrage de la machine, d�tectent et
 corrigent les probl�mes courants _a_v_a_n_t qu'ils ne deviennent r�ellement
 d�sastreux. D'autres syst�mes d'exploitation ne disposent pas de ces
 fonctionnalit�s, qui acc�l�rent  un petit peu le d�marrage, mais
 peuvent vous laisser tout 'bousiller' en essayant de r�cup�rer � la
 main (et en supposant que vous ayez une copie des Utilitaires Norton
 ou autre � port�e de main...).



 99..  CCoommmmeenntt ffoonnccttiioonnnneenntt lleess llaannggaaggeess dd''oorrddiinnaatteeuurr ??

 Nous avons d�j� �voqu� ``comment les programmes sont      ex�cut�s''.
 Chaque programme en fin de compte doit ex�cuter une succession
 d'octets qui sont les instructions dans le _l_a_n_g_a_g_e _m_a_c_h_i_n_e de votre
 ordinateur. Les humains ne pratiquent pas tr�s bien le langage
 machine ; cela est devenu rare, art obscur m�me parmi les hackers.

 La plupart du code du noyau d'Unix except� une petite partie de
 l'interface avec le mat�riel est de nos jours �crite dans un _l_a_n_g_a_g_e
 _d_e _h_a_u_t _n_i_v_e_a_u. (Le terme 'haut niveau' est un h�ritage du pass� afin
 de le distinguer du 'bas-niveau' des _l_a_n_g_a_g_e_s _a_s_s_e_m_b_l_e_u_r, qui sont de
 maigres "couches" autour du code machine.


 Il y plusieurs types diff�rents de langages de haut niveau. Afin de
 parler d'eux, vous trouverez utile que j'attire votre attention sur le
 fait que le _c_o_d_e _s_o_u_r_c_e d'un programme (la cr�ation humaine, la
 version �ditable) est pass� � travers plusieurs types de traductions
 pour arriver en code machine, que la machine peut effectivement
 ex�cuter.


 99..11..  LLaannggaaggeess ccoommppiill��ss

 Le type le plus classique de langage est un _l_a_n_g_a_g_e _c_o_m_p_i_l_�. Les
 langages compil�s sont traduits en fichiers ex�cutables de code
 machine binaire par un programme sp�cial appel� (assez logiquement) un
 _c_o_m_p_i_l_a_t_e_u_r. Lorsque le binaire est g�n�r�, vous pouvez l'ex�cuter
 directement sans regarder � nouveau dans le code source. (La plupart
 des logiciels d�livr�s sous forme de binaires compil�s sont faits �
 partir d'un source auquel vous n'avez pas acc�s.)

 Les langages compil�s tendent � fournir une excellente performance et
 ont un acc�s le plus complet au syst�me d'exploitation, mais il
 difficile de programmer avec.

 Le langage C, langage dans lequel chaque Unix est lui-m�me �crit, est
 de tous le plus important (avec sa variante C++). FORTRAN est un autre
 langage compil� qui reste utilis� par de nombreux ing�nieurs et
 scientifiques mais plus vieux et plus primitif. Dans le monde Unix
 aucun autre langage compil� n'est autant utilis�. En dehors de lui,
 COBOL est tr�s largement utilis� pour les logiciels de finance et
 comptabilit�.

 Il y a bien d'autres compilateurs de langages, mais la plupart sont en
 voie d'extinction ou sont strictement des outils de recherche. Si vous
 �tes un nouveau d�veloppeur Unix qui utilise un langage compil�, il
 est incontournable que ce soit C ou C++.



 99..22..  LLaannggaaggeess iinntteerrpprr��tt��ss

 Un _l_a_n_g_a_g_e _i_n_t_e_r_p_r_�_t_� d�pend d'un programme interpr�teur qui lit le
 code source et traduit � la vol�e en calculs et appels syst�me. Le
 source doit �tre r�-interpr�t� (et l'interpr�teur pr�sent) � chaque
 fois que le programme est ex�cut�.

 Les langages interpr�t�s tendent � �tre plus lents que les langages
 compil�s, et limitent souvent les acc�s au syst�me d'exploitation ou
 au mat�riel sous-jacent. D'un autre c�t�, il est plus facile de
 programmer et ils tol�rent plus d'erreurs de codage que les langages
 compil�s.


 Quelques utilitaires Unix, incluant le shell et bc(1) et sed(1) et
 awk(1), sont effectivement des petits langages interpr�t�s. Les BASICs
 sont g�n�ralement interpr�t�s. Ainsi est Tcl. Historiquement, le
 langage le plus interpr�t� �tait LISP (une am�lioration �norme sur la
 plupart de ses successeurs). Aujourd'hui, Perl est tr�s largement
 utilis� et devient r�solument plus populaire.



 99..33..  LLaannggaaggeess PP--ccooddee

 Depuis 1990 un type de langage hybride qui utilise la compilation et
 l'interpr�tation est devenu incroyablement important. Les langages P-
 code sont comme des langages compil�s dans le sens o� le code est
 traduit dans une forme binaire compacte qui est celle que vous
 ex�cutez, mais cette forme n'est pas du code machine. Au lieu de cela,
 c'est du _p_s_e_u_d_o_-_c_o_d_e (ou _p_-_c_o_d_e), qui est g�n�ralement un peu plus
 simple mais plus puissant qu'un langage machine r�el. Lorsque vous
 ex�cutez le programme, vous interpr�tez du p-code.


 Le p-code peut s'ex�cuter pratiquement aussi rapidement que du binaire
 compil� (les interpr�teurs de p-code peuvent �tre relativement
 simples, petits et rapides). Mais les langages p-code peuvent garder
 la flexibilit� et la puissance d'un bon interpr�teur.

 D'importants langages p-code sont Python et Java.


 1100..  CCoommmmeenntt IInntteerrnneett ffoonnccttiioonnnnee ??

 Afin de vous aider � comprendre comment Internet fonctionne, nous
 verrons ce qui se passe lorsque vous effectuez une op�ration classique
 -- pointer dans un navigateur ce document � partir du site Web de
 r�f�rence du Projet de Documentation de Linux (Linux Documentation
 Project). Ce document est :


 http://sunsite.unc.edu/LDP/HOWTO/Fundamentals.html



 ce qui veut dire qu'il r�side dans le fichier
 LDP/HOWTO/Fundamentals.html, sous le r�pertoire export� World Wide Web
 de la machine sunsite.unc.edu.



 1100..11..  NNoommss eett llooccaalliissaattiioonnss

 La premi�re chose que votre navigateur doit faire est d'�tablir une
 connexion r�seau avec la machine sur laquelle se trouve le document.
 Pour faire cela, il doit tout d'abord trouver la localisation r�seau
 de _l_'_h_�_t_e sunsite.unc.edu (h�te est un raccourci pour `machine h�te'
 ou `h�te r�seau' ; sunsite.unc.edu est un _n_o_m _d_'_h_�_t_e _(_h_o_s_t_n_a_m_e_)
 typique). La localisation correspondante est en fait un nombre appel�
 _a_d_r_e_s_s_e _I_P (nous expliquerons la partie `IP' de ce terme plus tard).

 Pour faire cela, votre navigateur sollicite un programme nomm� _s_e_r_v_e_u_r
 _d_e _n_o_m_s. Le serveur de noms peut r�sider sur votre machine, mais il
 est plus probable qu'il soit sur une machine de service avec laquelle
 vous pouvez dialoguer. Lorsque vous abonnez chez un Fournisseur
 d'Acc�s � Internet (FAI), une partie de la proc�dure d'installation
 d�crit certainement la mani�re d'indiquer � votre logiciel Internet
 l'adresse IP du serveur de noms du r�seau du FAI.

 Les serveurs de noms sur diff�rentes machines communiquent avec les
 autres en �changeant et en gardant � jour toutes les informations
 n�cessaires � la r�solution de noms d'h�te (en les associant � des
 adresses IP). Votre serveur de noms doit demander � trois ou quatre
 sites � travers le r�seau afin de r�soudre sunsite.unc.edu, mais cela
 se d�roule vraiment rapidement (en moins d'une seconde).

 Le serveur de noms dira � votre navigateur que l'adresse IP de Sunsite
 est 152.2.22.81 ; sachant cela, votre machine sera capable d'�changer
 des bits avec Sunsite directement.



 1100..22..  PPaaqquueettss eett rroouutteeuurrss

 Ce que le navigateur veut faire est d'envoyer une commande au serveur
 Web sur Sunsite qui a la forme suivante :


 GET /LDP/HOWTO/Fundamentals.html HTTP/1.0



 Que se passe-t-il alors ? La commande est faite de _p_a_q_u_e_t_s ; un bloc
 de bits comme un t�l�gramme est d�coup� en trois choses importantes :
 _l_'_a_d_r_e_s_s_e _s_o_u_r_c_e (l'IP de votre machine), _l_'_a_d_r_e_s_s_e _d_e_s_t_i_n_a_t_i_o_n
 (152.2.22.81), et le _n_u_m_�_r_o _d_e _s_e_r_v_i_c_e ou _n_u_m_�_r_o _d_e _p_o_r_t (80, dans ce
 cas) qui indique que c'est une requ�te World Wide Web.

 Alors votre machine envoie le paquet par le fil (de la connexion modem
 avec votre FAI, ou le r�seau local) jusqu'� ce qu'il rencontre une
 machine sp�cialis�e appel�e _r_o_u_t_e_u_r. Le routeur poss�de une carte de
 l'Internet dans sa m�moire -- pas une compl�te mais une qui d�crit
 votre voisinage r�seau et sait comment aller aux routeurs pour les
 autres voisinages sur l'Internet.

 Votre paquet peut passer � travers plusieurs routeurs sur le chemin de
 sa destination. Les routeurs sont adroits. Ils regardent combien de
 temps prend un accus� r�ception pour recevoir un paquet. Ils utilisent
 cette information pour aiguiller le trafic sur les liens rapides. Ils
 l'utilisent pour s'apercevoir que d'autres routeurs (ou un c�ble) sont
 d�connect�s du r�seau et modifier le chemin si possible en trouvant
 une autre route.

 Il existe une l�gende urbaine qui dit qu'Internet a �t� con�u pour
 survivre a une guerre nucl�aire. Ce n'est pas vrai, mais la conception
 d'Internet est extr�mement bonne en ayant une performance fiable bas�
 sur des couches mat�rielles d'un monde incertain... C'est directement
 du au fait que son intelligence est distribu�e � travers des milliers
 de routeurs plut�t qu'� quelques auto-commutateurs massifs (comme le
 r�seau t�l�phonique). Cela veut dire que les d�faillances tendent �
 �tre bien localis�es et le r�seau peut les contourner.

 Une fois que le paquet est arriv� � destination, la machine utilise le
 num�ro de service pour le fournir au serveur Web. Le serveur Web peut
 savoir � qui r�pondre en regardant l'adresse source du paquet. Quand
 le serveur Web renvoie ce document, il sera coup� en plusieurs
 paquets. La taille des paquets varie en fonction du m�dia de
 transmission du r�seau et du type de service.



 1100..33..  TTCCPP eett IIPP

 Pour comprendre comment des transmissions de multiples paquets sont
 r�alis�es, vous devez savoir que l'Internet utilise actuellement deux
 protocoles empil�s l'un sur l'autre.

 Le plus bas niveau, _I_P (Internet Protocol), sait comment recevoir des
 paquets individuels d'une adresse source vers une adresse destination
 (c'est pourquoi elles sont appel�es adresses IP). Cependant, IP n'est
 pas fiable ; si un paquet est perdu ou jet�, les machines source et
 destination ne le sauront jamais. Dans le jargon r�seau, IP est un
 protocole _s_a_n_s _c_o_n_n_e_x_i_o_n _(_o_u _m_o_d_e _n_o_n _c_o_n_n_e_c_t_�_) ; l'exp�diteur envoie
 juste un paquet au destinataire et n'attend jamais un accus� de
 r�ception.

 Cependant, IP est rapide et peu co�teux. Quelquefois, rapide, peu
 co�teux et non fiable c'est OK. Lorsque vous jouez en r�seau � Doom ou
 Quake, chaque balle est repr�sent�e par un paquet IP. Si quelques-unes
 sont perdues, c'est OK.

 Le niveau sup�rieur, _T_C_P (Transmission Control Protocol), fournit la
 fiabilit�. Quand deux machine n�gocient une connexion TCP (ce qu'elles
 font en utilisant IP), le destinataire doit envoyer des accus�s de
 r�ception des paquets qu'il re�oit � l'exp�diteur. Si l'exp�diteur ne
 re�oit pas un accus� de r�ception pour un paquet apr�s un certain
 temps, il renvoie ce paquet. De plus, l'exp�diteur donne � chaque
 paquet TCP un num�ro de s�quence, que le destinataire peut utiliser
 pour r�-assembler les paquets dans le cas o� il sont arriv�s dans le
 d�sordre. (Cela peut arriver si les liens r�seau se r�tablissent ou
 cassent pendant une connexion.)

 Les paquets TCP/IP contiennent �galement un checksum pour permettre la
 d�tection de donn�es alt�r�es par de mauvais liens. Ainsi, du point de
 vue de quelqu'un utilisant TCP/IP et des serveurs de noms, il
 ressemble � une voie fiable pour faire passer des flux d'octets entre
 des paires h�te/num�ro de services. Les gens qui �crivent des
 protocoles r�seau ne doivent pas se soucier la plupart du temps de la
 taille des paquets, du r�-assemblage des paquets, de la v�rification
 d'erreurs, le calcul du checksum et la retransmission qui sont au
 niveau inf�rieurs.



 1100..44..  HHTTTTPP,, uunn pprroottooccoollee dd''aapppplliiccaattiioonn

 Maintenant revenons � notre exemple. Les navigateurs et les serveurs
 Web parlent un _p_r_o_t_o_c_o_l_e _d_'_a_p_p_l_i_c_a_t_i_o_n qui est au dessus de TCP/IP, en
 l'utilisant simplement comme une mani�re de passer des cha�nes
 d'octets dans les deux sens. Ce protocole est appel� _H_T_T_P (Hyper-Text
 Transfer Protocol) et nous en avons d�j� vu une commande -- la
 commande GET utilis�e ci-dessus.

 Lorsque la commande GET arrive au serveur Web de sunsite.unc.edu avec
 comme num�ro de service 80, elle sera exp�di�e � un _d_�_m_o_n _s_e_r_v_e_u_r qui
 �coute le port 80. La plupart des services Internet sont impl�ment�s
 par des d�mons serveurs qui ne font rien d'autre qu'attendre sur des
 num�ros de port, r�colter et ex�cuter les commandes entrantes.


 Cette conception de l'Internet a une r�gle qui prime sur les autres,
 c'est que toutes les parties sont le plus simple possible et
 humainement accessible. HTTP, et ses comp�res (comme le Simple Mail
 Transfer Protocol, _S_M_T_P, qui est utilis� pour transporter du courrier
 �lectronique entre des machines) utilisent de simples commandes de
 texte qui se terminent par un retour chariot.


 C'est rarement inefficace ; dans certaines circonstances vous pouvez
 obtenir plus de rapidit� en employant un protocole binaire fortement
 cod�. Mais l'exp�rience a montr� que le b�n�fice d'avoir des commandes
 qui sont faciles � d�crire et � comprendre l'emportent sur le gain
 marginal de l'efficacit� que l'on peut esp�rer au prix de choses
 compliqu�es et compactes.

 Par cons�quent, ce que le d�mon serveur vous renvoie via TCP/IP est
 aussi du texte. Le d�but de la r�ponse ressemblera � quelque chose
 comme (quelques en-t�tes ont �t� supprim�s) :


 HTTP/1.1 200 OK
 Date: Sat, 10 Oct 1998 18:43:35 GMT
 Server: Apache/1.2.6 Red Hat
 Last-Modified: Thu, 27 Aug 1998 17:55:15 GMT
 Content-Length: 2982
 Content-Type: text/html



 Ces en-t�tes seront suivis d'une ligne vide et du texte de la page Web
 (apr�s que la connexion sera rompue). Votre navigateur affichera
 simplement cette page. Les en-t�tes indiquent -- en particulier, l'en-
 t�te Type de Contenu (Content-Type) -- comment les donn�es re�ues sont
 vraiment du HTML).