Vous êtes sur la page 1sur 40

Licence professionnelle dinformatique

Logiciels libres et propri


etaires pour les syst`
emes,
r
eseaux et bases de donn
ees.
Protocoles TCP-IP
Pascal Nicolas
U.F.R. Sciences de lUniversite dAngers
E-Mail : pascal.nicolas@univ-angers.fr
Web : http://www.info.univ-angers.fr/pub/pn

Adressage.
Nous nous interessons ici uniquement au protocole IPV4.

1.1

Organisations de ladressage.

Chaque ordinateur du reseau Internet dispose dune adresse IP codee sur 4 octets (32 bits)
qui doit etre unique au sein de linternet. Plus precisement, chaque interface dun materiel
dispose dune adresse IP particuli`ere. En effet, un meme routeur interconnectant plusieurs
reseaux differents poss`ede une adresse IP pour chaque interface de reseau. Une adresse IP est
toujours representee dans une notation decimale pointee constituee de 4 nombres (1 par octet)
compris chacun entre 0 et 255 et separes par un point. Ainsi 193.49.144.1 est ladresse IP
dune des principales machines du reseau de luniversite dAngers.

Fig. 1 Les cinq classes dadresses IP

Plus precisement, une adresse IP est constituee dune paire (identifiant de reseau, identifiant de machine) (on utilise aussi identifiant dinterface au lieu didentifiant de machine).
Larchitecture dadressage dorigine de linternet definissait cinq classes dadresse (A, B, C, D
1

et E) selon la valeur du premier octet de ladresse comme detaille dans la figure 1. Le tableau
ci-apr`es donne lespace dadresses possibles pour chaque classe.
classe
A
B
C
D
E

0.0.0.0
128.0.0.0
192.0.0.0
224.0.0.0
240.0.0.0

adresses
a` 127.255.255.255
a` 191.255.255.255
a` 223.255.255.255
a` 239.255.255.255
a` 247.255.255.255

Ainsi, les adresses de classe A etaient utilisees pour les tr`es grands reseaux comportant plus
de 216 = 65536 ordinateurs. Au niveau mondial, il ne pouvait donc exister plus de 127 tels
reseaux. Les adresses de classe B etaient utilisees pour les reseaux ayant entre 28 = 256 et
216 = 65536 ordinateurs, 14 bits definissent ladresse du reseau et 16 bits celle dune machine
sur le reseau. Seules 256 machines sont possibles sur un reseau de classe C dont le nombre
possible depassaient les 2 millions (= 221 ).
Au lieu dutiliser un adressage plat 1, 2, 3, ... la methode retenue est plus efficace car elle
permet une extraction rapide du numero de reseau `a linterieur dune adresse IP ce qui facilitera
le routage. Toutes les combinaisons mathematiquement possibles pour identifier un reseau ou
une machine ne sont pas permises car certaines adresses ont des significations particuli`eres.
0.0.0.0 est utilisee par une machine pour connatre sa propre adresse IP lors dune
processus damorcage par exemple
<id. de r
eseau nul>.<id. de machine> est egalement utilisee pour designer une machine sur son reseau lors dun boot egalement
<id. de r
eseau>.<id. de machine nul> nest jamais affectee a` une machine car elle
permet de designer le reseau lui-meme
<id. de r
eseau>.<id. de machine avec tous ses bits a
` 1> est une adresse de diffusion ou de broadcasting, cest-`a-dire quelle designe toutes les machines du reseau
concerne. Un datagramme adresse `a cette adresse sera ainsi envoye a` toutes les machines
du reseau.
255.255.255.255 est une adresse de diffusion locale car elle designe toutes les machines
du reseau auquel appartient lordinateur qui utilise cette adresse. Lavantage par rapport
a` ladresse precedente est que lemetteur nest pas oblige de connatre ladresse du reseau
auquel il appartient.
127.X.Y.Z est une adresse de rebouclage qui est utilisee pour permettre les communications inter-processus sur un meme ordinateur ou realiser des tests de logiciels car tout
logiciel de communication recevant des donnees pour cette adresse les retourne simplement
a` lemetteur.
Les adresses de classe A de 10.0.0.0 a` 10.255.255.255, de classe B de 172.16.0.0 a`
172.31.255.255 et de classe C de 192.168.0.0 a` 192.168.255.255 sont reservees `a la
constitution de reseaux prives autrement appeles intranet.
Cependant, ce syst`eme dadressage par classe sest revele inefficace devant la demande croissante dadresses IP. En effet, une entreprise voulant numeroter 2000 machines ne peut se contenter dun reseau de classe C. Par contre si on lui attribue un reseau de classe B, on perd plus de
60 000 adresses qui resteront inutilisees. On voit quaucune des classes nest satisfaisante.
Devant la penurie dadresses de classes B le syst`eme CIDR (Classless Inter Domain Routing
RFC 1518, 1519) est apparu en 1993 (aujourdhui voir la RFC 4632 http://www.ietf.org/
rfc/rfc4632.txt) Une telle adresse CIDR est de la forme A.B.C.D/M o`
u M est un entier appele
masque et compris entre 13 et 27. Ce masque designe le nombre de bits constituant lidentifiant
2

de reseaux dans ladresse A.B.C.D. Par exemple, dans 172.20.41.7/16, les 16 premiers bits de
ladresse designe le reseau qui est donc 172.20.0.0 et lidentifiant de machine est 0.0.41.7.
Le masque, ici egal `a 16, peut egalement etre donne sous la forme decimale 255.255.0.0
correspondant `a une adresse IP ayant ses 16 premiers bits a` 1.
Lutilisation de tous les masques possibles de 0 `a 32 bits permet de dimensionner des reseaux
de mani`ere plus precise et selon les possibilites suivantes par exemple.
masque equivalent en classe C nombre dadresses
...
...
...
/27
1/8
32
/26
1/4
64
...
...
...
/14
1 024
262 144
/13
2 048
524 288
...
...
...

Etant
donne une adresse IP donnee sous la forme CIDR comme 150.50.215.200/21 on
retrouve les identifiants de reseau et de machines en effectuant un et logique entre ladresse
compl`ete et le masque tous les deux mis sous forme binaire comme decrit ci-dessous.
adresse IP 150.50.215.200
masque (21) 255.255.248.0
adresse reseau
150.50.208.0
adresse machine
0.0.7.200

10010110.00110010.11010111.11001000
11111111.11111111.11111000.00000000
10010110.00110010.11010 000.00000000
00000000.00000000.00000 111.11001000

De cette mani`ere si une societe a besoin de 100 000 adresses on lui fournira une part de reseau
de classe A en lassociant `a un masque de 15 bits. Ainsi, elle disposera de 2(3215) = 131072
(la plus petite puissance de 2 superieure `a 100 000) adresses. Dans lancien syst`eme, un reseau
de classe B naurait pas ete suffisant et un reseau de classe A, avec ses 16 millions dadresses,
aurait ete largement surdimensionne.
Cette technique a permis dagreger des reseaux par region geographique et fournisseurs
dacc`es. Ce syst`eme de sur-reseau permet ainsi de faire apparatre dans les tables de routage

plusieurs reseaux sous le meme identifiant. Evidemment,


les reseaux agreges doivent avoir des
adresses contig
ues de mani`ere a` avoir des prefixes identiques. Par exemple, 193.127.32.0 et
193.127.33.0 peuvent etre agreges sous la notation 193.127.32.0 / 23. On peut donc voir
le reseau 193.127.32.0 / 23 comme un reseau de 512 machines, ou comme 2 reseaux de 256
machines chacun, car le 24e bit permet de coder lun ou lautre des 2 reseaux. Et ainsi, 1 seule
ligne dans la table de routage est suffisante pour traiter 2 reseaux simultanement.
De mani`ere locale a` un reseau dentreprise par exemple, la syst`eme CIDR peut permettre de
(re)decouper un reseau en sous-reseaux grace `a un masque de sous-reseau ou subnet netmask.
La figure 2 illustre le cas dun reseau X.Y.Z.0/24 decoupe en deux sous-reseaux X.Y.Z.0/25 et
X.Y.Z.128/25. Pour tout le reste de linternet, il nexiste quun seul reseau X.Y.Z.0/24 et tous
les routeurs traitent les datagrammes `a destination de ce reseau de la meme facon. Par contre,
le routeur R se sert du 25e bit (egal `a 0 ou 1) de ladresse contenue dans les datagrammes qui
lui proviennent pour les diriger vers le sous-reseau auquel ils sont destines, assurant ainsi un
routage hierarchique.
3

Fig. 2 Adressage de sous-reseau

1.2

Attribution dune adresse IP.

De mani`ere administrative, lobtention dune plage dadresses IP pour creer un nouveau


reseau est geree par lICANN de mani`ere decentralisee et hierarchique. Par exemple, pour
lEurope, cest le RIPE Network Coordination Centre (http://www.ripe.net) qui assure cette gestion. Dune mani`ere generale, les FAI (Fournisseurs dAcc`es `a Internet) disposent ainsi de plages dadresses qui leurs sont attribuees par lun de ces organismes (le document ftp://ftp.ripe.net/pub/stats/ripencc/membership/alloclist.txt donne la liste
des plages dadresses IP attribuees par le RIPE).
De mani`ere technique, une machine peut avoir une adresse IP statique, quelle conserve de
mani`ere permanente, ou dynamique, qui change (ou peut changer) `a chaque redemarrage ou
quand cette adresse nest plus valide. Par ailleurs, lattribution de cette adresse IP peut etre
realisee via une configuration manuelle, ou via le protocole DHCP (Dynamic Host Configuration Protocol). DHCP est un protocole client-serveur o`
u le client est une machine qui demande
a` sintegrer au reseau IP (( gere ))par le serveur DHCP. La principale phase du protocole se
decoupe en 4 etapes illustrees dans la figure3.
Tous les messages DHCP dun client vers un serveur sont envoyes dans des datagrammes
UDP adresses au port 67 et les messages dun serveur vers un client sont envoyes dans des
datagrammes UDP adresses au port 68.
1. DHCPDISCOVER : le client envoie en diffusion (`a ladresse IP 255.255.255.255) une
requete en specifiant 0.0.0.0 comme adresse IP dorigine puisquil ne poss`ede pas dadresse
IP pour linstant. Il indique aussi son adresse materielle et un numero de transaction. Ce
message est recu par toutes les machines du reseau, et notamment par les serveurs DHCP
qui vont y repondre.
2. DHCPOFFER : les serveurs DHCP repondent par un message contenant lidentifiant
de transaction, ladresse IP proposee, le masque de sous-reseau et la duree du bail (duree
de vie de cette adresse avant expiration).
3. DHCPREQUEST : le client accepte lune des propositions (a priori la premi`ere) et
repond en envoyant en diffusion un message contenant les divers param`etres.
4. DHCPACK : le serveur concerne confirme le bail et memorise de son cote que cette
adresse IP est desormais inutilisable jusqu`a sa liberation.
4

Fig. 3 DHCP

Les autres points du protocole sont geres par les messages suivants.
DHCPNACK : le serveur informe le client que le bail est termine
DHCPDECLINE : le client refuse ladresse IP car elle est dej`a utilisee
DHCPRELEASE : le client lib`ere ladresse IP et annule le bail
DHCPINFORM : le client poss`ede une IP et il demande des param`etres de configuration
locaux

Nommage.

Bien que la numerotation IP a` laide dadresses numeriques soit suffisante techniquement,


il est preferable pour un humain de designer une machine par un nom explicite. Mais se pose
alors le probl`eme de la definition des noms et de leur mise en correspondance avec les numeros
IP. Au debut des annees 80, le reseau ARPANET comportait un peu plus de 200 ordinateurs
et chacun possedait un fichier /etc/hosts identifiant les noms de ces ordinateurs suivis de leur
numero IP. Lorsquune modification intervenait, il suffisait de mettre a` jour ce fichier. Pour faire
face a` lexplosion du nombre dordinateurs relies `a Internet, il a ete mis en place un syst`eme de
base de donnees distribuees : le syst`eme de noms de domaines DNS (Domain Name System)
qui fournit la correspondance entre un nom de machine et son numero IP.
En fait, le DNS est un espace de noms hierarchise comme illustre dans la figure 4. Chaque
nud a un nom dau plus 63 caract`eres et la racine de larbre a un nom nul (les minuscules et majuscules sont indifferenciees). Une zone est un sous-arbre de cette hierarchie. Le
nom de domaine dun nud est la concatenation de son nom avec celui de ses ancetres
dans larbre. La responsabilite du nommage est subdivisee par niveau, les niveaux superieurs
delegant leur autorite aux sous-domaines quils creent eux-memes. Le syst`eme est gere au niveau mondial par lICANN. Des organismes ou societes assurent ce service par delegation pour
les sous-domaines. En France, lAFNIC (Association Francaise pour le Nommage Internet en
Cooperation http://www.afnic.fr assure ce service pour le domaine .fr.
Il faut bien avoir `a lesprit que le decoupage na dans certains cas aucune base geographique ;
5

Fig. 4 Syst`eme de noms de domaines.

on trouve des domaines .com partout dans le monde.


Le mecanisme qui permet la resolution dun nom en une adresse IP est geree par des serveurs
de noms qui representent une base de donnees distribuee des noms de domaine. Quand une
entite a recu lautorite de gerer une zone elle doit maintenir au moins deux serveurs de noms :
un primaire et un ou plusieurs secondaires. Les secondaires sont des serveurs redondants par
rapport au primaire de mani`ere a` faire face `a une defaillance dun syst`eme. Lorsquune machine
est ajoutee a` une zone, ladministrateur de la zone doit ajouter son nom et son numero IP sur
le serveur primaire qui se reconfigure alors en fonction de ces nouvelles donnees. Quant `a eux,
les serveurs secondaires interrogent reguli`erement (toutes les 3 h) le primaire et font les mises
a` jour necessaires en cas devolution de la base de donnees.
Les serveurs de noms peuvent fonctionner en mode recursif ou non, mais ils doivent toujours
implanter le mode non recursif. Dans tous les cas, lorsquun serveur de noms recoit une demande,
il verifie si le nom appartient `a lun des sous-domaines quil g`ere. Si cest le cas il traduit le
nom en une adresse IP en fonction de sa base de donnees et renvoie la reponse au demandeur
Sinon,
en mode non-recursif, le serveur indique au client un autre serveur de noms qui saura lui
repondre ou `a son tour transmettre la requete a` un autre serveur.
en mode recursif, cest le serveur qui se charge de linterrogation successive des serveurs
de noms et qui retourne finalement la reponse au client.
Dans tous les cas, lorsquun serveur ne sait pas repondre il utilise ladresse dun serveur de
nom hierarchiquement superieur qui connat le nom et ladresse IP de chaque serveur de noms
pour les domaines de ses sous-niveaux. Ce serveur de nom superieur renvoie alors ladresse dun
serveur de noms a` contacter. Et ainsi de suite, par interrogations successives de serveurs de
noms (soit par le client en mode non-recursif soit par le serveur lui-meme en mode recursif) le
client initial obtiendra ladresse demandee. Pour eviter de faire trop souvent de telles requetes,
tout serveur de noms stocke dans une memoire cache les correspondances (numero IP, nom de
6

machine) de mani`ere a` pouvoir fournir la reponse immediatement si une meme demande lui
parvient ulterieurement.

Fig. 5 Resolution de noms.


La figure 5 decrit la resolution (en mode non recursif) du nom du serveur web www.a.a
lorsque le navigateur sur la machine nav.b.a cherche a` joindre ce site.
1. Le navigateur envoie a` son DNS dns.b.a une requete de resolution pour le nom www.a.a
2. dns.b.a ne connaissant pas cette adresse, car elle ne depend pas de sa zone et quil ne
la pas dans son cache, transmet cette adresse a` dns.a puisque cest le DNS dautorite de
niveau superieur quil connat.
3. dns.a ne connaissant pas non plus ladresse demandee, renvoie au demandeur ladresse
dun ou plusieurs DNS pour le sous-domaine recherche a.a et auquel il a lui-meme delegue
son autorite.
4. Le serveur dns.b.a reemet sa requete vers ce nouveau DNS dns.a.a.
5. Le serveur dns.a.a connat ladresse demandee car la machine www.a.a appartient `a sa
zone et peut donc renvoyer ladresse IP demandee `a dns.b.a.
6. Le DNS memorise dans son cache la reponse et la retourne au demandeur initial : le
navigateur.
7. Le navigateur peut se connecter au serveur web desire.
La page http://media.pearsoncmg.com/aw/aw kurose network 2/applets/dns/dns.html propose une illustration de ce mecanisme.
Sous linux, les commandes host, whois, dig sont divers outils pour interroger les DNS. Par
exemple :
7

pn@pn:~$ host www.univ-angers.fr


www.univ-angers.fr is an alias for web-serv.univ-angers.fr.
web-serv.univ-angers.fr has address 193.49.144.131
web-serv.univ-angers.fr mail is handled by 0 lagaffe.univ-angers.fr.

montre la resolution de nom du serveur web de luniversite dAngers (en 2007).


pn@pn:~$ host 193.49.144.1
1.144.49.193.in-addr.arpa domain name pointer ns.univ-angers.fr.

montre le resultat de la resolution inverse qui permet a` partir dune adresse IP de trouver le
ou les noms de domaines auxquels elle correspond.
Il faut noter aussi que plusieurs adresses IP peuvent etre associees a` un nom unique, comme
lexemple suivant lillustre.
pn@pn:~$ host www.google.fr
www.google.fr is an alias for www.google.com.
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 209.85.129.99
www.l.google.com has address 209.85.129.104
www.l.google.com has address 209.85.129.147

En fait, chaque resolution du nom www.google.fr retourne la liste des adresses IP dans un
ordre particulier (round robin). Ainsi, les tr`es nombreuses requetes interrogeant un meme service
peuvent etre reparties entre differentes machines assurant le meme service.
pn@pn:~$ whois univ-angers.fr
%%
%% This is the AFNIC Whois server [bonnie.nic.fr].
%%
%% Rights restricted by copyright.
%% See http://www.afnic.fr/afnic/web/legal
%%
%% Use -h option to obtain more information about this service.
%%
%% [::ffff:193.49.146.121 REQUEST] >> -V Md4.7 univ-angers.fr
%%
domain:
univ-angers.fr
address:
Universite dAngers
address:
30, rue des Arenes
address:
49035 Angers Cedex 1
address:
FR
phone:
+33 41 73 53 84
fax-no:
+33 41 73 54 31
e-mail:
jacques.allo@univ-angers.fr
admin-c:
JA69-FRNIC
tech-c:
GR1378-FRNIC
zone-c:
NFC1-FRNIC
nserver:
ns.univ-angers.fr 193.49.144.1
nserver:
resone.univ-rennes1.fr 129.20.254.1
mnt-by:
FR-NIC-MNT
mnt-lower:
FR-NIC-MNT
changed:
nic@nic.fr 20050623
source:
FRNIC
...

permet dobtenir les informations relatives `a un nom de domaine.


pn@pn:~$ dig univ-angers.fr any
; <<>> DiG 9.3.4 <<>> univ-angers.fr any
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6336
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 4, ADDITIONAL: 6
;; QUESTION SECTION:

;univ-angers.fr.
;; ANSWER SECTION:
univ-angers.fr.
172702 IN
univ-angers.fr.
142614 IN
univ-angers.fr.
142614 IN
univ-angers.fr.
142614 IN
univ-angers.fr.
142614 IN
;; AUTHORITY SECTION:
univ-angers.fr.
142614 IN
univ-angers.fr.
142614 IN
univ-angers.fr.
142614 IN
univ-angers.fr.
142614 IN
;; ADDITIONAL SECTION:
smtp.univ-angers.fr.
172702 IN
smtp.univ-angers.fr.
172702 IN
dns1.univ-nantes.fr.
6573
IN
dns2.univ-nantes.fr.
6573
IN
resone.univ-rennes1.fr. 51620
IN
resone.univ-rennes1.fr. 51620
IN
;; Query time: 2 msec
;; SERVER: 172.20.41.2#53(172.20.41.2)
;; WHEN: Wed Oct 3 16:44:35 2007
;; MSG SIZE rcvd: 330

IN

ANY

MX
NS
NS
NS
NS

50 smtp.univ-angers.fr.
dns1.univ-nantes.fr.
dns2.univ-nantes.fr.
resone.univ-rennes1.fr.
ns.univ-angers.fr.

NS
NS
NS
NS

resone.univ-rennes1.fr.
ns.univ-angers.fr.
dns1.univ-nantes.fr.
dns2.univ-nantes.fr.

A
AAAA
A
A
A
AAAA

193.49.144.2
2001:660:7201:709::20
193.52.108.41
193.52.101.20
129.20.254.1
2001:660:7307:31:129:20:254:1

montre les informations relatives au domaine univ-angers.fr (en 2007). On y voit notamment
quun serveur DNS fournit egalement, par son champ MX, ladresse des serveurs de courrier
gerant le domaine concerne.

La couche de liens dinternet.

Le but de la couche de liens de la pile TCP/IP est denvoyer et recevoir des datagrammes IP
pour la couche IP, denvoyer des requetes ARP (respt. RARP) et de recevoir des reponses pour
le module ARP (respt. RARP). Elle concentre donc les caracteristiques des deux premi`eres
couches du mod`ele OSI : couche physique et couche de liaison.

3.1

La liaison SLIP.

SLIP (Serial Line Internet Protocol, RFC 1055) est un protocole permettant denvoyer des
paquets IP entre deux ordinateurs relies par une liaison serie (par exemple, grace `a deux modems
branches sur les ports RS-232 et une ligne telephonique). Dans ce cas il ny a pas besoin de
prevoir un adressage de niveau 2, puisque la liaison est point a` point (une seule machine a`
chaque extremite du lien). Par contre, il sagit de delimiter le debut et la fin des paquets IP.
Le protocole SLIP definit 2 caract`eres speciaux : END (192 en decimal,c0 en hexadecimal) et
ESC (219 en decimal, db en hexadecimal). Dans sa version la plus simple, lencapsulation dun
paquet IP consiste a` envoyer tous les octets du paquet IP et de terminer par lenvoi du caract`ere
END. Si le caract`ere END se trouve parmi les donnees a` expedier, alors la suite de 2 octets ESC
et dc (220 en decimal) est emise a` la place. Sil sagit dexpedier le caract`ere ESC, alors la suite
de 2 octets ESC et dd (221 en decimal) est emise a` la place. Pour eviter des probl`emes de bruit,
certaines implantations de SLIP font egalement debuter lenvoi du paquet IP par un caract`ere
END. Au final, lencapsulation SLIP se resume a` lillustration de la figure 6.

Fig. 6 Encapsulation SLIP.


Un des defauts de ce protocole est quil faut que les deux extremites aient fixe prealablement
leurs adresses IP, car la liaison SLIP ne leur permet pas de se les echanger. Si un site offre via un
seul modem lacc`es a` Internet a` plusieurs personnes, cela ne posera pas de probl`eme. En effet,
chaque personne aura configure son ordinateur avec le numero IP fournit par ladministrateur
du reseau et comme une seule connexion est possible a` la fois la duplication du meme numero
IP nest pas genante. Seulement, si le site offre un deuxi`eme modem sur le meme numero
` ce moment l`a,
telephonique, les utilisateurs ignoreront a` quel modem ils sont connectes. A
il faudra que le syst`eme indique a` chaque utilisateur comment configurer son ordinateur en
fonction de lutilisation ou non de lautre modem de telle mani`ere que la meme adresse IP ne
soit pas donnee a` deux machines differentes simultanement. Dans ce genre dutilisation SLIP a
10

le defaut de ne pas offrir dacc`es controle par mot de passe. De plus, il ny a pas de champ type
donc la ligne ne peut pas etre utilisee en meme temps pour un autre protocole. Et enfin, il ny
a pas de controle de la transmission. Si une trame subit des perturbations, cest aux couches
superieures de de le detecter. Enfin, il existe une version amelioree CSLIP (Compressed SLIP
RFC 1144) qui assure la (de)compression des donnees a` transmettre.

3.2

La liaison PPP.

PPP (Point to Point Protocol ) (RFC 1661) est un protocole qui corrige les deficiences de
SLIP en offrant les fonctionnalites suivantes :
utilisation sur des liaisons point a` point autres que serie, comme X25 ou RNIS
transport de differents protocoles de niveau 3 (IP, Decnet, Appletalk, ...)
compression des en-tetes IP et TCP pour augmenter le debit de la liaison
gestion dun controle dacc`es au reseau par authentification selon le protocole PAP qui
necessite la donnee dun mot de passe au debut de la communication ou le protocole
CHAP qui permet lechange de sceaux cryptes tout au long de la communication
detection et correction derreurs de transmission
ne pas utiliser des codes qui risquent detre interpretes par les modems
configuration automatique de la station client selon ses protocoles de couche reseau (IP,
IPX, Appletalk).
Le protocole PPP est celui classiquement utilise par les fournisseurs dacc`es a` Internet pour
connecter leurs abonnes via le reseau RTC (telephone) selon le schema de la figure 7.

Fig. 7 Connexion a` Internet par modem et PPP.


Dans ce cas, le processus de connexion dun client est le suivant.
Le modem du client appelle le numero de telephone du fournisseur et la connexion
telephonique setablit si lun au moins de ses modems est libre.
Lidentification du client se fait par envoi dun nom dutilisateur et dun mot de passe
soit directement par lutilisateur, soit selon lun des protocoles PAP ou CHAP. Pour PAP
(Protocol Authentification Protocol ) le serveur de communication envoie a` lordinateur
un paquet pour demander le nom dutilisateur et le mot de passe et lordinateur renvoie
ces informations directement. CHAP (Challenge Handshake Authentification Protocol )
fonctionne de la meme mani`ere sauf que le serveur de communication envoie dabord une
clef qui va permettre de crypter lenvoi du nom dutilisateur et du mot de passe.
Une fois lidentification du client controlee, le serveur de communication envoie une adresse
IP, dite dynamique car elle varie selon les connexions, `a lordinateur du client qui `a partir
11

de l`a se retrouve integre au reseau Internet avec une adresse IP pour tout le temps que
durera sa connexion.

Fig. 8 Encapsulation PPP.

De mani`ere plus technique lencapsulation PPP illustree dans la figure 8 est proche du
standard HDLC de lISO et est telle que chaque trame commence et finit par un fanion de valeur
7e soit en binaire 01111110. La valeur du champ adresse est toujours fixee `a ff puisquelle
est inutile ici dans le cas dune liaison point a` point. Le champ controle est fixe a` 03. Le
champ protocole precise la nature des donnees transportees : IP, appletalk . . .Le CRC assure
la detection des erreurs de transmission. Il est calcule a` laide du polynome generateur P (x) =
x16 + x12 + x5 + 1 sur lensemble des champs adresse, controle, protocole et informations.
Le probl`eme de lapparition du fanion 01111110 au milieu des donnees a` transmettre est
regle des deux mani`eres suivantes.
Dans le cas dune liaison synchrone, `a lemission un bit a` 0 est systematiquement ajoute
apr`es 5 1 et il est retire a` la reception.
Dans le cas dune liaison asynchrone, le fanion 7e est remplace par la suite 7d 5e, et
le code 7d est lui-meme remplace par la suite 7d 5d. De plus tout octet O de valeur
inferieure `a 20 (32 en decimal), correspondant donc `a un code de controle ASCII, sera
remplace par la sequence 7d O o`
u O=O20. Ainsi, on est s
ur que ces caract`eres ne
seront pas interpretes par les modems comme des caract`eres de commandes. Par defaut,
les 32 valeurs sont traitees ainsi mais il est possible dutiliser le protocole de controle de
liens pour specifier pour quels caract`eres uniquement on fait cette transformation.

3.3

Le r
eseau Ethernet.

Ethernet est le nom donne `a une des technologies les plus utilisees pour les reseaux locaux
en bus. Elle a ete inventee par Xerox au debut des annees 70 et normalisee par lIEEE (Institute
for Electrical and Electronics Engineers) vers 1980 sous la norme IEEE 802 et la declinaison la
plus usitee est la 802.3.
Tout dabord, il existe plusieurs technologies physiques pour etablir un reseau local de type
Ethernet comme illustre dans la figure9.
12

Fig. 9 Topologie de reseaux locaux Ethernet.

10 base 5 ou thick Ethernet est un reseau `a base de cable coaxial de 1,27 cm de diam`etre,
dune longueur de 500 m maximum et termine `a chaque extremite par une resistance.
Chaque ordinateur est relie, par un cordon AUI Attachment Unit Interface), a` un botier
appele transceiver lui-meme connecte au cable par lintermediaire dune prise (( vampire )).
Le transceiver est capable de detecter si des signaux numeriques transitent sur le cable et
de les traduire en signaux numeriques a` destination de lordinateur, et inversement.
10 base 2 ou thin Ethernet est un reseau a` base dun cable coaxial plus fin et plus souple,
moins resistant aux perturbations electromagnetiques que le 10 base 5, mais dun co
ut
inferieur. Le transceiver et le cable AUI ne sont plus utiles car lordinateur est relie
directement au cable par lintermediaire dune prise BNC en T integree a` la carte Ethernet
de lordinateur.
10 base T ou twisted pair Ethernet est un reseau dans lequel chaque ordinateur est relie,
par un cable de type paire torsadee, a` un point central qui est soit un repartiteur (hub)
ou un commutateur (switch) simulant leffet dun transceiver et de son cable AUI. La
connexion des cables se fait par lintermediaire dune prise RJ45 et les concentrateurs
doivent etre alimentes electriquement. Ils simulent ainsi le fonctionnement dun bus alors
que la topologie physique du reseau est une etoile. Le debit dun tel reseau est tr`es
generalement de 10 ou 100 Mbit/sec maximal mais lon trouve aussi les technologies 1000
baseT (ou Gigabit Ethernet sur fil de cuivre ou fibre optique) et 10 GigaBit portant le
debit a` 1 ou 10 Gbit/sec.
Dans tous les cas les informations sont transmises sur le bus sans garantie de remise. Chaque
transceiver capte toutes les trames qui sont emises sur le cable et les redirige vers le controleur
de lordinateur qui rejettera les trames qui ne lui sont pas destinees et enverra au processeur
celles qui le concernent, cest-`a-dire celles dont ladresse de destination est egale `a celle de la
carte reseau.
Comme il ny a pas dautorite centrale qui g`ere lacc`es au cable, il est possible que plusieurs
stations veuillent emettre simultanement sur le cable. Cest pourquoi chaque transceiver ecoute
le cable pendant quil emet des donnees afin de detecter des eventuelles perturbations. Si une
collision est detectee par le transceiver, celui-ci previent le coupleur qui arrete demettre et
attend un laps de temps aleatoire compris entre 0 et une certaine duree avant de reemettre
ses donnees. Sil y a encore un probl`eme de collision, alors un nouveau temps dattente est tire
au sort entre 0 et 2 , puis entre 0 et 4 , etc... jusqu`a ce que la trame soit emise. Ce principe
est justifie par le fait que si une premi`ere collision se produit, il y a de fortes chances que les
delais dattente tires au sort par chacune des 2 stations soient tr`es proches, donc il ne sera
pas surprenant davoir une nouvelle collision. En doublant a` chaque fois lintervalle des delais
dattente possibles on augmente les chances de voir les retransmissions setaler sur des durees
relativement longues et donc de diminuer les risques de collision. Cette technologie sappelle
13

CSMA/CD (Carrier Sense Multiple Access with Collision Detect). Elle est efficace en general
mais a le defaut de ne pas garantir un delai de transmission maximal apr`es lequel on est s
ur
que la trame a ete emise, donc cela ne permet pas de lenvisager pour des applications temps
reel.
Les adresses physiques Ethernet ou MAC adresses (Medium Access control) sont codees sur
6 octets et donnees sous la forme de 6 nombres hexadecimaux. Ils sont censees etre uniques car
les constructeurs et lIEEE g`erent cet adressage de mani`ere a` ce que deux coupleurs ne portent
pas la meme adresse1 . Elles sont de trois types
unicast dans le cas dune adresse monodestinataire designant un seul coupleur
broadcast dans le cas dune adresse de diffusion generale (tous les bits `a 1 donc egale
a` FF :FF :FF :FF :FF :FF) qui permet denvoyer une trame a` toutes les stations du
reseau
multicast dans le cas dune adresse multidestinataire qui permet dadresser une meme
trame a` un ensemble de stations qui ont convenu de faire partie du groupe que represente
cette adresse multipoint.
On voit donc quun coupleur doit etre capable de reconnaitre sa propre adresse physique,
ladresse de multicast, et toute adresse de groupe dont il fait partie.
Au niveau des trames, plusieurs formats ont ete definis, mais le plus courant aujourdhui
est celui dit de type II illustre dans la figure 10.

Fig. 10 Trame Ethernet.


Les adresses materielles source et destination sont codees sur 6 octets (adresse Ethernet).
Le troisi`eme champ contient le type de donnees transmises selon que cest un datagramme IP,
une requete ou reponse ARP ou RARP. Dans la norme 802.3, ce champ type est remplace par
un champ longueur indiquant la taille des donnees transmises (la partie donnees est egalement
subdivisee en plusieurs zones correspondant a` la sous couche Logical Link Control). Les deux
types de trames (II et 802.3) cohabitent sur un meme reseau, sachant que la version avec
champ type correspond au transport de donnees utilisateurs, quand la version avec champ
longueur correspond au dialogue entre elements du reseau (ex : Spanning Tree Protocol). Puis,
viennent les donnees transmises qui peuvent avoir une taille allant de 46 a` 1500 octets. Dans
le cas de donnees trop petites, comme pour les requetes et reponse ARP et RARP (voir la
sous-section 3.5) on compl`ete avec des bits de bourrage ou padding. Enfin, un CRC de 4 octets
termine la trame, ce CRC est calcule a` partir du polynome generateur : P (x) = x32 + x26 +
x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1.
De nombreux equipements materiels interviennent dans la constitution physique dun reseau
Ethernet, ce paragraphe decrit quelques uns de ceux qui interviennent aux niveaux 1 et 2 du
mod`ele OSI.
Les equipements materiels suivants peuvent intervenir dans la constitution physique dun
reseau Ethernet.
Un repeteur opere de mani`ere physique uniquement, donc au niveau de la couche 1 du
mod`ele OSI. Il se contente de retransmettre et damplifier tous les signaux quil recoit,
1

En pratique, certains constructeurs ne respectent pas cette r`egle et plusieurs cartes peuvent avoir la meme
adresse, voire une adresse nulle. On peut aussi programmer ladresse materielle.

14

sans aucun autre traitement. Un hub est un repeteur 10 base T multiport qui renvoie
donc le signal quil recoit par lun de ses ports vers tous ses autres ports.
Un pont est un equipement qui intervient dans larchitecture dun reseau en reliant deux
segments disjoints de ce reseau. Le pont appartient `a la couche 2 du mod`ele OSI car il
va filtrer les trames du reseau en fonction de leur origine et destination, mais il ne se
preoccuppe pas du logiciel reseau de niveau superieur (TCP/IP, DECNet, IPX, ...).

Fig. 11 Fonctionnement dun pont..


Dans la configuration de la figure 11 le pont sera capable de determiner que les ordinateurs
A et B sont sur le segment 1 et les ordinateurs C et D sur le segment 2. Il peut obtenir ces
informations car il (( voit passer ))toutes les trames provenant des ordinateurs appartenant
aux deux segments quil relie et grace aux adresses dorigine contenues dans les trames,
il peut se construire une table dadresses memorisant la cartographie du reseau. Ainsi,
si une trame est envoyee de A vers B, ou de C vers D, elle ne franchira pas le pont car
celui-ci aura detecte que cest inutile. Mais si la trame provenant de A est destinee a` C
ou D, elle le traversera sans aucun autre traitement.
Lutilisation dun pont peut ainsi ameliorer le debit dun reseau car toutes les trames ne
sont pas transmises sur tout le reseau. Dautre part, cela peut permettre daugmenter la
confidentialite du reseau en isolant certains ordinateurs des autres de mani`ere a` ce que certaines trames soient impossibles a` capturer par des ordinateurs (( espions ))collectionnant
toutes les trames qui circulent sur le reseau, meme celles qui ne lui sont pas destinees.
Un commutateur ou switch est en fait un pont multiport qui va aiguiller chacune des
trames quil recoit vers le segment sur lequel se trouve lordinateur de destination de la
trame. Cependant, chacun de ses ports est habituellement relie `a un segment contenant
un nombre restreint dordinateurs, voire `a un seul sil sagit par exemple dun serveur tr`es
sollicite. Les performances globales du reseau seront donc bien meilleures que lorsque les
postes sont relies via un hub puisque les changes entre 2 machines du reseau ninondent
pas inutilement les autres machines du reseau. Les meilleures debits et la meilleure confidentialite possibles sur un reseau local Ethernet sont atteints si lon peut mettre en place
un reseau (( tout commute )). Ce terme signifie que chaque poste du reseau est relie par
un lien direct a` un port du commutateur et ne recoit ainsi que son trafic personnel.
La page http://www.info.univ-angers.fr/pub/pn/CommutEthernet presente une applet illustrant les principes de diffusion et de commutation au sein dun reseau Ethernet
La technologie du CPL (Courant Porteur en ligne http://www.cpl-france.org) permet
detendre un reseau local Ethernet au moyen du reseau electrique interne dun batiment
(acc`es indoor ). Cette technique peut aussi sutiliser pour relier a` internet une habitation
(acc`es outdoor ). Dans les deux cas, Chaque equipement informatique est connecte, via
une prise RFJ45, `a un adaptateur lui-meme branche sur une prise de courant electrique.
Ladaptateur multiplexe le signal informatique dune frequence comprise entre 2 et 30
Mhz en technique OFDM (Orthogonal Frequency Division Multiplexing) avec le signal
electrique de 50Hz du reseau electrique. Le reseau electrique se comporte alors comme
15

un bus Ethernet au debit de 14Mbit/s. Comme illustre dans la figure 12, cela permet la
constitution dun reseau local `a domicile pour partager un acc`es a` internet (voir section 6).

Fig. 12 Reseau local CPL.

3.4

Le r
eseau WIFI.

La norme IEEE 802.11 definit les caracteristiques dun reseau local sans fil (WLAN) plus
connu sous le nom WIFI (WIreless FIdelity). Au niveau physique on distingue 3 modes de communication : IR (infrarouge), DSSS (Direct Sequence Spread Spectrum) FHSS (Frequency Hopping Spread Spectrum). Les deux derniers utilisent des ondes radio dans la bande de frequence
de 2.4 Ghz `a 2.4835 Ghz et decoupent de mani`ere particuli`ere la bande de frequence en differents
canaux. La declinaison 802.11b (celle du departement dinformatique de lUniversite dAngers
en 2005) autorise un debit maximal de 11Mbit/s, la 802.11g permet un debit maximal de 54
Mbit/s.
La constitution dun reseau local sans fil se fait selon le schema de la figure13 en un mode dit
dinfrastructure. Le point dacc`es est un equipement (antenne emettrice/receptrice) connecte
au reseau filaire Ethernet. Chaque ordinateur, equipe lui-meme dune carte WIFI, communique
avec ce point dacc`es pour pouvoir dialoguer avec les autres machines du reseau.
Pour sa part, le mode ad-hoc consiste `a creer un reseau dordinateurs equipes de carte
WIFI, sinterconnectant entre eux, sans point dacc`es particulier ni reseau filaire auquel se
raccorder. Cela permet de constituer un reseaux de machines sans aucune structure materielle
preexistante.
Les emissions de donnees sont regies par la technique CSMA/CA (Carrier Sense Multiple
Access with Collision Avoidance) qui suit le protocole suivant. Lorsquune station veut emettre,
elle explore le spectre de frequences. Si une activite est detectee, elle attend pendant quelques
instants avant de reessayer. Si aucune activite nest detectee, et si cette inactivite dure un temps
donne DIFS (Distributed Inter Frame Space), alors la station expedie ses donnees et attend
un message daquittement (ACK). Si celui-ci narrive pas, soit parce que le recepteur a detecte
des incoherences, soit parce quil a ete lui-meme perturbe, alors la station emettrice reemet les
donnees. Sinon, lorsque le ACK est recu, lemission est terminee.
Cependant, la phase decoute prealable peut etre inefficace car labsence dactivite ne signifie
pas forcement aucune activite, notamment a` proximite du point dacc`es. En effet, deux stations
peuvent ne pas (( sentendre ))si elles sont trop eloignees lune de lautre, tout en etant chacune
a` portee du point dacc`es (voir la figure 13). Pour pallier cette difficulte, la station emettrice,
apr`es avoir constate une periode de silence, va envoyer un message RTS (Ready To Send).
16

Fig. 13 Reseau local sans fil.


Ce message contient des informations sur le volume des donnees a` emettre et la vitesse de
transmission. Le recepteur repond alors par un message CTS (Clear To Send), puis la station
expedie les donnees. Lorsque toutes les donnees sont recues, le recepteur envoie un accuse de
reception (ACK). Ainsi, grace au message CTS qui peut etre recu par toutes les stations (car
elles sont toutes a` portee du point dacces), ces derni`eres vont rester silencieuses pendant le
temps necessaire a` la transmission des donnees `a la vitesse annoncee. Ce mecanisme RTS/CTS,
qui evite de creer des collisions, nest utilise que pour les (( gros ))paquets de donnees. Pour les
echanges de petite taille, les donnees sont expediees immediatement (sans message RTS/CTS)
et lemetteur attend simplement le ACK.
Les protocoles 802.11 assurent aussi la fragmentation des paquets de mani`ere a` expedier
peu de donnees `a la fois ce qui ameliore les taux de tranfert et chaque paquet est protege par
un CRC de 32 bits.

3.5

Les protocoles ARP et RARP.

Etant
donne que le protocole IP, et ses adresses, peuvent etre utilises sur des architectures
materielles differentes (reseau Ethernet, Token-Ring, ...) possedant leur propres adresses physiques, il y a necessite detablir les correspondances biunivoques entre adresses IP et adresses
materielles des ordinateurs dun reseau. Ceci est lobjet des protocoles ARP (Address Resolution Protocol ) et RARP (reverse Address Resolution Protocol ). ARP fournit une correspondance
dynamique entre une adresse IP et ladresse materielle lui correspondant et RARP fait linverse.
Nous nous placons dans le cas dune correspondance a` etablir entre IP et Ethernet. La
necessite de la resolution dadresse fournie par ARP apparat dans lexemple ci-dessous decrivant
le debut dune connexion FTP entre un PC et le serveur sirius tous deux `a linterieur du meme
reseau Ethernet.
1. Le client FTP convertit ladresse du serveur FTP (ex : sirius.info-ua) en une adresse
IP (172.20.41.7) `a laide du fichiers /etc/hosts ou dun serveur de noms (DNS).
2. Le client FTP demande a` la couche TCP detablir une connexion avec cette adresse.
3. TCP envoie une requete de connexion `a ce serveur en emettant un datagramme IP contenant ladresse IP
17

4. En supposant que les machines client et serveur sont sur le meme reseau local Ethernet,
la machine emettrice doit convertir ladresse IP sur 4 octets en une adresse Ethernet sur
6 octets avant demettre la trame Ethernet contenant le paquet IP. Cest ce que va faire
ARP.
5. Le module ARP envoie une requete ARP dans une trame Ethernet (donnee dans la
figure 14) avec une adresse de destination multicast. Ainsi, toutes les machines du reseau
local recoivent cette requete contenant ladresse IP a` resoudre.
6. La couche ARP de la machine visee (ici sirius.info-ua) reconnat que cette requete lui
est destinee et repond par une reponse ARP contenant son adresse materielle 00 :20 :AF :AB :42
Les autres machines du reseau ignorent la requete.
7. La reponse ARP est recue par lemetteur de la requete. Pour ce retour, il ny a pas de
probl`eme de resolution puisque ladresse physique de lemetteur etant envoyee dans la
requete elle est connue de la machine qui repond.
8. La reponse ARP est recue par la couche ARP du client FTP, et le driver Ethernet peut
alors emettre le paquet IP avec la bonne adresse Ethernet de destination.

Fig. 14 Requete ou reponse ARP sur un reseau Ethernet.


Les deux premiers champs dune trame Ethernet (voir figure 14) emise par ARP sont
conformes a` len-tete dune trame Ethernet habituelle et ladresse de destination sera ladresse
multicast FF :FF :FF :FF :FF :FF designant toutes les machines du reseau `a la fois. La valeur du champ type de trame est 0806 indiquant le protocole ARP. Le champ type de materiel
est egal a` 1 pour un reseau Ethernet et celui type de protocole est egal est 0800 pour IP. Les
tailles en octets specifiees ensuite sont 6 (6 octets pour une adresse Ethernet) et 4 (4 octets
pour une adresse IP). Le champ op vaut 1 pour une requete ARP et 2 pour une reponse ARP.
Les quatre champs suivants contiennent des adresses et sont redondants dans le cas de ladresse
Ethernet metteur dune requete ARP, et non renseignes dans le cas de ladresse Ethernet cible
dune requete ARP.
La machine qui reconnat son numero IP `a linterieur dune requete ARP quelle recoit la
renvoie en y intervertissant les adresses IP cible et emetteur, ainsi que les adresses Ethernet cible
(apr`es lavoir substituee `a ladresse de diffusion dans len-tete et renseignee dans le corps de la
trame) et Ethernet emetteur. Pour eviter la multiplication des requetes ARP, chaque machine
g`ere un cache dans lequel elle memorise les correspondances adresses IP/adresses Ethernet
dej`a resolues prealablement. Ainsi, le module ARP ne lancera une requete que lorsquil ne
trouvera pas cette correspondance dans le cache, sinon il se contentera demettre les donnees
quil recoit dIP en ayant fixe correctement ladresse physique de destination. Cependant, les
correspondances ne sont pas conservees indefiniment car cela pourrait provoquer des erreurs
lorsque lon change un ordinateur (ou une carte reseau) du reseau en conservant un meme
numero IP pour cet ordinateur mais evidemment pas la meme adresse physique.
Comme illustre ci-dessous, la commande arp -a (sous Linux et Windows) affiche le contenu
du cache memoire ARP courant.
18

$ arp -a
titan.info-ua (172.20.41.1) a
` 00:13:46:66:A4:5A [ether] sur eth0
h108-0.info-ua (172.20.41.28) a
` 00:0F:1F:EA:92:DC [ether] sur eth0
pn.info-ua (172.20.41.43) a
` 00:12:3F:DD:E2:E0 [ether] sur eth0
neo.info-ua (172.20.41.25) a
` 00:0E:0C:5B:DF:22 [ether] sur eth0
pollux.info-ua (172.20.41.9) a
` 08:00:20:88:0F:4E [ether] sur eth0
tines.info-ua (172.20.41.2) a
` 00:13:46:66:A4:5A [ether] sur eth0
sirius.info-ua (172.20.41.7) a
` 00:00:1A:18:FF:4C [ether] sur eth0
cerbere.info-ua (172.20.40.9) a
` 00:10:DC:54:7B:03 [ether] sur eth0
joebar.info-ua (172.20.41.71) a
` 00:14:85:03:BE:7A [ether] sur eth0
helios.info-ua (172.20.41.5) a
` 00:03:BA:08:DB:22 [ether] sur eth0
Quant `a lui, le protocole RARP joue le role inverse de ARP en permettant de determiner
ladresse IP dun equipement dont on connat ladresse physique. Ceci est notamment utile
pour amorcer une station sans disques, ou un TX, qui na pas en memoire son adresse IP mais
seulement son adresse materielle. Le format dune trame RARP est celui de la figure 14) o`
u
le champ type de trame vaut 0835 et le champ op vaut 3 pour une requete RARP et 4 pour
une reponse. Une requete RARP est diffusee sous forme de broadcast, donc toutes les machines
du reseau la recoivent et la traitent. Mais la plupart des machines ignorent simplement cette
demande, seuls, le ou les serveurs RARP du reseau vont traiter la requete grace a` un ou plusieurs
fichiers et vont retourner une reponse contenant ladresse IP demandee.

19

Le protocole IP.

Comme on a peut le voir dans la pile TCP-IP le protocole IP (Internet Protocol, RFC 791)
est au cur du fonctionnement dinternet. Il assure sans connexion un service non fiable de
delivrance de datagrammes IP. Le service est non fiable car il nexiste aucune garantie pour que
les datagrammes IP arrivent a` destination. Certains peuvent etre perdus, dupliques, retardes,
alteres ou remis dans le desordre. On parle de remise au mieux (best effort delivery) et ni
lemetteur ni le recepteur ne sont informes directement par IP des probl`emes rencontres. Le
mode de transmission est non connecte car IP traite chaque datagramme independamment de
ceux qui le prec`edent et le suivent. Ainsi en theorie, au moins, deux datagrammes IP issus de
la meme machine et ayant la meme destination peuvent ne pas suivre obligatoirement le meme
chemin. Le role du protocole IP est centre autour des trois fonctionnalites suivantes chacune
etant decrite dans une des sous-sections a` venir.
definir le format du datagramme IP qui est lunite de base des donnees circulant sur
Internet
definir le routage dans internet
definir la gestion de la remise non fiable des datagrammes

4.1

Le datagramme IP.

Un datagramme IP est constitue dune en-tete suivie dun champ de donnees. Sa structure

Fig. 15 Structure dun datagramme IP.


precise est detaillee dans la figure 15 et comporte les champs suivants.
La version code sur 4 bits le numero de version du protocole IP utilise (la version courante
est la 4, do`
u son nom dIPv4). Tout logiciel IP doit dabord verifier que le numero de
version du datagramme quil recoit est en accord avec lui-meme. si ce nest pas le cas le
datagramme est tout simplement rejete. Ceci permet de tester des nouveaux protocoles
sans interferer avec la bonne marche du reseau.
La longueur den-tete represente sur 4 bits la longueur, en nombre de mots de 32 bits, de
len-tete du datagramme. Ce champ est necessaire car une en-tete peut avoir une taille
superieure a` 20 octets (taille de len-tete classique) a` cause des options que lon peut y
ajouter.
20

Le type de services (TOS) est code sur 8 bits, indique la mani`ere dont doit etre gere le
datagramme et se decompose en six sous-champs comme suit.
0 1 2 3 4 5 6
7
priorite D T R C inutilise
Le champ priorite varie de 0 (priorite normale, valeur par defaut) `a 7 (priorite maximale
pour la supervision du reseau) et permet dindiquer limportance de chaque datagramme.
Meme si ce champ nest pas pris en compte par tous les routeurs, il permettrait denvisager des methodes de controle de congestion du reseau qui ne soient pas affectees par le
probl`eme quelles cherchent a` resoudre. Les 4 bits D, T, R et C permettent de specifier
ce que lon veut privilegier pour la transmission de ce datagramme (nouvel RFC 1455).
D est mis a` 1 pour essayer de minimiser le delai dacheminement (par exemple choisir un
cable sous-marin plutot quune liaison satellite), T est mis a` 1 pour maximiser le debit de
transmission, R est mis a` 1 pour assurer une plus grande fiabilite et C est mis a` 1 pour
minimiser les co
uts de transmission. Si les quatre bits sont `a 1, alors cest la securite de
la transmission qui doit etre maximisee. Les valeurs recommandees pour ces 4 bits sont
donnees dans la table 1. Ces 4 bits servent `a ameliorer la qualite du routage et ne sont pas
application
telnet/rlogin
FTP
contr
ole
transfert
SMTP
commandes
donnees
NNTP
SNMP

minimise le delai
1

maximise le debit
0

maximise la fiabilite
0

minimise le co
ut
0

1
0

0
1

0
0

0
0

1
0
0
0

0
1
0
0

0
0
0
1

0
0
1
0

Tab. 1 Type de service pour les applications standard.


des exigences incontournables. Simplement, si un routeur connat plusieurs voies de sortie
pour une meme destination il pourra choisir celle qui correspond le mieux `a la demande.
La longueur totale contient la taille totale en octets du datagramme, et comme ce champ
est de 2 octets on en deduit que la taille compl`ete dun datagramme ne peut depasser 65535
octets. Utilisee avec la longueur de len-tete elle permet de determiner o`
u commencent
exactement les donnees transportees.
Les champs identification, drapeaux et deplacement de fragment interviennent dans le
processus de fragmentation des datagrammes IP et sont decrits dans la sous-section 4.2.
La duree de vie (TTL) indique le nombre maximal de routeurs que peut traverser le datagramme. Elle est initialisee N (souvent 32 ou 64) par la station emettrice et decremente
de 1 par chaque routeur qui le recoit et le reexpedie. Lorsquun routeur recoit un datagramme dont la duree de vie est nulle, il le detruit et envoie `a lexpediteur un message
ICMP. Ainsi, il est impossible quun datagramme (( tourne )) indefiniment dans un internet. Ce champ sert egalement dans la realisation du programme tracepath (sous Linux)
ou tracert (sous windows). qui sert a` determiner quel est litineraire (lensemble des
routeurs traverses) entre deux machines, comme dans lexemple ci-dessous.
pn@forge:~$ tracepath www.w3c.org
1: forge.info-ua (172.20.41.8)
0.204ms pmtu 1500
1: titan.info-ua (172.20.41.1)
0.294ms
1: titan.info-ua (172.20.41.1)
0.259ms
2: 193.49.146.254 (193.49.146.254)
1.013ms
3: ua-jun.net.univ-angers.fr (194.57.169.5)
0.707ms asymm 4
4: nantes-rtr-021-g8-4-66.cssi.renater.fr (193.51.182.150)
1.886ms

21

5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:

193.51.189.57 (193.51.189.57)
caen-rtr-021-te4-1.cssi.renater.fr (193.51.189.54)
rouen-rtr-021-te4-1.cssi.renater.fr (193.51.189.46)
193.51.189.49 (193.51.189.49)
renater.rt1.par.fr.geant2.net (62.40.124.69)
so-3-0-0.rt1.lon.uk.geant2.net (62.40.112.106)
so-2-0-0.rt1.ams.nl.geant2.net (62.40.112.137)
216.24.184.85 (216.24.184.85)
216.24.184.102 (216.24.184.102)
B24-RTR-2-BACKBONE.MIT.EDU (18.168.0.23)
MITNET.TRANTOR.CSAIL.MIT.EDU (18.4.7.65)
trantor.haven.csail.mit.edu (128.30.0.254)
dolph.w3.org (128.30.52.45)
Resume: pmtu 1500 hops 17 back 47

9.637ms
9.638ms
9.586ms
9.716ms
13.491ms
34.455ms
25.260ms
109.635ms
109.036ms
113.754ms
113.859ms
114.791ms
114.781ms

asymm 11
asymm 10
asymm 10
asymm 10
asymm 11
asymm 12

asymm 15
asymm 16
asymm 17
reached

Le protocole permet de coder quel protocole de plus haut niveau a servi a cree ce datagramme. Les valeurs codees sur 8 bits sont 1 pour ICMP, 2 pour IGMP, 6 pour TCP et
17 pour UDP. Ainsi, la station destinataire qui recoit un datagramme IP pourra diriger
les donnees quil contient vers le protocole adequat.
Le total de controle den-tete (header checksum) est calcule a` partir de len-tete du datagramme pour en assurer lintegrite. Lintegrite des donnees transportees est elle assuree
directement par les protocoles ICMP, IGMP, TCP et UDP qui les emettent. Pour calculer cette somme de controle, on commence par la mettre a` zero. Puis, en considerant la
totalite de len-tete comme une suite dentiers de 16 bits, on fait la somme de ces entiers
en complement `a 1. On complemente `a 1 cette somme et cela donne le total de controle
que lon ins`ere dans le champ prevu. A la reception du datagramme, il suffit dadditionner
tous les nombres de len-tete et si lon obtient un nombre avec tous ses bits a` 1, cest que
la transmission sest passee sans probl`eme.
Les adresses IP source et destination contiennent sur 32 bits les adresses de la machine
emettrice et destinataire finale du datagramme.
Le champ options est une liste de longueur variable, mais toujours completee par des
bits de bourrage pour atteindre une taille multiple de 32 bits pour etre en conformite
avec la convention qui definit le champ longueur de len-tete. Ces options sont tr`es peu
utilisees car peu de machines sont aptes `a les gerer. Parmi elles, on trouve des options
de securite et de gestion (domaine militaire), denregistrement de la route, destampille
horaire, routage strict, etc...
Les champs non encore precises le sont dans la section suivante car ils concernent la fragmentation des datagrammes.

4.2

La fragmentation des datagrammes IP.

En fait, il existe dautres limites a` la taille dun datagramme que celle fixee par la valeur
maximale de 65535 octets. Notamment, pour optimiser le debit il est preferable quun datagramme IP soit encapsule dans une seule trame de niveau 2 (Ethernet par exemple). Mais,
comme un datagramme IP peut transiter `a travers Internet sur un ensemble de reseaux aux
technologies differentes il est impossible de definir, a priori (lors de la definition du RFC), une
taille maximale (1500 octets pour Ethernet et 4470 pour FDDI par exemple) des datagrammes
IP qui permette de les encapsuler dans une seule trame quel que soit le reseau traverse. On
appelle la taille maximale dune trame dun reseau le MTU (Maximum Transfert Unit) et elle
va servir a` fragmenter les datagrammes trop grands pour le reseau quils traversent. Mais, si le
MTU dun reseau traverse est suffisamment grand pour accepter un datagramme, evidemment
il sera encapsule tel quel dans la trame du reseau concerne. Comme on peut le voir dans la
figure 16 la fragmentation se situe au niveau dun routeur qui recoit des datagrammes issus
22

Fig. 16 Fragmentation dun datagramme IP.

dun reseau a` grand MTU et qui doit les reexpedier vers un reseau a` plus petit MTU. Dans
cet exemple, si la station A, reliee `a un reseau Ethernet, envoie un datagramme de 1300 octets
a` destination de la station B, reliee egalement `a un reseau Ethernet, le routeur R1 va devoir
fragmenter ce datagramme de la mani`ere decrite ci-dessous.
La taille dun fragment est choisie la plus grande possible tout en etant un multiple de 8 octets. Un datagramme fragmente nest reassemble que lorsquil arrive `a destination finale. Meme
sils arrivent sur des reseaux avec un plus grand MTU les routeurs ne reassemblent pas les petits
fragments. De plus chaque fragment est route de mani`ere totalement independante des autres
fragments du datagramme do`
u il provient. Le destinataire final qui recoit un premier fragment
dun datagramme arme un temporisateur de reassemblage, cest-`a-dire un delai maximal dattente de tous les fragments. Si, passe ce delai, tous les fragments ne sont pas arrives il detruit
les fragments recus et ne traite pas le datagramme. Plus precisement, lordinateur destinataire
decremente, a` intervalles reguliers, de une unite le champ TTL de chaque fragment en attente
de reassemblage. Cette technique permet egalement de ne pas faire coexister au meme instant
deux datagrammes avec le meme identifiant.
datagramme initial

en-tete
du
datagramme : num=N

donnees1
600 octets

donnees2
600 octets

donnees3
100 octets

fragment1 en-tete du fragment1 : num=N, donnees1


deplacement=0, `a suivre=1
600 octets
fragment2 en-tete du fragment2 : num=N, donnees2
deplacement=75, `a suivre = 1
600 octets
fragment3 en-tete du fragment3 : num=N, donnees3
deplacement=150, `a suivre=0
100 octets
Tab. 2 Exemple de fragmentation IP.
Le processus de fragmentation-reassemblage illustre dans la table 2 est rendu possible grace
aux differents champs suivants. Le champ deplacement de fragment (ou offset) precise la localisation du debut du fragment dans le datagramme initial. Cet offset est egal au decalage reel
23

` part cela, les fragments sont des datagrammes dont


divise par 8 (voir lexemple de la table2). A
len-tete est quasiment identique a` celle du datagramme original. Le champ identification est
un entier qui identifie de mani`ere unique chaque datagramme emis et qui est recopie dans le
champ identification de chacun des fragments si ce datagramme est fragmente. Par contre, le
champ longueur total est recalcule pour chaque fragment. Le champ drapeaux comprend trois
bits dont deux qui controlent la fragmentation. Sil est positionne `a 1 le premier bit indique que
lon ne doit pas fragmenter le datagramme et si un routeur doit fragmenter un tel datagramme
alors il le rejette et envoie un message derreur `a lexpediteur. Un autre bit appele fragments
`a suivre est mis systematiquement a` 1 pour tous les fragments qui composent un datagramme
sauf le dernier. Ainsi, quand le destinataire recoit le fragment dont le bit fragment a` suivre est a`
0 il est apte `a determiner sil a recu tous les fragments du datagramme initial grace notamment
aux champs offset et longueur totale de ce dernier fragment. Si un fragment doit etre a` nouveau
fragmente lorsquil arrive sur un reseau avec un encore plus petit MTU, ceci est fait comme
decrit precedemment sauf que le calcul du champ deplacement de fragment est fait en tenant
compte du deplacement inscrit dans le fragment a` traiter.

4.3

Le routage IP.

Le routage est lune des fonctionnalites principales de la couche IP et consiste a` choisir


la mani`ere de transmettre un datagramme IP `a travers les divers reseaux dun internet. On
appellera ordinateur un equipement relie a` un seul reseau et routeur un equipement relie a` au
moins deux reseaux (cet equipement pouvant etre un ordinateur, au sens classique du terme,
qui assure les fonctionnalites de routage). Ainsi un routeur reemettra des datagrammes venus
dune de ses interfaces vers une autre, alors quun ordinateur sera soit lexpediteur initial, soit
le destinataire final dun datagramme.
Dune mani`ere generale on distingue la remise directe, qui correspond au transfert dun
datagramme entre deux ordinateurs du meme reseau, et la remise indirecte qui est mise en
uvre dans tous les autres cas, cest-`a-dire quand au moins un routeur separe lexpediteur
initial et le destinataire final. Par exemple, dans le cas dun reseau Ethernet, la remise directe
consiste `a encapsuler le datagramme dans une trame Ethernet apr`es avoir utilise le protocole
ARP pour faire la correspondance adresse IP adresse physique (voir les sections 3.3 et 3.5) et a`
emettre cette trame sur le reseau. Lexpediteur peut savoir que le destinataire final partage le
meme reseau que lui-meme en utilisant simplement ladresse IP de destination du datagramme.
Il en extrait lidentificateur de reseau et si cest le meme que celui de sa propre adresse IP2 alors
la remise directe est suffisante. En fait, ce mecanisme de remise directe se retrouve toujours
lors de la remise dun datagramme entre le dernier routeur et le destinataire final. Pour sa
part, la remise indirecte necessite de determiner vers quel routeur envoyer un datagramme
IP en fonction de sa destination finale. Ceci est rendu possible par lutilisation dune table
de routage specifique `a chaque routeur qui permet de determiner vers quelle voie de sortie
` cause de la structure localement
envoyer un datagramme destine a` un reseau quelconque. A
arborescente dinternet la plupart des tables de routage ne sont pas tr`es grandes. Par contre, les
tables des routeurs interconnectant les grands reseaux peuvent atteindre des tailles tr`es grandes
ralentissant dautant le trafic sur ces reseaux.
Lessentiel du contenu dune table de routage est constitue de quadruplets (destination,
passerelle, masque, interface) o`
u:
destination est ladresse IP dune machine ou dun reseau de destination
2

Dans le cas dun routeur, relie `


a k reseaux differents par k interfaces, donc possedant k adresses IP distinctes,
la comparaison sera faite pour chacun de ses reseaux.

24

passerelle (gateway) est ladresse IP du prochain routeur vers lequel envoyer le datagramme pour atteindre cette destination
masque est le masque associe au reseau de destination
interface designe linterface physique par laquelle le datagramme doit reellement etre
expedie.
Une table de routage contient notamment une route par defaut qui specifie un routeur vers
lequel sont envoyes tous les datagrammes pour lesquels il nexiste pas de route specifique dans
la table.
Tous les routeurs mentionnes dans une table de routage doivent bien s
ur etre directement
accessibles a` partir du routeur considere. Cette technique, dans laquelle un routeur ne connat
pas le chemin complet menant `a une destination, mais simplement la premi`ere etape de ce
chemin, est appelee routage par sauts successifs (next-hop routing).

Fig. 17 Exemple dinterconnexion de reseau.


La figure 17 donne un exemple dinterconnexion dun reseau de classe B 140.252.0.0
subdivise en 3 sous-reseaux dadresses respectives 140.252.1.0/24 pour lEthernet du haut,
14.252.13.32/27 pour lEthernet du bas et 140.252.13.64/27 pour le sous-reseau SLIP. Les
masques de sous-reseau sont associes par defaut a` chaque interface dune machine ou sont
eventuellement specifies sur chaque ligne des tables de routage. Dans lexemple donne ici, la
table de routage simplifiee de lordinateur R3 (sous syst`eme unix Sun) est la suivante3 .
destination

passerelle
(gateway)
140.252.13.65 140.252.13.35
127.0.0.1
127.0.0.1
140.252.13.32 140.252.13.34
default
140.252.13.33

masque
(genmask)
255.255.255.255
255.255.255.255
255.255.255.224
0.0.0.0

indicateurs interface
(flags)
UGH
emd0
UH
lo0
U
emdO
UG
emd0

Les indicateurs (flags) ont la signification suivante.


U La route est en service.
G La route est un routeur (gateway). Si ce flag nest pas positionne la destination est
directement connectee au routeur, cest donc un cas de remise directe vers ladresse IP de
destination.
3

La commande netstat -rn affiche la table de routage sous Linux ou Windows.

25

H La route est un ordinateur (host), la destination est une adresse dordinateur. Dans ce
cas, la correspondance entre ladresse de destination du paquet a` (( router ))et lentree
destination de la table de routage doit etre totale. Si ce flag nest pas positionne, la route
designe un autre reseau et la destination est une adresse de reseau ou de sous-reseau. Ici,
la correspondance des identificateurs de reseaux est suffisante.
D La route a ete creee par une redirection.
M La route a ete modifiee par une redirection.
Ladresse 127.0.0.1 est celle de lo0, linterface de loopback, qui sert `a pouvoir faire communiquer une machine avec elle-meme sans passer physiquement par la carte reseau.
La destination default sert `a indiquer la destination de tous les datagrammes qui ne peuvent
etre (( routes ))par lune des autres routes. Elle est placee en derni`ere position, puisque la decision
de routage se fait selon lordre des lignes de la table. La premi`ere entree (ligne) dont ladresse de
destination est egale `a ladresse de destination du paquet a` router (( modulo le masque ))indique
linterface de sortie par laquelle expedier ce paquet.

4.4

La gestion des erreurs.

Le protocole ICMP (Internet Control Message Protocol ) organise un echange dinformation


permettant aux routeurs denvoyer des messages derreurs a` dautres ordinateurs ou routeurs.
Bien quICMP (( tourne ))au-dessus de IP il est requis dans tous les routeurs cest pourquoi on le
place dans la couche IP. Le but dICMP nest pas de fiabiliser le protocole IP, mais de fournir a`
une autre couche IP, ou `a une couche superieure de protocole (TCP ou UDP), le compte-rendu
dune erreur detectee dans un routeur. Un message ICMP etant achemine `a linterieur dun
datagramme IP4 illustre dans la figure 18, il est susceptible, lui aussi, de souffrir derreurs de
transmission. Mais la r`egle est quaucun message ICMP ne doit etre delivre pour signaler une

Fig. 18 Encapsulation dun message ICMP.


erreur relative a` un message ICMP. On evite ainsi une avalanche de messages derreurs quand
le fonctionnement dun reseau se deteriore.
Le champ type peut prendre 15 valeurs differentes specifiant de quelle nature est le message
envoye. Pour certains types, le champ code sert a` preciser encore plus le contexte demission
du message. Le checksum est une somme de controle de tout le message ICMP calculee comme
dans le cas de len-tete dun datagramme IP (voir la section 4.1). Le detail des differentes
categories de messages est donne dans la liste ci-dessous o`
u chaque alinea commence par le
couple (type, code) de la categorie decrite.
(0,0) ou (8,0) Demande (type 8) ou reponse (type 0) decho dans le cadre de la commande
ping.
(3,0-13) Compte-rendu de destination inaccessible delivre quand un routeur ne peut delivrer
un datagramme. Le routeur gen`ere et envoie ce message ICMP `a lexpediteur de ce datagramme. Il obtient ladresse de cet expediteur en lextrayant de len-tete du datagramme,
4

Len-tete de ce datagramme contient un champ protocole egal `a 1.

26

il ins`ere dans les donnees du message ICMP toute len-tete ainsi que les 8 premiers octets
du datagramme en cause. Une liste non exhaustive des differents codes derreurs possibles
est :
0 Le reseau est inaccessible.
1 La machine est inaccessible.
2 Le protocole est inaccessible.
3 Le port est inaccessible.
4 Fragmentation necessaire mais bit de non fragmentation positionne a` 1.

5 Echec
de routage de source.
6 Reseau de destination inconnu.
7 Machine destinataire inconnue.
8 Machine source isolee (obsol`ete)
9 Communication avec le reseau de destination administrativement interdite.
10 Communication avec la machine de destination administrativement interdite.
11 Reseau inaccessible pour ce type de service.
12 Machine inaccessible pour ce type de service.
13 Communication administrativement interdite par filtrage.
(4,0) Demande de limitation de production pour eviter la congestion du routeur qui envoie
ce message.
(5,0-3) Demande de modification de route expediee lorsquun routeur detecte quun ordinateur utilise une route non optimale, ce qui peut arriver lorsquun ordinateur est ajoute au
reseau avec une table de routage minimale. Le message ICMP genere contient ladresse
IP du routeur a` rajouter dans la table de routage de lordinateur. Les differents codes
possibles ci-apr`es expliquent le type de redirection `a operer par lordinateur.
0 Redirection pour un reseau.
1 Redirection pour une machine.
2 Redirection pour un type de service et reseau.
3 Redirection pour un type de service et machine.
(9,0) Avertissement de routeur expedie par un routeur.
(10,0) Sollicitation de routeur diffuse par une machine pour initialiser sa table de routage.
(11,0) TTL detecte `a 0 pendant le transit du datagramme IP, lorsquil y a une route circulaire ou lors de lutilisation de la commande traceroute.
(11,1) TTL detecte a` 0 pendant le reassemblage dun datagramme.
(12,0) Mauvaise en-tete IP.
(12,1) Option requise manquante.
(13-14,0) Requete (13) ou reponse (14) timestamp, destampillage horaire.
(15,0) et (16,0) devenues obsol`etes.
(17-18,0) Requete (17) ou reponse (18) de masque de sous-reseau.

27

Les protocoles TCP et UDP.

On presente ici les deux principaux protocoles de la couche transport dinternet que sont
les protocoles TCP (Transmission Control Protocol ) et UDP (User Datagram Protocol ). Tous
les deux utilisent IP comme couche reseau, mais TCP procure une couche de transport fiable
(alors meme que IP ne lest pas), tandis que UDP ne fait que transporter de mani`ere non fiable
des datagrammes.

5.1

Le protocole UDP.

Le protocole UDP (rfc 768) utilise IP pour acheminer, dun ordinateur a` un autre, en
mode non fiable des datagrammes qui lui sont transmis par une application. UDP nutilise pas
daccuse de reception et ne peut donc pas garantir que les donnees ont bien ete recues. Il ne
reordonne pas les messages si ceux-ci narrivent pas dans lordre dans lequel ils ont ete emis et
il nassure pas non plus de controle de flux. Il se peut donc que le recepteur ne soit pas apte `a
faire face au flux de datagrammes qui lui arrivent. Cest donc a` lapplication qui utilise UDP
de gerer les probl`emes de perte de messages, duplications, retards, desequencement, ...
Cependant, UDP fournit un service supplementaire par rapport a` IP, il permet de distinguer
plusieurs applications destinataires sur la meme machine par lintermediaire des ports. Un port
est une destination abstraite sur une machine identifie par un numero qui sert dinterface `a
lapplication pour recevoir et emettre des donnees. Par exemple,
...
discard
systat
daytime
...

9/udp
11/udp
13/udp

sink null
users

est un court extrait du fichier /etc/services de la machine deneb.info-ua dans lequel sont
enregistres les numeros de port utilises par chaque application. On y voit que lapplication daytime utilise le port 135 . Chaque datagramme emis par UDP est encapsule dans un datagramme
IP en y fixant `a 17 la valeur du protocole (voir la section 4.1). Le format detaille dun datagramme UDP est donne dans la figure 19. Les numeros de port (chacun sur 16 bits) identifient

Fig. 19 Structure dun datagramme UDP.


les processus emetteur et recepteur. Le champ longueur contient sur 2 octets la taille de len-tete
5

Certains numeros de port (comme 13) sont statiques cest-`a-dire que tous les syst`emes les associent de
la meme mani`ere aux applications et tous les logiciels applicatifs se conforment `a cette r`egle. Dautres sont
dynamiques et un numero de port est attribue par les logiciels de communication `a lapplication au moment o`
u
celle-ci le demande.

28

et des donnees transmises. Puisquun datagramme UDP peut ne transmettre aucune donnee la
valeur minimale de la longueur est 8. Le checksum est un total de controle qui est optionnel car
il nest pas indispensable lorsque UDP est utilise sur un reseau tr`es fiable. Sil est fixe `a 0 cest
quen fait il na pas ete calcule. De mani`ere precise, UDP utilise len-tete et les donnees mais
egalement une pseudo-entete pour aboutir a` lensemble decrit figure 20. Cette pseudo en-tete

Fig. 20 Champs utilises pour le calcul du checksum UDP.


comprend les adresses IP source6 et destination du datagramme ainsi quun eventuel octet de
` partir de cet ensemble, le total de
bourrage pour aboutir a` un nombre doctets total pair. A
controle est calcule de la meme mani`ere que dans le cas du datagramme IP (voir section 4.1).
Si le resultat donne un checksum nul, son complement a` 1, cest-`a-dire 65535 (16 bits 1), est
en fait place dans la zone de controle. Ce detail permet deviter la confusion avec le checksum
nul qui indique quil na pas ete calcule. Precisons enfin que la pseudo en-tete et loctet de
bourrage ne sont pas transmis et quils ninterviennent pas dans le calcul du champ longueur.
` la reception UDP utilise ladresse IP de destination et ladresse IP emettrice inscrite dans
A
len-tete du datagramme IP pour calculer, de la meme mani`ere qu`a lemission, une somme de
controle qui permettra dassurer que le datagramme est delivre sans erreur et a` la bonne machine. Si une erreur de transmission est detectee, le datagramme UDP est detruit (( en silence )).
Sinon, UDP oriente les donnees du datagramme vers la file dattente associee au numero de
port destination pour que lapplication associee a` celui-ci puisse les y lire.

5.2

Le protocole TCP.

Contrairement `a UDP, TCP est un protocole qui procure un service de flux doctets oriente
connexion et fiable. Les donnees transmises par TCP sont encapsulees dans des datagrammes
IP en y fixant la valeur du protocole `a 6.
Le terme oriente connexion signifie que les applications dialoguant a` travers TCP sont
considerees lune comme un serveur, lautre comme un client, et quelles doivent etablir une
connexion avant de pouvoir dialoguer (comme dans le cas de lutilisation du telephone). Les
ordinateurs verifient donc prealablement que le transfert est autorise, que les deux machines sont
6

Lobtention de cette adresse IP source oblige UDP `a entrer en contact avec sa couche IP. En effet, sur un
ordinateur relie a` plusieurs reseaux ladresse IP source est celle de linterface de sortie et celle-ci est fonction de
la destination finale et de la table de routage geree par IP. Ce dialogue UDP/IP preliminaire `a lencapsulation
du datagramme UDP est une leg`ere entorse a` la notion de separation en couches. Elle est rendue necessaire,
voire indispensable, pour pouvoir sassurer pleinement de la remise `a bonne destination des datagrammes UDP.

29

pretes en sechangeant des messages specifiques. Une fois que tous les details ont ete precises,
les applications sont informees quune connexion a ete etablie et quelles peuvent commencer
leurs echanges dinformations. Il y a donc exactement deux extremites communiquant lune avec
lautre sur une connexion TCP7 . Cette connexion est bidirectionnelle simultanee (full duplex ) et
composee de deux flots de donnees independants et de sens contraire. Il est cependant possible
dinclure dans len-tete de segments TCP dune communication de A vers B des informations
relatives a` la communication de B vers A. Cette technique de superposition (piggybacking)
permet de reduire le trafic sur le reseau.
Tout au long de la connexion, TCP echange un flux doctets sans quil soit possible de
separer par une marque quelconque certaines donnees. Le contenu des octets nest pas du tout
interprete par TCP, cest donc aux applications dextremite de savoir gerer la structure du flot
de donnees.
Si elles sont trop volumineuses, les donnees a` transmettre pour une application sont fractionnees en fragments dont la taille est jugee optimale par TCP. A linverse, TCP peut regrouper
des donnees dune application pour ne former quun seul datagramme de taille convenable de
mani`ere a` ne pas charger inutilement le reseau. Cette unite dinformation emise est appelee segment. Certaines applications demandent que les donnees soient emises immediatement, meme si
le tampon nest pas plein. Pour cela, elles utilisent le principe du push pour forcer le transfert.
Les donnees sont alors emises avec un bit marquant cela pour que la couche TCP receptrice du
segment remette immediatement les donnees a` lapplication concernee.
La fiabilite fournie par TCP consiste a` remettre des datagrammes, sans perte, ni duplication,
alors meme quil utilise IP qui lui est un protocole de remise non fiable. Ceci est realise a` laide
de la technique generale de laccuse de reception (ACK ) presentee de mani`ere simplifiee dans
la figure 21 Chaque segment est emis avec un numero qui va servir au recepteur pour envoyer

Fig. 21 Echanges
de segments TCP.
un accuse de reception. Ainsi lemetteur sait si linformation quil voulait transmettre est bien
parvenue a` destination. De plus, `a chaque envoi de segment, lemetteur arme une temporisation
qui lui sert de delai dattente de laccuse de reception correspondant a` ce segment. Lorsque la
temporisation expire sans quil nait recu de ACK, lemetteur consid`ere que le segment sest
perdu8 et il le reexpedie. Mais il se peut que la temporisation expire alors que le segment a
ete transmis sans probl`eme, par exemple suite `a un engorgement de reseau ou a` une perte de
7

UDP permet lui de mettre en place du broadcasting et du multicasting (via le protocole IGMP) lorsquune
application veut envoyer un unique message simultanement vers plusieurs destinataires.
8
Cela peut arriver puisque la couche IP sous-jacente nest pas fiable.

30

laccuse de reception correspondant. Dans ce cas, lemetteur reemet un segment alors que cest
inutile. Mais le recepteur garde trace des numeros de segments recus, donc il est apte a` faire la
distinction et peut eliminer les doublons.
La figure 22 donne le format dun segment TCP qui sert aux trois fonctionnalites de TCP :
etablir une connexion, transferer des donnees et liberer une connexion. Len-tete, sans option,

Fig. 22 Format du segment TCP.

dun segment TCP a une taille totale de 20 octets et se compose des champs suivants.
Le port source et le port destination identifient les applications emettrice et receptrice. En
les associant avec les numeros IP source et destination du datagramme IP qui transporte
un segment TCP on identifie de mani`ere unique chaque connexion9 .
Le numero de sequence 10 donne la position du segment dans le flux de donnees envoyees
par lemetteur ; cest-`a-dire la place dans ce flux du premier octet de donnees transmis
dans ce segment.
Le numero daccuse de reception contient en fait le numero de sequence suivant que le
recepteur sattend a` recevoir ; cest-`a-dire le numero de sequence du dernier octet recu
avec succ`es plus 1. De mani`ere precise, TCP nacquitte pas un a` un chaque segment quil
recoit, mais acquitte lensemble du flot de donnees jusqu`a loctet k 1 en envoyant un
acquittement de valeur k. Par exemple, dans une transmission de 3 segments de A vers
B, si les octets de 1 `a 1024 sont recus correctement, alors B envoie un ACK avec la
valeur 1025. Puis, si le segment suivant contenant les octets de 1025 `a 2048 se perd et
que B recoit dabord correctement le segment des octets de 2049 `a 3072, B nenverra pas
daccuse de reception positif pour ce troisi`eme segment. Ce nest que lorsque B recevra le
deuxi`eme segment, quil pourra envoyer un ACK avec la valeur 3073, que A interpretera
comme lacquittement des deux derniers segments quil a envoyes. On appelle cela un
acquittement cumulatif.
9
10

Cette association (numero IP, port) est appelee socket.


Cest un entier non signe code sur 32 bits qui retourne `a 0 apr`es avoir atteint la valeur 231 1.

31

La longueur den-tete contient sur 4 bits la taille de len-tete, y compris les options
presentes, codee en multiple de 4 octets. Ainsi une en-tete peut avoir une taille variant
de 20 octets (aucune option) a` 60 octets (maximum doptions).
Le champ reserve comporte 6 bits reserves `a un usage ulterieur.
Les 6 champs bits de code qui suivent permettent de specifier le role et le contenu du
segment TCP pour pouvoir interpreter correctement certains champs de len-tete. La
signification de chaque bit, quand il est fixe a` 1 est la suivante.
URG, le pointeur de donnees urgentes est valide.
ACK, le champ daccuse de reception est valide.
PSH, ce segment requiert un push.
RST, reinitialiser la connexion.
SYN, synchroniser les numeros de sequence pour initialiser une connexion.
FIN, lemetteur a atteint la fin de son flot de donnees.
La taille de fenetre est un champ de 16 bits qui sert au controle de flux selon la methode
de la fenetre glissante. Il indique le nombre doctets (moins de 65535) que le recepteur est
pret a` accepter. Ainsi lemetteur augmente ou diminue son flux de donnees en fonction
de la valeur de cette fenetre quil recoit.
Le checksum est un total de controle sur 16 bits utilise pour verifier la validite de len-tete
et des donnees transmises. Il est obligatoirement calcule par lemetteur et verifie par le
recepteur. Le calcul utilise une pseudo-entete analogue a` celle dUDP (voir la section 5.1).
Le pointeur durgence est un offset positif qui, ajoute au numero de sequence du segment,
indique le numero du dernier octet de donnee urgente. Il faut egalement que le bit URG
soit positionne `a 1 pour indiquer des donnees urgentes que le recepteur TCP doit passer
le plus rapidement possible `a lapplication associee a` la connexion.
Loption la plus couramment utilisee est celle de la taille maximale du segment TCP
quune extremite de la connexion souhaite recevoir. Ainsi, lors de letablissement de la
connexion il est possible doptimiser le transfert de deux mani`eres. Sur un reseau `a haut
debit, il sagit de remplir au mieux les paquets, par exemple en fixant une taille qui soit
telle que le datagramme IP ait la taille du MTU du reseau. Sinon, sur un reseau a` petit
MTU, il faut eviter denvoyer des grands datagrammes IP qui seront fragmentes, car la
fragmentation augmente la probabilite de pertes de messages.
Letablissement et la terminaison dune connexion suit le diagramme dechanges de la figure 23. Lextremite demandant louverture de la connexion, est le client. Il emet un segment
SYN (o`
u le bit SYN est fixe a` 1) specifiant le numero de port du serveur avec lequel il veut
se connecter. Il expedie egalement un numero de sequence initial N . Cette phase est appelee
ouverture active et (( consomme ))un numero de sequence. Le serveur repond en envoyant un
segment dont les bits ACK et SYN sont fixes a` 1. Ainsi, dans un meme segment il acquitte
le premier segment recu avec une valeur de ACK=N + 1 et il indique un numero de sequence
initial. Cette phase est appelee ouverture passive. Le client TCP doit evidemment acquitter ce
deuxi`eme segment en renvoyant un segment avec ACK=P + 111 .
La terminaison dune connexion peut etre demandee par nimporte quelle extremite et se
compose de deux demi-fermetures puisque des flots de donnees peuvent secouler simultanement
dans les deux sens. Lextremite qui demande la fermeture (le client dans lexemple de la figure 23
emet un segment o`
u le bit FIN est fixe a` 1 et o`
u le numero de sequence vaut N 0 . Le recepteur du
segment lacquitte en retournant un ACK=N 0 + 1 et informe lapplication de la demi-fermeture
11

Un mecanisme comportant 2 couples de segments (SYN, ACK SYN) g`ere le cas o`


u deux demandes de
connexion ont lieu en meme temps chacune dans un sens.

32


Fig. 23 Etablissement
et terminaison dune connexion TCP.
` partir de l`a, les donnees ne peuvent plus transiter que dans un sens (de
de la connexion. A
lextremite ayant accepte la fermeture vers lextremite layant demandee), et dans lautre seuls
des accuses de reception sont transmis. Quand lautre extremite veut fermer sa demi-connexion,
elle agit de meme que precedemment ce qui entrane la terminaison compl`ete de la connexion.
Le transfert de donnees de TCP est de deux types : le transfert interactif dans lequel
chaque segment transporte tr`es peu doctets, voire un seul, et le transfert en masse o`
u chaque
segment transporte un maximum doctets. Un exemple de transfert interactif est celui genere
par la commande rlogin lancee depuis un client vers un serveur. Dans ce cas de figure, tous
les caract`eres tapes par lutilisateur sur le client sont envoyes vers le serveur en utilisant un
caract`ere par segment, et ils sont ensuite renvoyes en sens inverse par le serveur pour un echo
sur lecran du client. Tous les segments echanges dans ce cas l`a ont leur bit PSH fixe a` 1. Or,
tout segment doit etre acquitte dans un sens comme dans lautre ; ce qui devrait amener au
diagramme dechanges illustre dans le a) de la figure 24. En fait, TCP g`ere ce type dechange
avec la procedure dacquittement retarde qui consiste `a envoyer lacquittement en lincluant dans
un segment qui transporte egalement des donnees comme illustre dans le b) de la figure 24.
Pour cela lacquittement est generalement retarde de 200ms dans le but dattendre deventuelles
donnees `a transmettre. Cependant, dans ce contexte la frappe de la commande date sur le client
provoquerait quand meme lechange de 15 datagrammes IP de 41 octets12 , pour transporter
a` chaque fois seulement 1 octet utile. Ce type de situation est peu genant sur un LAN mais
devient tr`es vite prejudiciable au bon fonctionnement dun WAN. Une solution `a ce probl`eme
est lalgorithme de Nagle (RFC 896) qui specifie quune connexion TCP ne peut avoir seulement
un petit segment non encore acquitte. Ainsi, si un reseau a un fort debit et nest pas du tout
12

Pour chacun des 5 caract`eres d a t e newline, il faut 1 octet pour le caract`ere+20 octets den-tete TCP+
20 octets den-tete IP.

33


Fig. 24 Echange
de donnees interactif.

charge la procedure sera celle du b) de la figure 24. Par contre, d`es que le temps de transfert
est non negligeable, les acquittements vont arriver plus lentement que la frappe des caract`eres
par lutilisateur du poste client. Dans ce cas, la couche TCP du client va accumuler de petits
volumes de donnees (quelques caract`eres) et les envoyer dans le meme segment TCP diminuant
ainsi considerablement le nombre dechanges comme illustre dans le c) de la figure 24. Dans les
cas o`
u de petits messages doivent etre remis sans delai (mouvement de souris dans le cas dun
serveur X) lalgorithme de Nagle doit etre invalide pour donner une impression de temps reel.
Dans le cas dun transfert de donnees en masse, TCP utilise la technique de la fenetre
glissante pour controler le flux des echanges. Ceci est primordial quand un micro ordinateur
communique avec un gros ordinateur, sinon le tampon dentree du micro sera tr`es vite sature.
Ceci consiste en un controle de flux de bout en bout. Mais il sagit aussi de reguler le trafic en
fonction de la charge des routeurs et du debit des reseaux traverses. On rappelle que lensemble
dun flux de donnees unidirectionnel dune machine A vers une machine B est constitue dune
sequence doctets tous numerotes individuellement. La fenetre glissante va consister a` fixer quels
sont les octets appartenant `a ce flux que A peut emettre comme cest illustre dans la figure 25.
Dans cet exemple la fenetre couvre les octets de 4 a` 9, car la taille de la fenetre courante est 6
fentre courante
fentre
utilisable

octets mis
et acquitts

octets mis
et non acquitts

8
octets
prts

10

11

12

.......

octets bloqus

Fig. 25 Fenetre glissante de TCP.


et que tous les octets jusquau troisi`eme inclus ont ete emis et acquittes. A tout instant TCP
calcule sa fenetre utilisable qui est constituee des octets presents dans la fenetre et non encore
envoyes. Ces octets sont generalement immediatement transmis. Pour le flot de A vers B, la
taille de la fenetre est controlee par B qui envoie dans chacun de ses accuses de reception la
taille de la fenetre quil desire voir utiliser. Si la demande exprime une augmentation, A deplace
le bord droit de sa fenetre courante et emet immediatement les octets qui viennent dy entrer.
Si la demande exprime une diminution, il est deconseille de deplacer reellement le bord droit
de la fenetre vers la gauche. Ce retrecissement est opere lors des glissements de la fenetre vers
34

ouverture
de la connexion
1

SYN sq=1000
MSS=1024
ACK=1001 WIN=4096

PSH 10012025

PSH 30494073

2024 2025

3048 3049

4072 4073

5096 5097 6120 6121

7144 7145

8168

fenetre annonce par segment 2

ACK

dbut
4
des transferts
5

1001
2

mis par 4
mis par 5

PSH 20253049

mis par 6

ACK=3049 WIN=4096

ACK=4073 WIN=3072

acquitts par 7

fenetre annonce par 7


acquitt par 8

PSH 40735097

fenetre annonce par 8

mis par 9
ACK=5097 WIN=4096
11

PSH 50976121

12

PSH 61217145

13

PSH 71458169

10

acquitt par 10

fenetre annonce par 10


mis par 11
mis par 12
mis par 13

ACK=8169 WIN=4096

14

acquitts par 14
annonce par 14

fermeture
de la connexion

Fig. 26 Exemple devolution de fenetre glissante.

la droite avec larrivee des accuses de reception.


La figure 26 illustre13 les echanges de segments entre un emetteur A et un recepteur B et
levolution de la fenetre glissante de A suivant les indications de B.

R
eseau priv
e et acc`
es `
a linternet

Le reseau du departement dinformatique de luniversite dAngers schematise dans la figure 27 est un exemple de reseau IP prive. Cest-`a-dire que lensemble des machines qui le
composent ont recu une adresse IP dite privee ((( non routable ))) comme defini `a la section 1 et
appartenant `a lun des deux reseaux 172.20.0.0/16, ou 192.168.99.0/24. Seule la machine

tines est une passerelle dont lune des interfaces est publique 193.49.146.121. Etant
donne
cet adressage prive, aucune machine du reseau prive nest directement joignable de lexterieur.
Par consequent, sans configuration supplementaire, elle ne pourrait pas non plus etablir une
connexion vers lexterieur, puisque ladresse demission des paquets IP quelle emettrait vers
lexterieur ne pourrait en aucun cas servir (( dadresse de retour )) pour lui renvoyer des informations.
La suite decrit les differents moyens mis en uvre pour rendre possibles certaines communications entre les postes du reseau prive et dautres postes sur internet, tout en assurant un
maximum de securite (eviter les intrusions, controler les acc`es en entree et en sortie, . . .). Ainsi,
avec seulement 1 adresse IP publiques il devient possible de connecter a` linternet un grand
nombre de machines.
13

Seules les informations necessaires `


a la comprehension du processus de fenetre glissante sont presents,
dautres details sont omis.

35

Fig. 27 Schema du reseau du departement dinformatique de lUniversite dAngers


En premier lieu il existe un syst`eme de proxy applicatif heberge par la machine tines. Le
principe du mandataire ou (( proxy ))web permet a` tout navigateur (moyennant sa configuration
indiquant que le proxy est le service iproxy.info-ua) du reseau prive dacceder aux sites webs
externes. Cela consistera a` faire relayer la requete par le proxy comme illustre dans la figure 28.
Ici le relai est dit applicatif ou de niveau 7 (en reference au mod`ele OSI) car cest au niveau
de lapplication elle-meme (ici HTTP) que seffectue le travail. Les memes principes peuvent
sappliquer pour la mise en place dun proxy FTP ou pour toute autre application basee sur
TCP ou UDP.
Cependant, si lon veut gerer globalement lacc`es a` linternet des postes internes on peut travailler a` un plus bas niveau (TCP et UDP)en utilisant des techniques de translation dadresses
de reseau dite NAT (Network Address Translation). Nous ne decrirons pas le principe de NAT
statique (voir http://www.usenet-fr.net/fur/comp/reseaux/nat.html) car il ne permet
pas de faire deconomies dadresses IP publiques puisquil associe chaque adresse privee a` une
adresse publique.
De son cote la NAT dynamique, dite IP masquerading, permet dassocier plusieurs adresses
privees `a une meme adresse publique en agissant sur les ports TCP ou UDP des connexions

quils relaient comme ceci est decrit dans la figure 29. Evidemment,
pour les protocoles ou
applications qui ne sappuient pas sur TCP ou UDP, comme ICMP par exemple, il faut mettre
en place un relayage particulier.
Mais, la principale limitation de lIP masquerading est quil ne permet la communication
entre une machine du reseau prive et une sur linternet que dans le cas o`
u la connexion est initiee
de linterieur. Dun cote, cela augmente la securite du reseau interne. Dun autre, cela empeche
toute offre de service a` partir dune machine interne. Cette limitation dacc`es depuis lexterieur
36

peut etre levee si lon utilise la technique de portforwarding decrite dans la figure 30. Dans ce cas,
la machine passerelle va relayer vers une machine interne assurant le service demande toutes les
demandes qui lui parviennent sur le port correspondant a` lapplication demandee. Dans le cas
du reseau de la figure 27 ce syst`eme est implante sur la machine tines. Ainsi, si lon cherche `a
etablir une connexion ssh depuis linternet vers la machine sirius.info.univ-angers.fr (nom
symbolique pour ladresse IP publique 193.49.146.121) cela aboutira `a etablir cette connexion
ssh vers la machine du reseau prive sirius.info-ua dadresse IP privee 172.20.41.7.

37

Proxy (mandataire) web / 1


Comment accde-t-on un site ?
Exemple de l'accs google depuis un poste tudiant du
dpartement d'info de l'Universit d'Angers via le proxy web

routeur
Internet
iproxy.info-ua

193.49.146.122
216.239.37.101

172.20.41.2
www.google.fr
172.20.41.210
p0.info-ua

Proxy (mandataire) web / 2


p0.info-ua

iproxy.info-ua
iproxy.info.univ-angers.fr

le navigateur est configur


pour envoyer toutes ses requtes
iproxy.info-ua sur le port 3128

www.google.fr

Envoi de la requte http


172.20.41.210 172.20.41.2 5555 3128 Get www.google.fr/index.html
Mmorisation de la demande
de 172.20.41.210 partir du port 5555
et rexpdition de la requte
193.49.146.122

216.239.37.101 4444

80

Get www.google.fr/index.html
Rception, excution de la requte
et envoi de la rponse http

216.239.37.101

193.49.146.122

Dlivrance de la demande initiale

172.20.41.2

172.20.41.210 3128

5555 <html>....</html>

Rception de la
rponse http

Expditeur Destinataire

Port

Port

source

dest

Donnes http

Pseudo trame http

Fig. 28 Proxy web

38

80

4444

<html>....</html>

Fig. 29 IP masquerading

39

Fig. 30 Port forwarding

40