Protocoles de transport TCP et UDP

Transcription

Protocoles de transport TCP et UDP
Le protocole TCP
z
z
z
TCP (Transmission Control Procedure) est un
protocole de transport bout-en-bout (Host-ToHost)
Ajoute les fonctions que le réseau ne peut
offrir et qui sont demandées par les
applications
Service de transport fiable
A. Obaid © - Programmation des réseaux
TCP 1
Services de TCP
z
z
z
z
z
z
Transport fiable et ordonné des données
Gestion de la connexion
Adressage au niveau Transport
Reprises sur erreurs
Contrôle de flux
Contrôle de la congestion
A. Obaid © - Programmation des réseaux
TCP 2
1
1
Paquet TCP
31
15
0
Adresse du port source
Adresse du port destination
Numéro de séquence
Zone de conrôle d'erreur
Numéro d'accusé de(Checksum)
réception
Long.
d ’entête
Réservée
U A S P R F
R C Y S S I
G K N H T N
Fenêtre coulissante
Champ de contrôle des erreurs
Zone d'urgence
Options
Bourrage
Données
Données
TCP 3
A. Obaid © - Programmation des réseaux
Les ports
z
Les ports correspondent aux points d'accès
de service associés aux applications
z
TCP désigne une application par son numéro
de port
Port
B
A
TCP
IP
A. Obaid © - Programmation des réseaux
Application
Transport
A
B
TCP
IP
TCP 4
2
2
Les numéros de ports
z
Les services Internet ont leurs ports associés:
20
‹ 21
‹ 23
‹ 25
‹ 53
‹ 88
‹
‹
FTP-DATA
FTP-Control
Telnet
SNMP
DOMAIN
HTTP
…
File Transfer Protocol (Data)
File Transfer Protocol (Control)
Telnet
Simple Mail Transfer Proocol
Domain Name System
Hyper Text Transfer Protocol
– Voir le fichier /etc/services
z
D'autres ports peuvent être:
– définis par les développeurs d'applications
– donnés automatiquement par le noyau
A. Obaid © - Programmation des réseaux
TCP 5
Champs du segment TCP
z
z
z
Numéro de séquence: Numéro du premier
octet du segment
Numéro d'accusé de réception: Numéro du
prochain octet a recevoir
La longueur de l'en-tête: En unités de de 32
bits
A. Obaid © - Programmation des réseaux
TCP 6
3
3
Champs du segment TCP
z
Les flags (un bit chacun):
– URG: Indique la présence de données urgentes
dans le paquet
– ACK: Acquittement pour les phases d'ouverture et
de fermeture de la connexion
– SYN: Demande d ’ouverture de connexion
– PSH : Soumet les données directement à
l'application
– RST : Re-initialise la connexion
– FIN : Demande de fermeture de la connexion
A. Obaid © - Programmation des réseaux
TCP 7
Champs du segment TCP
z
La fenêtre coulissante:
– Crédit donné à l’émetteur pour lui permettre
d’envoyer des octets
– Controle de flux
z
Zone d’urgence:
– Utilisée pour envoyer des informations express
– Si le flag URG est à 1
A. Obaid © - Programmation des réseaux
TCP 8
4
4
Ouverture de connexion
z
z
z
La connexion se fait en trois phases: Threeway handshake.
Connexion full-duplex
Chaque entité génère aléatoirement son
numéro de séquence initial (ISN)
TCP A
Active open
(CONNECT)
TCP B
Passive open
(LISTEN, ACCEPT)
SYN, -,Seq=ISNA,-,
SYN, ACK, Seq=ISNB, Acq=ISNA+1
SYN, ACK, Seq=ISNA+1, Acq=ISNB+1
TCP 9
A. Obaid © - Programmation des réseaux
Procédure de connexion
z
Diagramme d’états (Machine à états finis) de
la procédure de connexion:
Serveur
CLOSED
LISTEN/SYN/SYN+ACK
SYN REC.
CONNECT/SYN
CLOSE/-
LISTEN
SEND/SYN
RST/-
SYN SENT
SYN/SYN+ACK
ACK/-
A. Obaid © - Programmation des réseaux
ESTAB.
SYN+ACK/ACK
Client
TCP 10
5
5
Transfert des données
z
Séquencement:
– Les données sont transmises dans les paquets sous
forme d'une série d'octets (Streams)
z
Contrôle de flux:
– Crédit donné dans le champ Fenêtre coulissante (WIN)
z
Détection d'erreurs et retransmission:
– Retransmission après Timeout (Retransmission
Timeout ou RTO)
– Méthode Go-Back n
– Possibilité de faire des retransmissions sélectifs:
‹
Option SACK (Selective Ack)
A. Obaid © - Programmation des réseaux
TCP 11
Procédure de retransmission
z
z
z
On determine le temps de retransmission (RTO)
de maniere adaptative
On mesure le temps d'aller-retour (RTT)
On ajuste le RTT en utilisant une moyenne:
– RTT = α RTT + (1- α )RTT_mesuré ( 0 <= α <= 1)
– RTO = β RTT ( β=2,… )
z
D'autres méthodes plus précises de mesure du
RTO existent
A. Obaid © - Programmation des réseaux
TCP 12
6
6
Contrôle d'erreurs et
retransmission
Seq = 3 (300 octets)
Seq = 3 (300 octets)
Acq = 303
Seq = 303 (300 octets)
Acq = 303
Acq = 303
Seq = 303 (300 octets)
Erreur
SEQ = 603 (603 octets)
Acq = 303
Seq = 303 (300 octets)
Seq = 303 (300 octets)
Seq = 306 (300 octets)
RTO
dépassé
Acq = 903
Seq = 306 (300 octets)
Acq = 903
TCP 13
A. Obaid © - Programmation des réseaux
Contrôle de flux
z
L ’émetteur attend que le récepteur lui donne
4K
des crédits (dans le champ WIN). 0
write(…,2K)
Buffer de réception
Seq = 0 (2K octets)
0
2K
4K
Acq = 2048 WIN=2048
write(…,3K)
Seq = 2048 (2K octets)
4K
0
Acq = 4096, WIN=0
Émetteur
attend
read(…,2K)
Acq=4096, WIN=2048
Seq = 4096 (1K octets)
0
2K
0 1K 2K
A. Obaid © - Programmation des réseaux
4K
4K
TCP 14
7
7
Contrôle de la congestion
z
z
z
z
IP n'effectue pas de contrôle de la congestion
ICMP donne des feedback sur le réseau tout
entier
Les entités TCP doivent adapter leur flux à l'état
du réseau
Utilisation par l'émetteur des procédures:
– Démarrage lent (Slow Start)
– Évitement de la congestion
Basées sur une fenêtre adaptative de congestion
(CWind) et un seuil de Slow Start (ssthresh)
TCP 15
A. Obaid © - Programmation des réseaux
Contrôle de la congestion
25
(segments)
Taille de CWind
Cwind = 20
20
Arrivée
de timeout
15
10
ssthresh = 10
ssthresh = 8
5
RTT
Slow start
25
22
20
15
12
9
6
3
0
0
Évitement de la congestion
A. Obaid © - Programmation des réseaux
TCP 16
8
8
Fermeture de la connexion
z
z
La connexion se fait en deux temps. Chaque
côté doit fermer sa moitié de la connexion
Les données en transit doivent être traitées
CLOSE
FIN, Seq=X
FIN, ACK, Acq=X+1
CLOSING
Données
FIN
FIN, ACK
CLOSED
CLOSED
TCP 17
A. Obaid © - Programmation des réseaux
Fermeture de la connexion
z
Le diagramme d’états de la procédure de
fermeture de la connexion:
Serveur
CLOSE/FIN
FIN/ACK
(Active CLOSE)
FIN WAIT 1
ACK/FIN WAIT 2
ESTAB.
FIN/ACK
ESTAB.
FIN+ACK/ACK
FIN/ACK
(Passive CLOSE)
ACK/-
TIMED WAIT.
Timeout/CLOSED.
A. Obaid © - Programmation des réseaux
CLOSE WAIT.
CLOSE/FIN
LAST ACK.
ACK/Client
TCP 18
9
9
Les options de TCP
z
Les options les plus courantes sont:
– Timestamp: Valeur de l'horloge de l'émetteur.
Utilisée pour calculer le RTT
– Maximum Segment Size (MSS): Taille maximale de
paquet TCP
– No Operation: pour alignement sur 32 bits.
– Window Scale Factor: pour étendre la fenêtre
coulissante à 32 bits
– SACK: Usage des acquittements sélectifs
– Fin de la liste d'options
TCP 19
A. Obaid © - Programmation des réseaux
Structure des options TCP
z
z
Chaque option contient les champs Genre
(Kind), Longueur et données de l'option
Exemples: MSS et Timestamp:
kind=2
1 octet
long=2
1
kind=8
long=10
1 octet
1
A. Obaid © - Programmation des réseaux
MSS
2
Timestamp
4
Timestamp retour
4
TCP 20
10
10
Le protocole UDP
z
Le protocole UDP offre un service de transport
en datagramme (sans connexion):
– Peu de surcharge
– Pas de détection des erreurs ni des duplications
z
z
z
Protocole performant mais non fiable.
Utilisé pour les applications en temps réel et/ou
multicast (avec des outils supplémentaires)
Les applications qui ne demandent pas de
fiabilité utilisent UDP :
– DNS, TFTP, NFS, SNMP,…
TCP 21
A. Obaid © - Programmation des réseaux
Paquet UDP
15
0
Numéro de port source
31
Numéro de port destination
Longueur
Checksum
Données
A. Obaid © - Programmation des réseaux
TCP 22
11
11