cours ENSIB - Enseignement

Transcription

cours ENSIB - Enseignement
Christian Toinard - ENSI Bourges
1ère année filière STI
Programmation réseaux
Seconde Partie
Christian Toinard
Cours ENSI Bourges
1ière année filière Sécurité et Technologies Informatiques
Programmation réseaux
1
Seconde Partie
Christian Toinard - ENSI Bourges
1ère année filière STI
NIVEAU TRANSPORT :
Transmission Control Protocol
Programmation réseaux
2
Seconde Partie
Christian Toinard - ENSI Bourges
1ère année filière STI
Principe
RFC 793
• Service de transmission de bout en bout (un bout est une
entité d'application qui s'exécute au sein d'un processus système)
entre deux stations
• Mode connecté : ouverture et fermeture d'un circuit
virtuel (aucune trace sur le réseau IP du circuit… la connaissance du
circuit est local à chacune des stations)
•
Détecte les altérations : utilisation d'un code
détecteur d'erreur
Fiabilité : détecte et récupère les pertes, les
duplications et les déséquencements grâce à la seule
technique possible (numérotation, acquittement et
retransmission sur délai) !
Maximise le débit utile (utilisation d'une fenêtre
•
d'anticipation en émission et d'une fenêtre de réception,
acquittement porté par les segments de donnée)
Contrôle de flux du récepteur (crédit d'anticipation)
•
•
•
•
•
•
•
•
Contrôle de congestion du réseau : gestion de la
taille de la fenêtre d'émission (appelée fenêtre de
congestion) par l'émetteur (slow start : augmentation de la
fenêtre avec les acquits; congestion avoidance : l'augmentation se
fait moins vite)
Full duplex (transmission simultanée dans les deux sens)
Transmission point à point uniquement
Multiplexage par rapport aux numéros de port
Flot d'octets (ne préserve pas la limite des messages)
Envoie de données urgentes
Programmation réseaux
3
Seconde Partie
Christian Toinard - ENSI Bourges
1ère année filière STI
Transmission des segments TCP
• Echange
des données avec les
couches supérieures comme une suite d'octets
(émission et réception)
• Découpe la suite d'octets en segments
o Taille maximum 64K octets
o Dépend de l'interface de l'émetteur
• Un segment est contenu dans un datagramme IP
• Des segments typés sont échangés pour:
o Etablir la connexion (SYN, SYN, ACK)
o Envoyer des données (PUSH)
o Envoyer des acquittements (ACK)
o Gérer le contrôle de flux (ACK avec Windows Size)
o Gérer la congestion (duplication ACK, CWR et ECN-E)
o Terminer ou avorter la connexion (FIN, RST)
Programmation réseaux
4
Seconde Partie
Christian Toinard - ENSI Bourges
1ère année filière STI
Notion de connexion TCP
Les protocoles de transport de l'Internet utilise la
notion d’extrémité : [adresse IP, N°Port]
Une extrémité doit être considérée comme un
"numéro de téléphone" (normalement, une seule entité
utilise un numéro).
• une paire d’extrémités définit une connexion
TCP: [@IPA,PortA]
[@IPB,PortB]
• Attention : une même extrémité peut servir
deux connexions qui mettent en jeu des
machines différentes :
[192.168.1.1,1184]
[192.168.2.3, 80]
[192.168.3.32,1184]
Programmation réseaux
5
Seconde Partie
Christian Toinard - ENSI Bourges
1ère année filière STI
Format segment TCP (1)
Programmation réseaux
6
Seconde Partie
Christian Toinard - ENSI Bourges
1ère année filière STI
Format segment TCP (2)
Port source et destination : numéro de port sur 16 bits
pouvant être défini statiquement ou alloué dynamiquement
par chaque entité (plage statique de 0 à 32768, plage dynamique
32768 à 65535).
Numéro de séquence: donne le numéro du premier octet
des données transportée dans le segment dans le flot des
octets émis (chaque octet porte un numéro allant de 0 à 232-1).
Lorsqu'un segment SYN est émis ce numéro correspond au numéro de
séquence initial (ISN). Le premier octet porte le numéro ISN+1 car le
SYN consomme un numéro. Un segment ne contenant qu'un
acquittement ne consomme pas de numéro de séquence.
Chaque segment porte un numéro d'acquittement qui
correspond au prochain octet attendu (acquittement groupé de
tout ce qui précède). TCP n'utilise que les acquittements
positifs (pas d'acquittement négatifs) groupés ou sélectifs.
Longueur d'entête (offset): donne la longueur en
nombre de mots de 32 bits. Une entête varie de 20 à
60 octets (options).
Bit ECN-Echo: le récepteur demande à l'émetteur de
réduire sa fenêtre de congestion de moitié.
Bit CWR: l'émetteur réduit sa fenêtre de moitié.
Programmation réseaux
7
Seconde Partie
Christian Toinard - ENSI Bourges
1ère année filière STI
Format segment TCP (3)
Bit Urgent Pointer: le champ donnée urgente est
valide c'est-à-dire contient effectivement une valeur.
Bit ACK: le segment contient une valeur
d'acquittement (tout segment contient une valeur d'acquittement sauf
la demande de connexion SYN et l'avortement RST).
Bit PUSH: le segment contient une donnée à passer à
l'entité d'application réceptrice.
Bit RST: la connexion est rompue de façon anormale
inutilisé, panne, etc…).
(port
Bit SYN: le segment est une demande de connexion ou
une acceptation de connexion (bit ACK en plus).
Bit FIN: le segment est une indiquation de terminaison
d'émission. Une connexion est rompue lorsque les deux
sens d'émissions sont terminés.
Fenêtre: donne la taille du crédit d'émission qui
correspond à la place disponible chez le récepteur.
Checksum: code permet de détecter une erreur sur l'entête
TCP et les données.
Programmation réseaux
8
Seconde Partie
Christian Toinard - ENSI Bourges
1ère année filière STI
Format segment TCP (4)
Urgent Pointer: donne la position du dernier octet de la
donnée urgente qui est contenue dans les données (c'est un
déplacement à ajouter au numéro de séquence du segment).
Options:
­ Maximum Segment Size: permet à l'émetteur d'un
SYN d'annoncer la quantité maximum de données
qu'il est prêt à recevoir.
­ Window Scale: normalement la taille de la fenêtre de
crédit ne peut exéder 65535 car elle est sur 16 bits.
Pour des lignes à très haut débit (>45Mbits/s) ou des
lignes satellite permet de décaler à gauche les 16 bits
(autorise une taille de fenêtre de 65535x214 soit un gigabyte).
­ Timestamp: lorsque l'option windows size est
présente, il est nécessaire d'ajouter un entier de 32 bits
à chaque segment (évite les erreurs dûes au paquets perdus qui
réapparaissent).
­ Selective Acq: permet de donner les numéros de
séquence du début et de la fin d'un bloc contigü de
données correctement reçues mais hors séquence.
Programmation réseaux
9
Seconde Partie
Christian Toinard - ENSI Bourges
1ère année filière STI
Ouverture et Fermeture de Connexion
Ouverture de connexion
Site 1
Site 2
E met: SYN, seq=x,
winn
x tiré aléatoirement
(n° d'octet)
Reçoit SYN
E met
SYN, seq=y, ACK, ack=x+1
y tiré aléatoirement
(n° d'octet)
Reçoit SYN + ACK
E met ACK, ack=y+1
Reçoit ACK
t
Site 1
t
Fermeture deconnexion
Site 2
E met: FIN, seq=x
Reçoit FIN
Emet ACK, ack=x+1
(avertit l'application)
Reçoit ACK
E met FIN, ACK, ack=x+1
Reçoit FIN, ACK
E met ACK, ack=y+1
Reçoit ACK
t
t
Programmation réseaux
1
0
Seconde Partie
Christian Toinard - ENSI Bourges
1ère année filière STI
Transfert de données
Transfert de données
Site 2
Site 1
Emet:
PUSH+ACK,
seq=x,ack=y+1
Emet:
PUSH+ACK,
seq=x',ack=y+1
Emet:
PUSH+ACK,
seq=x'',ack=y+1
Emet: ACK,
ack=x''+1
Emet:
PUSH+ACK,
seq=y+1,ack=x''+1
t
t
Programmation réseaux
1
1
Seconde Partie
Christian Toinard - ENSI Bourges
1ère année filière STI
Diagramme d'état TCP
Programmation réseaux
1
2
Seconde Partie
Christian Toinard - ENSI Bourges
1ère année filière STI
Diagramme temporel de transmission TCP
Programmation réseaux
1
3
Seconde Partie