2009-09-20 12:34:28 +02:00
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
2004-04-12 19:58:01 +02:00
|
|
|
|
<!DOCTYPE html
|
|
|
|
|
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
|
|
|
|
"tuteurs://DTD/tml.dtd">
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>Internet</title>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
<h1>Comment marche Internet</h1>
|
|
|
|
|
|
|
|
|
|
<h2>Relier les ordinateurs</h2>
|
|
|
|
|
|
|
|
|
|
<h3>Le principe</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Un câble, d'un côté quelqu'un qui envoit du courant par intermittence, de
|
2004-04-12 19:58:01 +02:00
|
|
|
|
l'autre quelqu'un qui regarde quand il y a du courant. C'est le principe du
|
2009-09-20 12:27:14 +02:00
|
|
|
|
télégraphe, avec le code Morse. Et ça s'adapte vraiment parfaitement aux
|
|
|
|
|
ordinateurs. Les ordinateurs peuvent même faire mieux : ils ont des
|
|
|
|
|
métronomes (dans le domaine informatique on parle d'horloges) qui battent
|
|
|
|
|
très précisément la mesure ; à chaque tic, ils peuvent envoyer ou pas le
|
|
|
|
|
courant, ça fait un bit d'information à chaque fois.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Nous ne rentrerons pas dans les détails de la réalisatoin physique : ça
|
|
|
|
|
peut aller d'une bête paire de fils sur à peine plus d'un mètre à un
|
|
|
|
|
faisceau de fibres optiques, en passant par un câble coaxial. Ça peut
|
|
|
|
|
également être des ondes radio, ou bien le fait de dire ou de ne pas dire
|
|
|
|
|
bip sur une ligne téléphonique. Bref, il y a plein de manières pour deux
|
2004-04-12 19:58:01 +02:00
|
|
|
|
ordinateurs de se dire 0 ou 1.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Ça, c'est bien pour relier deux ordinateurs. Mais comment faire s'il y en a
|
|
|
|
|
plusieurs ? Tirer un câble entre chaque paire n'est pas envisageable. La
|
|
|
|
|
solution la moins coûteuse, et donc celle qui a été rapidement préférée, est
|
|
|
|
|
d'utiliser un seul câble qui connecte tous les ordinateurs. Quand un
|
|
|
|
|
ordinateur veut parler, il parle à tous les autres, et il faut inventer des
|
|
|
|
|
moyens pour que deux ne parlent pas en même temps. Le système de ce genre le
|
|
|
|
|
plus répandu consiste en un câble coaxial où tous les ordinateurs sont
|
|
|
|
|
branchés en sérié ; plus récemment on a adopté une structure en étoile
|
|
|
|
|
autour d'un appareil bon marché appelé hub, plus efficace et plus robuste
|
|
|
|
|
que la structure en série.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Plusieurs ordinateurs, c'est bien, mais relier beaucoup d'ordinateur, c'est
|
2009-09-20 12:27:14 +02:00
|
|
|
|
mieux. La technologie des câbles impose des limites de longueur, et il est
|
|
|
|
|
rarement possible de relier directement un câble coaxial de réseau
|
|
|
|
|
domestique à un faisceau de fibres optiques transatlantique. La solution
|
|
|
|
|
consiste alors à avoir une machine branchée sur les deux (ou plus) réseaux,
|
|
|
|
|
avec pour tâche de faire suivre l'information de l'un à l'autre ; quand un
|
|
|
|
|
ordinateur d'un réseau veut parler à un ordinateur de l'autre réseau, il
|
|
|
|
|
adresse son message à cette machine, avec une étiquette indiquant le
|
2004-04-12 19:58:01 +02:00
|
|
|
|
destinataire. On appelle une telle machine un <dfn>routeur</dfn>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h3>Comment on fait, en vrai, sur Internet</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Pour les réseaux locaux (les
|
2004-04-12 19:58:01 +02:00
|
|
|
|
<abbr lang="en" title="Local Area Network">LAN</abbr> quand on veut faire
|
2009-09-20 12:27:14 +02:00
|
|
|
|
moderne), la technologie employée est <dfn>ethernet</dfn>. Elle fonctionne
|
|
|
|
|
soit avec un câble coaxial en série, soit avec un câble simple (à huit fils
|
|
|
|
|
dont peu sont vraiment utilisés) organisé en étoile autour d'un hub. Avec
|
|
|
|
|
ethernet, les données sont envoyées par blocs appelés trames qui font au
|
|
|
|
|
plus environ 1,5 ko. Il n'y a pas de système pour s'assurer <i>a priori</i>
|
|
|
|
|
que deux ordinateurs sur le câble ne parlent pas en même temps : la
|
|
|
|
|
détection se fait <i>a posteriori</i> par le fait que le signal est alors
|
|
|
|
|
incompréhensible ; les deux ordinateurs réémettent alors après un délai
|
|
|
|
|
aléatoire, qui sera probablement différent ; en pratique, ce système marche
|
|
|
|
|
plutôt bien.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Au début de chaque trame ethernet, ou trouve ce qu'on appelle un
|
|
|
|
|
<dfn>entête</dfn> : quelques octets réservés par le protocole ethernet
|
|
|
|
|
lui-même pour son fonctionnement interne. Toutes les cartes réseau ethernet
|
|
|
|
|
possèdent une adresse
|
2004-04-12 19:58:01 +02:00
|
|
|
|
<abbr lang="en" title="Media Access Control">MAC</abbr> depuis l'usine (mais
|
|
|
|
|
les cartes modernes permettent de la changer), qui est code unique de six
|
|
|
|
|
octets. Par exemple clipper a pour adresse MAC
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<code>08:00:20:b0:24:32</code>. Dans l'entête ethernet, on trouve l'adresse
|
|
|
|
|
MAC de l'ordinateur auquel la trame est adressée (ainsi que celle de
|
2004-04-12 19:58:01 +02:00
|
|
|
|
l'ordinateur qui envoit). En temps normal, le filtrage se fait directement
|
2009-09-20 12:27:14 +02:00
|
|
|
|
au niveau de la carte réseau, de sorte que parmi les ordinateurs sur un même
|
|
|
|
|
câble, seul celui qui est concerné voit effectivement un message.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Dans l'entête ethernet, on trouve également un numéro de protocole. C'est un
|
|
|
|
|
petit nombre, sur deux octets, qui décrit très brièvement ce qu'on prévoit
|
|
|
|
|
de faire avec les données de la trame.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
L'<abbr lang="en" title="Internet Assigned Numbers Authority">IANA</abbr>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
tient à jour une
|
|
|
|
|
<a href="http://www.iana.org/assignments/ethernet-numbers">table des numéros
|
|
|
|
|
ethernet</a> attribués. Ainsi, le système d'exploitation de l'ordinateur qui
|
|
|
|
|
a reçu la trame peut immédiatement appeler le bon sous-système, ou ignorer
|
2004-04-12 19:58:01 +02:00
|
|
|
|
la trame s'il ne sait pas quoi en faire. Pour illustrer, quand on utilise
|
2009-09-20 12:27:14 +02:00
|
|
|
|
ethernet pour faire passer de l'« Internet », le numéro est 513. Ce
|
|
|
|
|
mécanisme de numéros décrivant le genre d'utilisation d'un système est très
|
|
|
|
|
général, et on le retrouve à tous les niveaux des protocoles Internet.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Quand on utilise une ligne téléphonique, le protocole employé est le
|
|
|
|
|
<span lang="en">Point to Point</span> (PPP). Il a des mécanismes différents
|
2004-04-12 19:58:01 +02:00
|
|
|
|
parce qu'il ne relie que deux ordinateurs, mais sous des contraintes
|
2009-09-20 12:27:14 +02:00
|
|
|
|
différentes (ligne moins fiable et temps de latence supérieur).
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<h2>Relier les réseaux</h2>
|
2004-04-12 19:58:01 +02:00
|
|
|
|
|
|
|
|
|
<h3>Le routage</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Mettez une lettre à la poste. Si le destinataire habite dans la même ville,
|
|
|
|
|
elle lui sera distribuée directement. S'il habite dans une ville voisine, le
|
|
|
|
|
facteur transmet la lettre à son collègue de cette ville. S'il habite plus
|
|
|
|
|
loin, le facteur transmettra la lettre au centre de tri dont il dépend. Et à
|
|
|
|
|
son tour, le centre de tri va faire suivre la lettre à qui de droit. La
|
|
|
|
|
lettre va donc passer par différentes étapes où elle sera redirigée en
|
|
|
|
|
fonction de l'adresse qui est écrite dessus.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Les réseaux informatiques, dès qu'ils dépassent les quelques dizaines de
|
|
|
|
|
machines qu'on peut brancher sur un même câble, fonctionnent de la même
|
|
|
|
|
manière : les données sont découpées en <dfn>paquets</dfn>, qui jouent le
|
|
|
|
|
rôle de notre enveloppe. Quand il n'est pas possible de transmettre le
|
|
|
|
|
paquet directement à son destinataire, il est transmis à un ordinateur
|
|
|
|
|
(défini dans la configuration du réseau) appelé <dfn>routeur</dfn>. Cet
|
|
|
|
|
ordinateur est censé être capable de faire suivre le paquet ; ça suppose par
|
|
|
|
|
exemple qu'il est relié par un autre câble à un autre réseau.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Pour pouvoir marcher, ce système a besoin que les ordinateurs soient dotés
|
|
|
|
|
d'une adresse qui reflète leur position dans le réseau global. L'adresse MAC
|
|
|
|
|
ne convient pas pour cette tâche, d'une part parce que elle est (plus ou
|
|
|
|
|
moins) immuable et ne correspond en rien à la position sur le réseau (un
|
|
|
|
|
portable qu'on débranche d'un endroit et rebranche a un autre ne change pas
|
|
|
|
|
d'adresse MAC), et d'autre part parce qu'on souhaite que ça fonctionne avec
|
|
|
|
|
différents types de connexion (les modems pour les connexions PPP, par
|
|
|
|
|
exemple, n'ont pas d'adresse MAC). On invente alors un nouveau système
|
|
|
|
|
d'adresses, indépendant du protocole utilisé pour connecter les ordinateurs.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h3>Le protocole IP</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Ce qui fait Internet, c'est
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<abbr lang="en" title="Internet Protocol">IP</abbr> (et l'on découvre que le
|
|
|
|
|
titre de cette section est un pléonasme). Ce protocole décrit la structure
|
|
|
|
|
des adresses utilisée, la manière d'écrire ces adresses dans les paquets, et
|
2004-04-12 19:58:01 +02:00
|
|
|
|
les moyens d'assurer leur bonne circulation.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Nous utilisons actuellement la version 4 d'IP, ce qu'on indique parfois par
|
2009-09-20 12:27:14 +02:00
|
|
|
|
IPv4. Dans cette version, les adresses sont constituées de 32 chiffres
|
|
|
|
|
binaires (bits), ce qu'on écrit généralement sous la forme de quatre nombres
|
2004-04-12 19:58:01 +02:00
|
|
|
|
entre 0 et 255. Par exemple, l'adresse IP de clipper est 129.199.129.1. Une
|
2009-09-20 12:27:14 +02:00
|
|
|
|
nouvelle version d'IP, IPv6, est progressivement mis en place ; les adresses
|
|
|
|
|
y font 128 bits, et sont écrites en hexadécimal ; l'ENS n'est pas reliée en
|
2004-04-12 19:58:01 +02:00
|
|
|
|
IPv6, mais si vous voulez un exemple, 2001:660:3001:4002:2C0:4FFF:FE4E:41D3
|
|
|
|
|
est l'adresse IPv6 du serveur web de
|
|
|
|
|
<a href="http://www.renater.fr/">Renater</a>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Tout ordinateur relié à Internet possède (au moins) une adresse IP, et il
|
|
|
|
|
est le seul à la posséder (dans Internet). Ces adresses sont structurées en
|
|
|
|
|
réseaux et sous-réseaux, en fixant les chiffres de gauche à droite. Ainsi,
|
2004-04-12 19:58:01 +02:00
|
|
|
|
toutes les adresses en 129.199.x.y sont dans l'ENS, et celles en
|
2009-09-20 12:27:14 +02:00
|
|
|
|
129.199.129.y sont plus particulièrement dans la salle S. De l'extérieur,
|
|
|
|
|
quelqu'un qui veut envoyer un paquet à 129.199.129.1 a seulement à savoir
|
|
|
|
|
qu'il doit l'envoyer à l'ENS. C'est ensuite à nos routeurs de finir le
|
2004-04-12 19:58:01 +02:00
|
|
|
|
travail.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Les paquets IP comportent tous l'adresse IP de l'expéditeur, celle du
|
|
|
|
|
destinataire, une somme de contrôle qui permet de vérifier qu'il est intact,
|
|
|
|
|
et un numéro de protocole indiquant à quoi va servir ce paquet. Ils
|
|
|
|
|
comportent également un compteur qui limite le nombre de routeurs par lequel
|
|
|
|
|
il peut passer (de manière à ce qu'un paquet perdu ne reste pas éternellement
|
|
|
|
|
à circuler entre des routeurs mal configurés), ainsi que quelques autres
|
2004-04-12 19:58:01 +02:00
|
|
|
|
options. Un des principes d'Internet, c'est que les routeurs font le strict
|
2009-09-20 12:27:14 +02:00
|
|
|
|
minimum : ils doivent se contenter de faire suivre les paquets sans les
|
|
|
|
|
altérer (sauf le compteur ; si un paquet a atteint la limite, le routeur
|
|
|
|
|
l'arrête et envoit un paquet à l'expéditeur pour signaler l'erreur). Un des
|
|
|
|
|
autres principes est que tous les ordinateurs sont égaux : du point de vue
|
2004-04-12 19:58:01 +02:00
|
|
|
|
du protocole, rien ne distingue le super ordinateur central de la NASA de
|
2009-09-20 12:27:14 +02:00
|
|
|
|
votre petit PC personnel ; en particulier, rien ne distingue un serveur d'un
|
2004-04-12 19:58:01 +02:00
|
|
|
|
poste client.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
IP est conçu sur un principe de <span lang="en">best effort</span> (meilleur
|
|
|
|
|
effort) : les infrastructures (les routeurs) font leur possible pour faire
|
|
|
|
|
parvenir vos paquets, mais sans aucune garantie. Un paquet peut disparaître
|
2004-04-12 19:58:01 +02:00
|
|
|
|
sans laisser de trace, ou bien se perdre au mauvais endroit (mais il n'ira
|
2009-09-20 12:27:14 +02:00
|
|
|
|
en général pas bien loin), ou encore être retardé et arriver après un paquet
|
|
|
|
|
pourtant parti plus tard. Il arrive même qu'un paquet arrive en plusieurs
|
|
|
|
|
exemplaires. Bien sûr, <em>en général</em>, les paquets arrivent bien, et
|
|
|
|
|
dans l'ordre. Ce principe du meilleur effort a l'avantage d'être simple et
|
|
|
|
|
léger ; il est ensuite possible de concevoir un système d'accusés de
|
|
|
|
|
réception et de numéros d'ordre pour assurer la fiabilité de la
|
2004-04-12 19:58:01 +02:00
|
|
|
|
transmission.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h2>Relier les programmes</h2>
|
|
|
|
|
|
|
|
|
|
<h3>Trier les paquets</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
C'est bien gentil de dire que votre ordinateur peut envoyer des paquets qui
|
2009-09-20 12:27:14 +02:00
|
|
|
|
arriveront (peut-être) à n'importe quel ordinateur dans le monde, mais vous,
|
|
|
|
|
ce qui vous intéresse, c'est de surfer sur le web et d'envoyer du courrier
|
|
|
|
|
en même temps, et que les informations arrivent. Pourtant, le web et le
|
|
|
|
|
courrier électronique ne sont pas toujours dans le même logiciel : il faut
|
|
|
|
|
donc que plusieurs applications puissent se partager le réseau, et que l'une
|
|
|
|
|
n'aille pas recevoir les données de l'autre.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Quand on programme une application réseau, on amierait en général avoir une
|
|
|
|
|
sorte de tuyau : tout ce qu'on dit d'un côté, l'application à l'autre bout
|
|
|
|
|
le reçoit, dans l'ordre, sans perte, et une seule fois, et inversement, on
|
|
|
|
|
reçoit tout ce qu'elle dit. Si les ordinateurs aux deux bouts sont d'accord,
|
|
|
|
|
un tel tuyau peut être simulé : on découpe ce qui doit passer dans le tuyau
|
|
|
|
|
en morceaux assez petits pour tenir dans des paquets, et on les expédie avec
|
|
|
|
|
un numéro d'ordre ; à l'autre bout, l'ordinateur répond par un paquet
|
|
|
|
|
accusant la réception, et utilise les numéros pour remettre de l'ordre. Si
|
|
|
|
|
on constate qu'un accusé de réception tarde, on réexpédie le paquet
|
|
|
|
|
incriminé, au pire il arrivera en double et ce n'est pas grave.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Tant qu'on en est à rajouter des numéros aux paquets, on peut ajouter encore
|
|
|
|
|
quelques informations. Par exemple l'identité du programme qui l'a envoyé,
|
|
|
|
|
ou l'identité du programme qui doit le recevoir. Avec tout ça, on peut
|
|
|
|
|
concevoir des <dfn>connexions</dfn> réseau : un tuyau virtuel entre un
|
|
|
|
|
ordinateur et un autre, avec une extrémité qui envoit des paquets, attend
|
|
|
|
|
des accusés de réception, et réexpédie les paquets qui se perdent, et
|
|
|
|
|
l'autre extrémité qui reçoit les paquets et les remet dans l'ordre. Quand un
|
|
|
|
|
paquet arrive sur un ordinateur, le système réseau consulte son contenu pour
|
|
|
|
|
voir ses références, et trouve dans ses tables à quelle connexion il
|
2004-04-12 19:58:01 +02:00
|
|
|
|
appartient.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Tout ceci est normalement fait par le système d'exploitation des
|
|
|
|
|
ordinateurs, et caché aux programmes. Les programmes, eux, se contentent de
|
|
|
|
|
réclamer une connexion, et ensuite d'utiliser le tuyau. Les données passent,
|
|
|
|
|
ils n'ont pas à se soucier de toute la machinerie interne.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h3>Le protocole TCP</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Sur internet, le protocole qui sert à établir des connexions est
|
2004-04-12 19:58:01 +02:00
|
|
|
|
<abbr lang="en" title="Transmission Control Protocol">TCP</abbr>. Pour
|
2009-09-20 12:27:14 +02:00
|
|
|
|
distinguer les connexions, TCP utilise un <dfn>numéro de port</dfn>, un
|
2004-04-12 19:58:01 +02:00
|
|
|
|
petit nombre (entre 1 et 65535), qu'on peut voir un peu comme le casier d'un
|
2009-09-20 12:27:14 +02:00
|
|
|
|
élève, alors que l'adresse IP correspond à « 45 rue d'Ulm ». Une connexion est
|
|
|
|
|
identifiée par quatre données :
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
<ul>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li>l'adresse IP de l'ordinateur de départ ;</li>
|
|
|
|
|
<li>le port sur cet ordinateur ;</li>
|
|
|
|
|
<li>l'adresse IP de l'ordinateur d'arrivée ;</li>
|
2004-04-12 19:58:01 +02:00
|
|
|
|
<li>le port sur cet ordinateur</li>
|
|
|
|
|
</ul>
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Chaque paquet échangé dans le cadre d'une connexion rappelle ces quatre
|
|
|
|
|
références. On peut remarquer que sur un ordinateur donné, le même port peut
|
|
|
|
|
participer à plusieurs connexions. De fait, ça arrive assez souvent, mais
|
|
|
|
|
jamais aux deux extrémités à la fois (même si rien ne l'interdit
|
2004-04-12 19:58:01 +02:00
|
|
|
|
fondamentalement).
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Les connexions TCP sont toujours doubles : dans un sens et dans l'autre
|
|
|
|
|
entre les mêmes extrémités.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Du point de vue du programme, une connexion est un objet sur lequel on peut
|
2009-09-20 12:27:14 +02:00
|
|
|
|
lire et écrire des données. Sous Unix, ça se présente presque de la même
|
|
|
|
|
manière qu'un fichier. Le système d'exploitation sait à quel programme
|
|
|
|
|
chaque connexion active « appartient », et fait tout le nécessaire.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h3>Clients et serveurs</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Comme dans toutes relations de couple, aux débuts d'une connexion, il faut
|
2004-04-12 19:58:01 +02:00
|
|
|
|
que l'un des deux fasse le premier pas, alors que l'autre se contente
|
2009-09-20 12:27:14 +02:00
|
|
|
|
d'attendre. En informatique, l'extrémité de la future connexion qui attend
|
2004-04-12 19:58:01 +02:00
|
|
|
|
s'appelle un <dfn>serveur</dfn> (eh oui, c'est le contraire du restaurant,
|
2009-09-20 12:27:14 +02:00
|
|
|
|
où le serveur vient à votre table prendre la commande), tandis que
|
|
|
|
|
l'extrémité qui fait le premier pas (qui envoit le premier paquet) s'appelle
|
|
|
|
|
le <dfn>client</dfn>. Après l'échange de quelques paquets (trois, avec TCP)
|
|
|
|
|
pour vérifier qu'il y a bien un serveur au port demandé, pour se mettre
|
|
|
|
|
d'accord sur la taille des paquet, etc., la connexion est établié.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Une fois que c'est fait, il n'y a du point de vue du réseau plus de
|
|
|
|
|
différence entre les deux extrémités. Cependant, le dialogue entre les
|
|
|
|
|
programmes ne sera probablement pas symétrique : une fois une connexion
|
|
|
|
|
établie entre votre navigateur web et
|
2004-04-12 19:58:01 +02:00
|
|
|
|
<a href="http://www.google.com/">Google</a>, c'est bien votre navigateur web
|
2009-09-20 12:27:14 +02:00
|
|
|
|
qui va poser une question à Google et non l'inverse. Il arrive néanmoins que
|
|
|
|
|
ça finisse par être symétrique, en particulier dans le cas de dialogue en
|
|
|
|
|
direct (avec ytalk par exemple) ou de jeux en réseau sans serveur central.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
L'important est que les deux extrémités se comprennent. Pour ça, elles
|
|
|
|
|
doivent encore une fois coder leurs données d'une certaine manière : encore
|
|
|
|
|
un protocole. Cette manière n'est d'ailleurs pas la même s'il s'agit de web,
|
|
|
|
|
de mail, ou d'autres activités tout aussi passionnantes.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Les plus attentifs doivent se poser une question : il y a sur l'ordinateur
|
|
|
|
|
de Google (dont l'adresse IP est 216.239.59.99) 65535 ports différents,
|
|
|
|
|
comment notre navigateur web a-t-il deviné le quel contacter ? La réponse
|
|
|
|
|
est simple : le web, c'est sur le port 80. Pourquoi 80 ? C'est comme ça. Les
|
|
|
|
|
services importants ont des numéros de port qui leur sont dédiés, l'IANA les
|
2004-04-12 19:58:01 +02:00
|
|
|
|
<a href="http://www.iana.org/assignments/port-numbers">recense</a>. Les
|
2009-09-20 12:27:14 +02:00
|
|
|
|
services moins répandus prennent un port plus ou moins au hasard, en
|
|
|
|
|
espérant ne pas entrer en conflit avec un autre service, et comme c'est la
|
|
|
|
|
même personne qui écrit les programme client et serveur c'est le même qui
|
|
|
|
|
est utilisé des deux côtés.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Sous Unix, il faut des droits spéciaux pour créer un serveur sur un port en
|
|
|
|
|
dessous de 1024, ce qui permet d'être sûr, quand on donne son mot de passe à
|
|
|
|
|
SSH (port 23) ou à IMAP (port 143), d'être bien en train de parler au
|
|
|
|
|
programme autorisé. Au dessus de 1024, c'est libre. Certains se rappellent
|
|
|
|
|
peut-être que le serveur web des élèves était
|
2004-04-12 19:58:01 +02:00
|
|
|
|
<code>http://www.eleves.ens.fr<strong>:8080</strong>/</code>. Ceci veut dire
|
2009-09-20 12:27:14 +02:00
|
|
|
|
qu'il était sur le port 8080 au lieu du 80 habituel, justepent parce qu'il
|
|
|
|
|
aurait fallu des droits supplémentaires pour avoir 80.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Pour le client, c'est en général plus simple : le programme laisse le
|
|
|
|
|
système d'exploitation choisir un port inutilisé. Certains programmes
|
2004-04-12 19:58:01 +02:00
|
|
|
|
forcent l'utilisation d'un port en dessous de 1024 pour prouver qu'ils ne
|
2009-09-20 12:27:14 +02:00
|
|
|
|
sont pas n'importe quel utilisateur, mais cette pratique tombe en désuétude
|
|
|
|
|
au profit de méthodes cryptographiques.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h2>Plus pour nous faciliter la vie</h2>
|
|
|
|
|
|
|
|
|
|
<h3>Le DNS</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Se rappeler les adresses IP, ce n'est pas facile. Et ce sera encore pire
|
2009-09-20 12:27:14 +02:00
|
|
|
|
avec IPv6. Mais le problème n'est pas nouveau : on a le même avec les
|
|
|
|
|
numéros de téléphone, et pour le résoudre on a inventé l'annuaire.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
L'annuaire pour Internet s'appelle le
|
|
|
|
|
<abbr lang="en" title="Domain Name System">DNS</abbr>, et fonctionne bien
|
2009-09-20 12:27:14 +02:00
|
|
|
|
entendu en réseau.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
À l'échelle d'un site, ou d'un fournisseur d'accès, il y a un (ou plusieurs)
|
2004-04-12 19:58:01 +02:00
|
|
|
|
ordinateur, que tous les autres connaissent par son adresse IP, et sur
|
2009-09-20 12:27:14 +02:00
|
|
|
|
lequel tourne un programme qui écoute sur le port 53 et qui se charge de
|
|
|
|
|
répondre aux questions du genre « quelle est l'adresse IP de
|
|
|
|
|
<code>www.google.com</code> ? ».
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Ce programme n'a en général pas la réponse, mais il a l'adresse d'autres
|
|
|
|
|
ordinateurs à qui demander, qui eux-mêmes peuvent ne pas savoir mais avoir
|
|
|
|
|
l'adresse d'autres ordinateurs, etc. Le système est hiérarchique. Il y a à
|
2004-04-12 19:58:01 +02:00
|
|
|
|
la racine quelques ordinateurs (une douzaine) qui savent qui s'occupe des
|
|
|
|
|
<code>.com</code>, qui s'occupe des <code>.org</code>, qui s'occupe des
|
|
|
|
|
<code>.fr</code>, etc. Dans le cas des <code>.fr</code>, il y a encore
|
2009-09-20 12:27:14 +02:00
|
|
|
|
quelques ordinateurs, gérés par des organismes français (enfin, pas tous),
|
|
|
|
|
qui savent à qui s'adresser pour chaque domaine. Et ainsi de suite.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Par exemple, pour connaître l'adresse de <code>clipper.ens.fr</code>, il
|
2004-04-12 19:58:01 +02:00
|
|
|
|
faut commencer par interroger l'un des serveurs racine, par exemple
|
2009-09-20 12:27:14 +02:00
|
|
|
|
198.41.0.4, qui répond qui'il ne sait pas, mais que les <code>.fr</code>
|
|
|
|
|
sont gérés par 192.93.0.1, 193.51.208.13, et quelques autres. Si on
|
2004-04-12 19:58:01 +02:00
|
|
|
|
interroge l'un d'entre eux, on apprend qu'il ne sait pas non plus, mais il
|
2009-09-20 12:27:14 +02:00
|
|
|
|
nous informe que <code>ens.fr</code> est géré par 129.199.96.11 (on
|
|
|
|
|
reconnaît le 129.199 : c'est un ordinateur de l'ENS) et quelques autres.
|
|
|
|
|
Enfin, on interroge 129.199.96.11, et on obtient la réponse, à savoir
|
2004-04-12 19:58:01 +02:00
|
|
|
|
129.199.129.1
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Bien sûr, tous les programmes pour faire ça sont déjà écrits : quand on
|
|
|
|
|
programme une nouvelle application réseau, il suffit d'utiliser la bonne
|
|
|
|
|
fonction de la bibliothèque standard.
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<div class="metainformation">
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Auteur : Nicolas George.
|
2009-09-27 22:00:55 +02:00
|
|
|
|
<date value="from git" />
|
2004-04-12 19:58:01 +02:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|