Vous êtes sur la page 1sur 41

Le Protocole ICMP (1)

Le protocole ICMP (Internet Control Message Protocol) permet denvoyer


des messages de contrle ou derreur vers dautres machines ou passerelles.
Beaucoup derreurs sont causes par lmetteur, mais dautres sont des
des problmes dinterconnexions rencontres sur lInternet :
Machine destination dconnecte,
Dure de vie du datagramme expire,
Congestion de passerelles intermdiaires.

Le Protocole ICMP(2)

Si une passerelle dtecte un problme sur un datagramme IP, elle le dtruit


et met un message ICMP pour informer lmetteur initial.
Les messages ICMP sont vhiculs lintrieur de datagrammes IP et sont
routs comme nimporte quel datagramme IP sur linternet.
Une erreur engendre par un message ICMP ne peut donner naissance un
autre message ICMP (vite leffet cummulatif).

ICMP : format des messages


TYPE
CODE
CHECKSUM
HEAD-DATA
TYPE
0
3
4
5
8
11
12

8 bits; type de message


8 bits; informations complmentaires
16 bits; champ de contrle
en-tte datagramme + 64 premiers bits des
donnes.

Message ICMP
Echo Reply
Destination Unreachable
Source Quench
Redirect (change a route)
Echo Request
Time Exceeded (TTL)
Parameter Problem with a
Datagram

TYPE
13
14
15
16
17
18

Message ICMP
Timestamp Request
Timestamp Reply
Information Request
(obsolete)
Information Reply
(obsolte)
Address Mask Request
Address Mask Reply

ICMP : format des commandes


0

8
16
31
TYPE CODE
CHECKSUM
Identifieur

Seq. number

Donnes spcifiques . . .

IDENTIFIER et SEQUENCE NUMBER sont utiliss par lmetteur pour


contrler les rponses aux requtes, (CODE = 0).
Demande dcho et rponse dcho (Echo Request, Echo Reply )
Permettent une machine ou passerelle de dterminer la validit dun
chemin sur le rseau.
Le champ de donnes spcifiques est compos de donnes optionnelles
de longueur variable mises par la requte d'cho et devant tre
renvoyes par le destinataire si prsentes.
Utilis par les outils applicatifs tels que: ping.

ICMP : les commandes


Synchronisation des Horloges et temps de transit
Les horloges de deux machines qui diffrent de manire importante peuvent
poser des problmes pour des logiciels distribus.
Une machine peut mettre une demande dhorodatage (timestamp request)
une autre machine susceptible de lui rpondre (timestamp reply) en donnant
lheure darrive de la demande et lheure de dpart de la rponse.
Lmetteur peut alors estimer le temps de transit ainsi que la diffrence
entre les horloges locale et distante.
Le champ de donnes spcifiques comprend lheure originale (originate
timestamp) mis par le demandeur, lheure de rception (receive timestamp)
du destinataire, et lheure de dpart (transmit timestamp) de la rponse.

ICMP : les commandes


Demande et rponse dinformation (Information Request + Reply )
Ces messages taient initialement utiliss pour permettre aux
machines de connatre leur adresse IP au dmarrage du systme.
Ces commandes sont aujourdhui remplaces par les protocoles
RARP et BOOTP.
Obtention de masque de sous-rseau
Une machine peut mettre une demande de masque de sous-rseau
(Subnet Mask Request) vers une passerelle grant le sous-rseau en
question.
La passerelle transmet par une Subnet Mask Reply, ladresse de
masque de sous-rseau dans le champ de donne spcifique.

ICMP : les messages derreur


0

8
16
31
TYPE CODE
CHECKSUM
SPECIFIQUE

Format des messages


derreur ICMP

IP Header + First 64 bits

CODE indique le codage de lerreur rapporte et est spcifique chaque


type derreur,
SPECIFIQUE est un champ de donnes spcifique au type derreur,
IP HEADER + FIRST 64 bits contient len-tte IP + les premiers 64 bits
de donnes du datagramme pour lequel le message est mis.

ICMP : les messages derreur


Lorsquune passerelle met un message ICMP de type destination inaccessible, le
champ code dcrit la nature de lerreur :
0
Network Unreachable
1
Host Unreachable
2
Protocol Unreachable
3
Port Unreachable
4
Fragmentation Needed
5
Source Route Failed
6
Destination Network Unknown
7
Destination Host Unknown
8
Source Host Isolated
9
Communication with desination network administratively prohibited
10
Communication with desination host administratively prohibited
11
Network Unreachable for type of Service
12
Host Unreachable for type of Service

ICMP : contrle de congestion


Une situation de congestion se produit :
lorsquune passerelle est connecte deux rseaux aux dbits diffrents
(elle ne peut couler au rythme impos par le rseau le plus rapide),
lorsque de nombreuses machines mettent simultanment des
datagrammes vers une passerelle.
Pour palier ce problme, la machine peut mettre un message ICMP de
limitation de dbit de la source (Source Quench) vers lmetteur.
Il nexiste pas de message dannulation de limitation de dbit. La source
diminue le dbit, puis laugmente progressivement tant quelle ne reoit pas
de nouvelle demande de limitation.

ICMP : modification de route

Un message ICMP de redirection de route peut tre transmis par une


passerelle vers une machine relie au mme rseau pour lui signaler que la
route nest pas optimale.

B
Internet

R1

R2
2me routage

Route par dfaut

Redirection ICMP

Une fois la redirection effectue, les datagrammes seront achemins vers la


passerelle approprie.

ICMP : modification de route


Dans le bloc de commande, le champ SPECIFIQUE indique ladresse de la
passerelle que la machine doit utiliser pour router le datagramme;
CODE spcifie la redirection :
CODE
0
1
2
3

SIGNIFICATION
Redirect datagrams for the Network
Redirect datagrams for the Host
Redirect datagrams for the Type of Service and Network
Redirect datagrams for the Type of Service and Host

ICMP : autres compte-rendus


Lorsquune passerelle ou une machine dtecte un problme avec un
datagramme (en-tte incorrecte) non couvert par les messages ICMP
prdfinis, elle met un message Parameter Problem on a Datagram vers
lmetteur du datagramme.
Le problme rencontr consiste soit en une option manquante (dans le
datagramme), soit en une donne errone.
Dans le bloc de commande, le champ CODE indique la nature du pb:
CODE
0
1

SIGNIFICATION
erreonous data
missing option

Le champ spcifique comprend un pointeur (cod sur les 8 premiers bits, les
24 restants tant 0) servant identifier loctet erron dans le datagramme;
il est non significatif lorsque CODE = 1.

Couche Transport
TCP : Transmission Control Protocol
UDP : User Datagram Protocol

UDP : User Datagram Protocol


UDP : protocole de transport sans connexion de service applicatif :
mission de messages applicatifs : sans tablissement de connexion au
pralable
l'arrive des messages ainsi que lordonnancement ne sont pas garantis.
Identification du service : les ports
les adresses IP dsignent les machines entre lesquelles les communications
sont tablies.
Lorsqu'un processus dsire entrer en communication avec un autre
processus, il doit sadresser au processus excut sur la machine rceptrice.

UDP : les Ports

Ces destinations abstraites permettant d'adresser un service


applicatif s'appellent des ports de protocole.
L'mission d'un message se fait sur la base d'un port source et un
port destinataire.
Les processus disposent d'une interface systme leur permettant
de spcifier un port ou d'y accder (socket, ...).
Les accs aux ports sont gnralement synchrones,
Les oprations sur les ports sont tamponns (files d'attente).

UDP : Format des messages


Les messages UDP sont galement appels des datagrammes UDP.
Ils contiennent deux parties : un en-tte UDP et les donnes UDP.
0

16
31
Port UDP source
Port UDP dest.
Longueur message UDP

Checksum UDP

Format des messages UDP

Donnes ...
Les ports source et destination contiennent les numros de port utiliss par
UDP pour dmultiplexer les datagrammes destins aux processus en
attente de les recevoir.
Le port source est facultatif (gal zro si non utilis).
La longueur du message est exprime en octets (8 au minimum) ,
Le champ de contrle est optionnel (0 si non utilis).

UDP : pseudo en-tte


Lorsqu'il est utilis, le champ de contrle couvre plus d'informations que
celles contenue dans le datagramme UDP;
En effet, le checksum est calcul avec un pseudo-en-tte non transmis dans
le datagramme:
0

8
16
Adresse IP Source
Adresse IP Destination
zro

proto

31
Format du pseudo en-tte

Longueur UDP

Le champ PROTO indique l'identificateur de protocole pour IP (17= UDP)


Le champ LONGUEUR UDP spcifie la longueur du datagramme UDP sans
le pseudo-en-tte.

UDP : Multiplexage
UDP multiplexe et dmultiplexe les datagrammes en slectionnant les
numros de ports :
une application obtient un numro de port de la machine locale; ds
que l'application met un message via ce port, le champ PORT
SOURCE du datagramme UDP contient ce numro de port,
une application connat un numro de port distant afin de
communiquer avec le service dsir.
Lorsque UDP reoit un datagramme, il vrifie que celui-ci est un des
ports actuellement actifs (associ une application) et le dlivre
l'application responsable
Si ce n'est pas le cas, il met un message ICMP port unreachable, et
dtruit le datagramme.

UDP : les ports standards


Certains ports sont rservs (well-kown port assignements) :
No port
Mot-cl
Description
7
ECHO
Echo
11
USERS Active Users
13
DAYTIME
Daytime
37
TIME
Time
42
NAMESERVER Host Name Server
53
DOMAIN
Domain Name Server
67
BOOTPS
Boot protocol server
68
BOOTPC
Boot protocol client
69
TFTP
Trivial File transfert protocol
123
NTP
Network Time Protocol
161
SNMP
Simple Network Management prot.
D'autres numros de port (non rservs) peuvent tre assigns dynamiquement
aux applications.

TCP : Transmission Control Protocol

Transport fiable de la technologie TCP/IP.


Transferts tampons : dcoupage en segments
Connexions bidirectionnelles et simultanes
Service en mode connect
Garantie de non perte de messages

TCP : La connexion
une connexion de type circuit virtuel est tablie avant que les donnes
ne soient changes : appel + ngociation + transferts
Une connexion = une paire d'extrmits de connexion
Une extrmit de connexion = couple (adresse IP, port)
Exemple de connexion : ((124.32.12.1, 1034), (19.24.67.2, 21))
Une extrmit de connexion peut tre partage par plusieurs autres
extrmits de connexions
La mise en oeuvre de la connexion se fait en deux tapes :
une application (extrmit) effectue une ouverture passive en
indiquant qu'elle accepte une connexion entrante,
une autre application (extrmit) effectue une ouverture active
pour demander l'tablissement de la connexion.

TCP : Segmentation
Segmentation, contrle de flux
Les donnes transmises TCP constituent un flot d'octets de longueur
variable.
TCP divise ce flot de donnes en segments en utilisant un mcanisme de
fentrage.
Un segment est mis dans un datagramme IP.
Acquittement de messages
Contrairement UDP, TCP garantit l'arrive des messages, c'est dire
qu'en cas de perte, les deux extrmits sont prvenues.
Ce concept repose sur les techniques dacquittement de message :
lorsqu'une source S met un message Mi vers une destination D, S attend
un acquittement Ai de D avant d'mettre le message suivant Mi+1.
Si lacquittement Ai ne parvient pas S, S considre au bout d'un certain
temps que le message est perdu et remet Mi :

TCP : Acquittements

Source
Emission de Mi
Temporisation
arme

Rseau

Destination

Mi nest pas reu


Ai non envoy

Ai nest pas reu


Tempo. echue
Remission de Mi
Rception de Mi
Emission de Ai

Rception de Ai

TCP : le fentrage

La technique acquittement simple pnalise les performances puisqu'il faut


attendre un acquittement avant d'mettre un nouveau message.
Le fentrage amliore le rendement des rseaux.
La technique du fentrage : une fentre de taille T, permet l'mission d'au
plus T messages "non acquitts" avant de ne plus pouvoir mettre

TCP : le fentrage

Source

Rseau

Emission de Mi
Emission de Mi+1

Destination

Rception de Mi
Emission de Ai

Emission de Mi+2
Reception de Ai

Fentrage de taille 3

TCP : format du segment


Segment : unit de transfert du protocole TCP.

Echangs pour tablir les connexions,


Transfrer les donnes,
Emettre des acquittements,
Fermer les connexions;

10

16

Port source

24

31

Port destination

Numro de squence
Numro dacquittement
HLEN rserv Codes

fentre

Checksum

pointeur urgence

Options ventuelles
Donnes . . .

padding

TCP : format du segment

Numro de squence : le numro de squence du premier octet (NSP) de ce


segment. Gnralement la suite doctets O1, O2, ..., On (donnes du
message) est associe la suite de numro de squence NSP, NSP+1, ...,
NSP+n.
Numro dacquittement : le prochain numro de squence NS attendu par
lmetteur de cet acquittement. Acquitte implicitement les octets NS-1, NS2, etc.
Fentre: la quantit de donnes que lmetteur de ce segment est capable de
recevoir; ceci est mentionn dans chaque segment (donnes ou
acquittement).

TCP : format du segment

CODE BITS : indique la nature du segment :


URG : le pointeur de donnes urgentes est valide, les donnes sont mises
sans dlai, les donnes reues sont remises sans dlai.
SYN : utilis linitialisation de la connexion pour indiquer o la
numrotation squentielle commence. Syn occupe lui-mme un numro de
squence bien que ne figurant pas dans le champ de donnes.
FIN : utilis lors de la libration de la connexion;

TCP : format du segment

PSH : fonction push. Normalement, en mission, TCP reoit les


donnes depuis lapplicatif , les transforme en segments sa guise
puis transfre les segments sur le rseau; Un rcepteur TCP dcodant
le bit PSH, transmet lapplication rceptrice les donnes
correspondantes sans attendre plus de donnes de lmetteur.
RST : utilis par une extrmit pour indiquer lautre extrmit
quelle doit rinitialiser la connexion. Ceci est utilis lorsque les
extrmits sont dsynchronises.

TCP : format du segment

CHECKSUM : calcul du champ de contrle : utilise un pseudo-en-tte et


s'applique la totalit du segment obtenu (PROTO =6) :

Adresse IP source
Adresse IP destination
zro protocole (6)

longueur TCP

TCP : format du segment


OPTIONS
Permet de ngocier la taille maximale des segments changs. Cette
option n'est prsente que dans les segments d'initialisation de connexion
(avec bit SYN).
TCP calcule une taille maximale de segment de manire ce que le
datagramme IP rsultant corresponde au MTU du rseau. La
recommandation est de 536 octets.
La taille optimale du segment correspond au cas o le datagramme IP
nest pas fragment mais :
il nexiste pas de mcanisme pour connatre le MTU,
le routage peut entraner des variations de MTU,
la taille optimale dpend de la taille des en-ttes (options).

TCP : acquittements
Acquittements et retransmissions
Le mcanisme dacquittement de TCP est cumulatif :
il indique le numro de squence du prochain octet attendu : tous les
octets prcdents cumuls sont implicitement acquitts
Si un segment a un numro de squence suprieur au numro de
squence attendu (bien que dans la fentre), le segment est conserv
mais lacquittement rfrence toujours le numro de squence attendu.
Pour tout segment mis, TCP sattend recevoir un acquittement:
Si le segment nest pas acquitt, le segment est considr comme perdu
et TCP le retransmet.
Or un rseau dinterconnexion offre des temps de transit variables
ncessitant le rglage des temporisations;
TCP gre des temporisations variables pour chaque connexion en
utilisant un algorithme de retransmission adaptative

Fentre=900

TCP : acquittements

TCP source

Segment=300
TCP destination

Seq=3
Envoi de 300 octets
Seq=303
Ack=303
Envoi de 300 octets
Attente car
f = 900

Seq=603
Envoi de 300 octets

Attente de 303
Ack=303

Seq=303
Envoi de 300 octets
Seq=603
Envoi de 300 octets

Peut tre
conserv ==>
peut ne pas
tre rmis
car acquitt
Ack=903
entre temps

TCP : retransmissions
algorithme de retransmission adaptative
enregistre la date dmission dun segment,
enregistre la date de rception de lacquittement correspondant,
calcule lchantillon de temps de boucle A/R coul,
dtermine le temps de boucle moyen RTT (Round Trip Time) :
RTT = (a * anc_RTT) + ((1-a) * NOU_RTT))
avec 0<= a < 1
a proche de 1 : RTT insensible aux variations brves,
a proche de 0 : RTT trs sensible aux variations rapides,
calcule la valeur du temporisateur en fonction de RTT.
Les premires implmentations de TCP ont choisi un coefficient constant B
pour dterminer cette valeur : Temporisation = B * RTT avec B >1
(gnralement B=2).
Aujourdhui de nouvelles techniques sont appliques pour affiner la mesure
du RTT : lalgorithme de Karn.

TCP : retransmissions
Lalgorithme de Karn repose sur les constatations suivantes :
en cas de retransmission dun segment, lmetteur ne peut savoir si
lacquittement sadresse au segment initial ou retransmis (ambigut des
acquittements), =>lchantillon RTT ne peut donc tre calcul correctement,
TCP ne doit pas mettre jour le RTT pour les segments retransmis.
Lalgorithme de Karn combine les retransmissions avec laugmentation des
temporisations associes (timer backoff):
une valeur initiale de temporisation est calcule
si une retransmission est effectue, la temporisation est augmente
(gnralement le double de la prcdente, jusqu une valeur plafond).
Cet algorithme fonctionne bien mme avec des rseaux qui perdent des
paquets.

TCP : la congestion

Gestion de la congestion
TCP gre le contrle de flux de bout en bout mais galement les problmes
de congestion lis linterconnexion.
La congestion correspond la saturation de noeud(s) dans le rseau
provoquant des dlais dacheminement de datagrammes jusqua leur pertes
ventuelles.
Dans la technologie TCP/IP, les passerelles (niveau IP) utilisent la rduction du
dbit de la source mais TCP participe galement la gestion de la
congestion en diminuant le dbit lorsque les dlais sallongent.

TCP : connexion
Une connexion TCP est tablie en trois temps de manire assurer la
synchronisation ncessaire entre les extrmits :
TCP source

TCP destination

Syn seq=x

Syn seq=y,ack=x+1
Ack y+1

Ce schma fonctionne lorsque les deux extrmits effectuent une demande


d'tablissement simultanment.
TCP ignore toute demande de connexion, si cette connexion est dj tablie.

TCP retransmissions

Si la congestion disparat, TCP dfinit une fentre de congestion gale 1 segment et


lincrmente de 1 chaque fois quun acquittement est reu; ce mcanisme permet un
dmarrage lent et progressif :
Fentre_congestion = 1,
mission du 1er segment,
attente acquittement,
rception acquittement,
Fentre_congestion = 2,
mission des 2 segments,
attente des acquittements,
rception des 2 acquittements,
Fentre_congestion = 4,
mission des 4 segments, ...
Log2 N itrations pour envoyer N segments. Lorsque la fentre atteint une fois et demie
sa taille initiale, lincrment est limit 1 pour tous les segments acquitts de la fentre.

TCP : dconnexion

Une connexion TCP est libre en un processus dit "trois temps


modifi":
TCP source

TCP destination

Fin seq=x

ack=x+1
+ fin-> applicatif
Applicatif -> close
Fin seq=y ack=x+1
Ack y+1

TCP : ports standards


No port
20
21
23
25
37
42
43
53
79
80
110
111

Mot-cl Description
FTP-DATA
FTP
TELNET
SMTP
TIME
NAMESERVER
NICNAME
DOMAIN
FINGER
HTTP
POP3
SUNRPC

File Transfer [Default Data]


File Transfer [Control]
Telnet
Simple Mail Transfer
Time
Host Name Server
Who Is
Domain Name Server
Finger
WWW
Post Office Protocol - Version 3
SUN Remote Procedure Call

TCP : Lautomate

Rinitialisation

Dpart

Ferm
ouverture active/ SYN
fermeture

Ecoute
(Listen)

SYN/SYN+ACK

SYN
reu

ouverture
passive

Send SYN

RST

SYN
mis

SYN/SYN+ACK

Fermer

RST
Tempo. exp.

ACK

SYN+ACK/ACK

Etablie

Close/FIN
FIN/ACK

Attente
Fermer

Fermer/FIN
FIN (send)
FIN
Attente
-1

FIN/ACK

rcv
ACK of FIN

Fermeture
en cours

rcv
Dernier ACK
ACK

rcv
ACK of FIN
tempo. expire aprs
2 dure de vie de segment

FIN
Attente
-2

FIN / ACK

Tempo.
expire