Vous êtes sur la page 1sur 7

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS 47

Les protocoles UDP et TCP



TCP comme UDP sexcute au-dessus dIP et se fonde sur les services fournis par ce dernier.

TCP (Transport Control Protocol) assure un service de transmission de donnes fiable
avec une dtection et une correction derreurs de bout en bout.

UDP (User Datagram Protocol) offre un service de transmission de datagrammes sans
connexion.

Avec TCP ou UDP, il est possible de remettre des donnes des processus dapplication
sexcutant sur une machine distante. Ces processus dapplication sont identifis par numros
de port. Une socket (historiquement dvelopp dans Unix BSD) est un point de
communication par lequel un processus peut mettre et recevoir des informations. Cest la
combinaison dune adresse IP et dun numro de port. La combinaison de 2 sockets dfinit
compltement une connexion TCP ou un change UDP.

La RFC 1060 indique les ports prdfinis pour les services :
20 : FTP
23 : Telnet
25 : SMTP
53 : DNS
69 : TFTP
80 : HTTP


1. Protocole UDP : User Datagram Protocol
Le protocole UDP permet aux applications daccder directement un service de transmission
de datagrammes, tel que le service de transmission quoffre IP.
TCP
IP
199.21.32.26
TCP
IP
196.62.132.11
rseau IP
Ps
Ps
1400 80 Numro de port
(199.21.32.26, 1400) (196.62.132.11, 80)
3

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS 48
Caractristiques dUDP :
UDP possde un mcanisme permettant didentifier les processus dapplication laide de
numros de port UDP.
UDP est orient datagrammes (sans connexion), ce qui vite les problmes lis
louverture, au maintien et la fermeture des connexions.
UDP est efficace pour les applications en diffusion/multidiffusion. Les applications
satisfaisant un modle du type interrogation-rponse peuvent galement utiliser
UDP. La rponse peut tre utilise comme tant un accus de rception positif
linterrogation. Si une rponse nest pas reue dans un certain intervalle de temps,
lapplication envoie simplement une autre interrogation.
UDP ne squence pas les donnes. La remise conforme des donnes nest pas garantie.
UDP peut ventuellement vrifier lintgrit des donnes (et des donnes seulement) avec
un total de contrle.
UDP est plus rapide, plus simple et plus efficace que TCP mais il est moins robuste.

Le protocole UDP permet une transmission sans connexion, mais aussi sans scurit. Pourtant
de nombreuses applications reposent sur UDP :
- TFTP
- DNS
- NFS
- SNMP
- RIP

Len-tte a une taille fixe de 8 octets.


Le champ Source Port occupe 16 bits. Il indique :
- le numro de port du processus metteur,
- le numro de port o on peut adresser les rponses lorsque lon ne dispose daucun autre
renseignement.
- si sa valeur est 0, cela signifie quaucun numro de port nest attribu.

Le champ Destination Port identifie le processus correspondant ladresse IP de destination
auquel on envoie les donnes UDP. UDP effectue le dmultiplexage des donnes laide de
numros de port. LorsquUDP reoit un datagramme sans numro de port, il gnre un
message derreur ICMP indiquant quil est impossible de contacter le port et il rejette le
datagramme.

Le champ Length contient la longueur du paquet UDP en octets (en-tte +donnes). La
valeur minimale est 8 et correspond un paquet o le champ de donnes est vide.
En-tte UDP Donnes
Bits
Destination Port Source Port
Length Checksum
Data
16 0 31

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS 49
Le pseudo en-tte de prfixe de len-tte UDP contient ladresse dorigine, ladresse de
destination, le protocole (UDP =17) et la longueur UDP. Ces informations sont destines
prvenir les erreurs de routage.


2. Protocole TCP : Transport Control Protocol
Les applications utilisent TCP pour garantir une transmission des donnes fiable. TCP est un
protocole fiable, orient connexion, flot doctets.

2.1. Fiabilit
Lutilisation dun mcanisme appel PAR (Positive Acknowlegment with Retransmission,
Accus de rception positif avec la retransmission) permet TCP de garantir des
transmissions fiables.

Un systme utilisant PAR envoie nouveau les donnes, moins que le systme distance ne
lui renvoie un message prcisant que les donnes sont arrives correctement.

Lunit utilise pour lchange de donnes entre modules TCP cooprants est appele
segment. Chaque segment contient un total de contrle que le destinataire utilise pour vrifier
que les donnes nont pas t endommages pendant leur transmission. Si le segment de
donnes est reu en parfait tat, le rcepteur renvoie un accus de rception positif
lmetteur. Dans la ngative, le rcepteur limine ce segment de donnes. Aprs un dlai
dattente dtermin, le module TCP denvoi retransmet les segments pour lesquels aucun
accus de rception positif na t reu.

Erreur
timeout
Donnes non
reues : pas
d acquittement
Donnes 2
Emetteur Destinataire Emetteur Destinataire

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS 50

TCP est un protocole orient connexion. Il tablit une connexion logique de bout en bout
entre deux machines-htes communicantes. Une information de contrle, appele handshake
( poigne de main ), est change entre les deux extrmits de manire tablir un dialogue
avant de procder la transmission des donnes. TCP active la fonction de contrle dun
segment en mettant 1 le bit appropri du champ Flags du 4
e
mot de len-tte du segment.

TCP utilise un mcanisme de poigne de main mettant en uvre trois changes de segment :
three-way handshake .

La machine-hte A tablit la connexion en envoyant dabord la machine-hte B un segment
contenant la squence de bits numro de la squence de synchronisation (SYN). Ce
segment indique la machine-hte B que A souhaite tablir une connexion et lui prcise le
numro de squence que A va utiliser comme numro dinitialisation de la transmission de ses
segments. (les numros de squence sont utiliss pour conserver lordre des donnes). La
machine-hte rpond A en lui renvoyant un segment contenant laccus de rception (ACK)
et les bits SYN. Le segment de B accuse rception de la bonne transmission du segment de B
et transmet alors les premires donnes.

Une fois cet change termin, le TCP de la machine-hte A constate que le TCP distance est
actif et est prt recevoir les donnes. Aprs avoir tabli la connexion, les donnes sont
transmises. Ds que les transferts de donnes entre modules coopratifs sont termins, ils
En-tte Donnes
Source Port Destination Port
Sequence Number
Ack Number
Window
Data
Options Padding
Urgent Pointer
M
o
t
s
1
2
3
4
5
6
Bits
0 2
1
8 4 6
1
0
2
4
2
8
2
1
3
Checksum
Reserved Flags
Data
offset
SYN
SYN, ACK
ACK, donnes
Le transfert de donnes a
commenc
Hte A
Hte B

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS 51
changent alors une poigne de main de type Three-way handshake dont les segments
contiennent le bit plus aucune donne transmettre (appel le bit FIN) pour indiquer la fin
de la connexion. Lchange de donnes bout en bout assure la connexion logique entre les
deux systmes.


2.2. Transfert de donnes de base
TCP se reprsente les donnes quil envoie sous la forme dun flot continu doctets et non
sous la forme de paquets indpendants. Par consquent, TCP veille maintenir lordre dans
lequel les octets ont t transmis et reus.

Les champs Sequence Number et Ack Number de len-tte du segment TCP prennent en
charge le suivi des octets.

Le standard TCP nexige pas que les octets de numrotation de dpart de chaque systme
correspondent un nombre dtermin ; chaque systme choisit le numro quil va utiliser
comme lment dinitialisation. Pour garantir un suivi correct du flot de donnes, il convient
que chaque extrmit de la connexion connaisse le numro dinitialisation de lautre
extrmit. Les deux extrmits de la connexion synchronisent les systmes de numrotation
au niveau de loctet en changeant les segments SYN pendant la poigne de main . Le
champ Sequence Number du segment SYN contient le numro de squence initiale (ISN), qui
correspond au numro dinitialisation du systme de numrotation des octets (en standard,
ISN est gal 0).

Chaque octet de donnes est numrot squentiellement partir du numro ISN, de sorte que
le numro de squence du premier octet de donnes envoy est le suivant : ISN + 1
(gnralement 1).
Le numro de squence contenu dans len-tte dun segment de donnes permet didentifier la
position squentielle du premier octet de donnes dun segment appartenant un flot de
donnes dtermin.
Source Port Destination Port
Sequence Number
Ack Number
Window
Data
Options Padding
Urgent Pointer Checksum
Reserved Flags
Data
offset
URG : tenir compte du champ
Urgent Pointer
ACK : tenir compte du champ
Acknowledgment Number
PSH : dlivrer immdiatement les
donnes au processus de couche
suprieure
RST (reset) : rinitialiser la
connexion
SYN : tablir une connexion
FIN : terminer la connexion
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
32 bits

60 octets
20 octets
30 octets
Three-way handshake
Emetteur Destinataire
...
SYN=1, ACK=0, SEQ#=x
SYN=1, ACK=1, SEQ#=y, ACK#=x +1
SYN=0, ACK=1, SEQ#=x +1, ACK#=y +1
ACK=1, PSH=1, SEQ#=1000, ACK#=3000
ACK=1, PSH=1, SEQ#=3000, ACK#=1060
ACK=1, PSH=1, SEQ#=1060, ACK#=3020
ACK=1, PSH=1, SEQ#=3020, ACK#=1090
...
rseau IP

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS 52
Exemple : si le premier octet du flot de donnes portait le numro de squence 1 (ISN=0) et
que 4000 octets de donnes ont dj t transfrs, la longueur du premier octet de donnes du
segment courant est alors 4001 octets et le numro de squence correspond 4001.

Le segment daccus de rception (ACK) excute deux fonctions - laccus de rception
positif et le contrle de flux.

Laccus de rception indique lmetteur le nombre doctets de donnes dj reus ainsi que
le nombre doctets de donnes que peut encore recevoir le rcepteur. Le numro de laccus
de rception correspond au numro de squence du dernier octet reu lextrmit distance.
Le protocole standard ne requiert pas lenvoi dun accus de rception pour chaque paquet. Le
numro de laccus de rception correspond un accus de rception positif dont le numro
est gal au nombre doctets transmis. Exemple : si le numro du premier octet transmis est 1
et que 2000 octets ont t reus correctement, le numro de laccus de rception est : 2000.

2.3. Contrle de flux
Les machines qui mettent et reoivent des segments de donnes TCP ne le font pas toutes au
mme rythme. Il peut donc arriver que lmetteur envoie ses donnes beaucoup plus
rapidement que le rcepteur ne peut les grer. Cest pourquoi TCP implmente un mcanisme
de contrle de flux de donnes.

Le champ Window contient le nombre doctets que lextrmit distance peut recevoir. Si le
rcepteur peut recevoir encore 6000 octets, le champ Window est alors gal 6000 octets. Ce
champ indique lmetteur quil peut poursuivre lenvoi de segments tant que le nombre total
doctets envoys est infrieur au nombre doctets que peut accepter le rcepteur. Celui-ci
procde au contrle du flux doctets provenant de lmetteur en modifiant la taille de la
fentre. Une fentre de taille nulle indique lmetteur dinterrompre la transmission jusqu
ce quil reoive une valeur de fentre non nulle.


Lmetteur envoie un flot de donnes TCP commenant par un numro de squence
dinitialisation gal 0. Le rcepteur a reu 2000 octets et en a accus rception, de sorte que
le numro effectif de laccus de rception est 2000.

Le rcepteur dispose galement dun espace en mmoire tampon suffisant pour stocker 6000
octets de plus ; il a ds lors insr une fentre correspondant 6000 octets. Lmetteur
transmet alors un segment de 1000 octets commenant par le numro de squence 4001.
1 1001 2001 3001 4001 5001 6001 7001
Fentre 6000
Donnes reues
Segment en
cours
Numro de
squence initiale 0
Numro de laccus
de rception 2000
Numro de
squence 4001

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS 53
Lmetteur na reu aucun accus de rception pour les octets situs au-del de 2001.
Toutefois, il continue denvoyer des donnes tant que la fentre peut les accepter. Si
lmetteur remplit la fentre et ne reoit aucun accus de rception concernant les donnes
prcdemment envoyes, il renvoie, aprs un certain dlai, les donnes partir dun premier
octet sans accus de rception.

La retransmission devrait commencer partir de loctet 2001, pour autant quaucun accus de
rception nait t reu entre-temps. Cette procdure garantit que lextrmit distance du
rseau a rceptionn les donnes transmises.


2.4. Muliplexage
TCP peut servir simultanment plusieurs processus de la mme machine par multiplexage.
Ces processus communiquent par la mme interface rseau et partagent donc la mme adresse
IP que linterface rseau. TCP associe un numro de port chaque application qui utilise ses
services.

Une connexion stablit entre le numro de port de lmetteur et celui du rcepteur. On
appelle cela les extrmits (end points) de la connexion : une extrmit est dfinie par une
paire de valeurs : ladresse IP et le numro de port. Les numros des ports source et de
destination sont contenus dans le premier mot de len-tte du segment.

TCP peut de plus transmettre les donnes sur une connexion dans un sens ou dans lautre
(connexion full duplex).

Priodiquement une RFC dcrit les numros de ports usuels. Les numros compris entre 0 et
1023 sont rservs et sont les numros de port usuels.

HTTP SMTP SSH DNS SNMP DHCP
TCP UDP
IP
Ethernet
ICMP ARP
port=80 port=25 port=22 port=53 port=161 port=67/68
proto=6 proto=17
proto=1
type=0x800 type=0x806

Vous aimerez peut-être aussi