Vous êtes sur la page 1sur 7

3

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.
(199.21.32.26, 1400)

(196.62.132.11, 80)

Ps

Ps
Numro de port

1400

TCP

80

TCP

IP
199.21.32.26

IP
196.62.132.11

rseau IP

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.

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS

47

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.
En-tte UDP

Donnes
Bits

16

31

Source Port

Destination Port

Length

Checksum
Data

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.

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS

48

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.
Emetteur

Destinataire Emetteur

Destinataire

Donnes 2
Erreur
timeout

Donnes non
reues : pas
d acquittement

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.

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS

49

En-tte

Donnes
Bits

1
6

Source Port

Mots

1
2

Sequence Number

Ack Number
Data
offset

5
6

Reserved

2
4

2
8

3
1

Destination Port

2
0

Window

Flags

Urgent Pointer

Checksum
Options

Padding
Data

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 4e mot de len-tte du segment.
TCP utilise un mcanisme de poigne de main mettant en uvre trois changes de segment :
three-way handshake .
Hte A

Hte B

SYN

SYN, ACK

ACK, donnes

Le transfert de donnes a
commenc

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

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS

50

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).
32 bits
Source Port

Destination Port

Emetteur

Destinataire

Sequence Number

rseau IP

Ack Number
Data
Reserved
offset

Flags

Window

Checksum

Urgent Pointer

Options

Padding
Data

U
R
G

A
C
K

P
S
H

R
S
T

S
Y
N

Three-way handshake

SYN=1, ACK=1, SEQ# = y, ACK# = x + 1

F
I
N

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

SYN=1, ACK=0, SEQ# = x

SYN=0, ACK=1, SEQ# = x + 1, ACK# = y + 1

...
ACK=1, PSH=1, SEQ# = 1000, ACK# = 3000
20 octets

60 octets

ACK=1, PSH=1, SEQ# = 3000, ACK# = 1060


ACK=1, PSH=1, SEQ# = 1060, ACK# = 3020

30 octets

ACK=1, PSH=1, SEQ# = 3020, ACK# = 1090

...

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.

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS

51

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.
Fentre 6000

Segment en
cours

Donnes reues

1001

Numro de
squence initiale 0

2001

3001

Numro de laccus
de rception 2000

4001

5001

6001

7001

Numro de
squence 4001

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.

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS

52

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
port=80

SMTP

SSH

port=25

DNS

port=22

port=53

port=161

DHCP

port=67/68

UDP

TCP
proto=6

ICMP

SNMP

proto=17

proto=1

IP

type=0x800

ARP
type=0x806

Ethernet

Les protocoles UDP et TCP Christian Bulfone / Licence MIASS

53