tcp – transmission control protocol. tcp présentation : les applications qui exigent du...

23
TCP – Transmission Control Protocol

Upload: joscelin-andrieu

Post on 04-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP – Transmission Control Protocol

Page 2: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Présentation :

Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable des données utilisent TCP

Ce protocole vérifie que les données sont correctement transmises de bout en bout et dans la séquence appropriée

TCP est un protocole fiable, orienté connexion, à flux d'octets

Page 3: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

La fiabilité de TCP provient d'un mécanisme appelé Positive Acknowledgment with Retransmission (PAR)

Le processus émetteur renvoie les données à moins qu'il n'apprenne du système distant que les données sont bien arrivées

L'unité de données échangées entre des modules TCP coopératifs est appelée un segment

Page 4: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Chaque segment contient une somme de contrôle qu'utilise le destinataire pour vérifier que les données ne sont pas endommagées

Si c’est le cas, le récepteur renvoie un acquittement positif (positive acknowledgment) à l'émetteur

Si le segment de données est endommagé, le récepteur le détruit

Après un laps de temps approprié, le processus TCP émetteur retransmet tout segment pour lequel l'acquittement n'a pas été reçu

Page 5: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

TCP est orienté connexion

Il établit une connexion logique de bout en bout entre les deux applications hôtes communiquant entre eux

Des informations de contrôle, appelées le handshake, sont échangées entre les deux points pour établir un dialogue avant de transmettre les données

TCP indique la fonction de contrôle d'un segment en modifiant le bit correspondant du champ Flags au mot long n°4 de l'en-tête de segment

Page 6: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

En fonctions des segments échangés, une connexion est soit en cours d’établissement, soit en échange de données, soit en mode de fermeture de connexion

Une connexion virtuelle sera établie entre les applications de l'émetteur et du destinataire

Pour les couches supérieurs, comme la programmation des sockets, TCP représente un service transparent

Les connexions logiques TCP sont Unicast

Page 7: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Le protocole TCP - en-tête de segment TCP :

Sur les OS Windows, le logiciel de pilotage TCP se trouve dans la bibliothèque Winsock.dll ou wsock32.dll

Ces fichiers contiennent la pile de protocoles TCP/IP sous Windows

Page 8: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

L'en-tête TCP est constitué de 20 octets qui suivent les 20 octets minimum de l'en-tête IP

Cela n'optimise pas la bande passante mais c'est le prix administratif à payer pour obtenir une connexion sécurisée de bout en bout

Cet en-tête est nécessaire même pour ne transporter qu'un segment d'accusé de réception ACK

TCP essaie d'optimiser l'envoi de segments particulièrement en les faisant de la taille la plus importante possible

Toutefois TCP tient compte des limites de la MTU sous-jacente

Page 9: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Page 10: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Port Source (16 bits)

numéro de port côté émetteur

Port Destination (16 bits)

numéro de port côté récepteur

Numéro de séquence (32bits)

offset du 1er octet de données emportées

Numéro d'acquittement (32 bits)

indique à l'autre l'offset du prochain octet de donnée attendu. Il valide implicitement les octets précédemment reçus

Offset (4 bits) indique la taille de l'en-tête TCP en mots longs de 32 bits

Réservé (6 bits) réservés pour une utilisation ultérieure

Page 11: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Flags (6bits) désigne la fonction du segment TCP courant

URG le segment contient des données urgentes (Urgent Data). Le champ Pointeur Urgent sera pris en considération

ACK le segment contient un Acknowledge

PSH des données suivent immédiatement

RST reset de la connexion

SYN établissement de la connexion et synchronisation des Numéros de Séquence

FIN l'expéditeur n'a plus de données à émettre. Demande d'interruption de la connexion

Fenêtre (16 bits)

nombre d'octets que l'expéditeur est prêt à recevoir en tenant compte de l'octet affiché dans le Numéro d'Acquittement

Somme de contrôle (16 bits)

somme de contrôle basée sur le pseudo en-tête et les données

@IP+N°protocole TCP (0x0006)+longueur du segment

Pointeur Urgent (16 bits)

indique l'offset du premier octet de données normales suivant les données urgentes se trouvant après l'en-tête TCP

Options (longueur variable)

options, par exemple la taille maximale des segments

Page 12: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Le protocole TCP - Le three-way Handshake :

Les communications TCP se déroulent en full-duplex virtuel

Emetteur et destinataire peuvent échanger des données simultanément

Les paquets d'informations échangés vont de l'octet à plusieurs méga-octets, voire sans limite

Le type de handshake employé par TCP est appelé un Three-Way Handshake parce que trois segments sont échangés

Page 13: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Page 14: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

L'hôte A commence la connexion en envoyant à l'hôte B un segment dont le bit « SYnchronize sequence Number » SYN, est à 1 et le bit ACK à 0

Ce segment signifie à l'hôte quel numéro de séquence emploiera en premier l'hôte A pour ses segments (les numéros de séquence sont employés pour conserver l'ordre des données)

L'hôte B répond à A avec un segment qui a les bits « Acknowledgment » ACK et SYN à 1

Page 15: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Le segment B acquitte la réception du segment de A et informe ce dernier par quel numéro de séquence, B va commencer

Enfin, l'hôte A envoie un segment qui acquitte la réception de celui de B et transfère les premières vraies données

Le bit ACK n’est à 0 que dans le premier segment et toujours du client vers le serveur

Page 16: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Après cet échange, l'hôte A a la preuve que le TCP distant est actif et prêt à recevoir des données

Dès que la connexion est établie, les données peuvent être transférées

Quand les modules coopératifs ont terminé les transferts de données, ils échangent un des segments administratifs contenant le bit « plus de données de l'envoyeur » (bit FIN) à 1 pour clore la connexion

Chaque segment contenant le bit FIN à 1 sera validé par un ACK qui sera l'ultime envoi de la connexion

Page 17: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

TCP considère les données qu'il envoie comme un flux continu d'octets et non comme des paquets indépendants

Il prend soin de maintenir la séquence dans laquelle les octets sont envoyés et reçus

Les champs « n° de séquence » et « n° d'acquittement » de l'en-tête du segment TCP sont de pointeurs de flux octets

Page 18: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Le standard TCP ne demande pas de commencer à numéroter les octets avec un nombre spécifique

Chaque système choisit celui qui servira de point de départ

Afin de garder la trace du flux de données, chaque bout de la connexion synchronise les systèmes de numérotage des octets en échangeant des segments SYN pendant le handshake

Le champ « n° de séquence initial » du segment SYN contient le Numéro Initial de Séquence (ISN) qui est le point de départ du système de numérotage des octets

Page 19: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Chaque octet de données est numéroté de façon séquentielle depuis l'ISN et le premier octet de données prend donc le numéro ISN+1

Le Numéro de Séquence de l'en-tête d'un segment de données identifie la position séquentielle dans le flux de données du premier octet de données dans le segment

Page 20: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Le Segment d'Acquittement (ACK) se charge de deux fonctions : l'acquittement positif et le contrôle de flux

L'acquittement dit à l'émetteur combien de données ont été reçues et combien le récepteur peut encore en accepter

Le Numéro d'Acquittement est le numéro de séquence du dernier octet reçu à l'autre bout + 1

Il s’agit en fait, du prochain octet attendu

Page 21: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Le standard ne demande pas un acquittement individuel pour chaque paquet

Le numéro d'acquittement est un acquittement positif de tous les octets jusqu'à ce numéro

Par exemple, si le premier octet envoyé et numéroté 1 et que 2000 octets ont été correctement reçus, le Numéro d'Acquittement est 2001

Page 22: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

Le champ Fenêtre contient le nombre d'octets que le récepteur peut accepter

S'il peut accepter 6 000 octets, la fenêtre sera de 6 000

La Fenêtre indique à l'émetteur qu'il peut continuer à envoyer des segments tant que le nombre total envoyé est plus petit que la fenêtre d'octets que le récepteur peut accepter

Ce dernier contrôle le flux d'octets en provenance de l'émetteur en changeant la taille de la fenêtre

Une fenêtre à 0 demande à l'émetteur de cesser la transmission jusqu'à ce qu'il reçoive une valeur de fenêtre non nulle

Page 23: TCP – Transmission Control Protocol. TCP Présentation :  Les applications qui exigent du protocole de Transport qu'il fournisse une transmission fiable

TCP

TCP est également chargé de délivrer les données reçues de IP à l'application correcte

Celle-ci est identifiée par un numéro sur 16 bits appelé Numéro de Port Destination

Le Port Source et le Port Destination sont contenus dans le premier mot long de l'en-tête du segment

Le passage correct des données depuis la Couche Application et vers elle constitue une partie importante du rôle des services de la Couche Transport