• Aucun résultat trouvé

Protocole TCP

Dans le document Protocoles et architectures (Page 34-41)

3.6 PROTOCOLES DE LA COUCHE TRANSPORT

3.6.1 Protocole TCP

Le service offert par le protocole TCP (Transport Control Protocol) ressemble à celui qui est offert par le protocole de transport ISO. Par rapport aux couches ISO, le protocole TCP/IP occupe quatre couches : la sous-couche réseau (subnetwork layer) qui intègre la couche physique et la couche liaison, la couche interréseau (internetwork layer) qui correspond à la couche réseau, la couche dite SPL (Service Provider Layer) qui correspond à la couche transport et, enfin, la couche application qui regroupe le reste des couches ISO (figure 3.20).

Applications variées TFTP SNMP FTP etc.

Applications variées TFTP SNMP FTP etc.

TCP UDP

IP ou ICMP

Sous-couche réseau

Application

Transport

Réseau

Liaison

Physique

FIGURE 3.20

Les familles de protocoles TCP/IP et UDP/IP au sein des couches ISO.

Aux données à transmettre viennent s’ajouter quatre en-têtes : la première pour les services, la seconde pour TCP ou UDP, la troisième pour IP et la dernière pour la sous-couche réseau. Le protocole IP est non orienté connexion; il octroie une adresse de 32 bits à chaque usager. L’adressage IP est universel et est valide quelle que soit l’application envisagée, comme l’indique la figure 3.21.

Réseau TCP/IP

Divers types d’application supportés par TCP/IP.

Le protocole TCP permet à deux couches application de se connecter et d’échanger des messages. Il offre un service de transport avec connexion, retransmission de paquets en cas d’erreurs, contrôle de flux (en octets par seconde plutôt qu’en paquets par seconde) et séquencement des messages. Les numéros de séquences sont de 32 bits, car chaque octet est numéroté et les opérations sont faites par octet. TCP transmet l’en-tête, les données et les paramètres de transmission à IP. Les paquets, dans le cadre de TCP, sont appelés des segments. La figure 3.22 présente un segment TCP, structuré en plusieurs champs représentés par groupes de 32 bits.

Port d’origine TCP

Numéro d’accusé de réception 32 bits HLEN

Les champs Port d’origine TCP et Port de destination TCP, de 16 bits chacun, indiquent le port d’origine ou de destination du segment TCP.

Le champ Numéro de séquence (sequence number) contient le numéro de séquence du segment. Rappelons qu’au niveau de la couche transport, l’information est segmentée de façon que sa longueur soit acceptable pour les couches inférieures. Le premier segment a un numéro aléatoire (généré de façon pseudo-aléatoire, c’est-à-dire n’importe où au sein d’une longue séquence connue qui est aléatoire en apparence). Le premier octet porte ce numéro aléatoire plus un.

Le champ Accusé de réception (acknowledgment number) indique le prochain numéro de séquence attendu. Ce champ confirme automatiquement l’acceptation des numéros de séquence des champs précédents.

Le champ Longueur d’en-tête (HLEN pour Header Length) indique la longueur de l’en-tête en mots de 32 bits. Cette longueur varie entre cinq et seize, selon la longueur du champ d’options qui peut varier entre zéro et onze mots de 23 bits.

Le champ Réservé (reserved) est gardé pour un usage futur.

Le champ Code bits, de 6 bits, indique l’une des possibilités suivantes, chacune correspondant à un bit particulier, qui passe à « 1 » si ladite possibilité est activée.

URG ou Urgent Pointer indique au destinataire que les données doivent être traitées en priorité sans tenir compte du contrôle de flux;

ACK ou Acknowledgment est un accusé de réception, en réponse à une commande SYN, PSH ou FIN (SYN pour l’établissement de la connexion, PSH pour le transfert de données et FIN pour la fermeture de la connexion);

PSH ou Push indique au destinataire qu’il faut transmettre tout de suite à l’application les données se trouvant dans le tampon, sans attendre que le segment ait atteint une dimension optimale;

RST ou Reset sert à fermer une connexion TCP de façon brutale;

SYN ou Synchronize sert durant la phase d’établissement d’une connexion pour synchroniser les compteurs de source et de destination et pour demander l’établissement d’une connexion;

FIN ou Final sert à demander au destinataire la fermeture d’une connexion TCP.

Le champ Window (fenêtre) sert au contrôle de flux. Il indique le nombre maximal d’octets que l’on peut transmettre sans avoir reçu d’accusé de réception. Si ce nombre maximal est atteint, la transmission est interrompue momentanément, car il y a probablement congestion dans le réseau. La dimension maximale de la fenêtre est 65 535 octets.

Le champ Checksum vérifie l’intégrité du segment TCP. C’est un complément binaire de la somme des compléments binaires de l’en-tête TCP et de la pseudo-en-tête TCP. Cette dernière n’est pas transmise, elle consiste en l’adresse de source IP, l’adresse de destination IP suivi de huit bits « 0 », huit bits désignant le protocole (par exemple, 6 indique qu’il s’agit de TCP) et de seize bits indiquant la longueur du segment TCP.

Le champ Pointeur d’urgence (urgent pointer) est utilisé en conjonction avec le bit URG indiquant une information prioritaire. La valeur de ce champ indique le nombre d’octets prioritaires.

Le champ Options a une longueur variable, mais son contenu est toujours un multiple de 32 bits. Le champ 0 0 0 0 0 0 0 0 indique la fin des options, alors que le champ 0 0 0 0 0 0 0 1 indique qu’il n’y a aucune option (ce dernier n’est pas nécessaire). De façon générale, le champ d’options est structuré comme suit :

– deux octets indiquant le type d’options;

– quatre octets pour la longueur d’options en octets;

– deux octets indiquant la longueur maximum du segment (en octets et non en mots de 32 bits).

Pour bien fonctionner avec Internet, il y a lieu de connaître : – l’adresse IP;

le DNS (Domain Name System), qui est un répertoire d’adresses électroniques;

l’ASN (Autonomous System Number) qui permet le routage automatique. Chaque groupe d’ordinateurs a un même ASN, c’est-à-dire un routeur par défaut. Les routeurs ne s’adressent qu’aux ASN.

Ces trois adresses sont octroyées par le pourvoyeur de service Internet ISP (Internet Service Provider).

Pour pouvoir identifier une application particulière dans un réseau téléinformatique, il y a lieu de préciser le type de protocole dans la couche liaison, l’adresse IP dans la couche réseau et le numéro de port dans la couche transport. Une trame TCP/IP se présente comme suit :

En-tête Protocole Port Données

IP TCP

Précisons la signification du terme « port ». Il ne s’agit pas d’une adresse physique, mais d’un code particulier qui associe une application particulière à un point d’accès ou de sortie particulier. Par exemple, les applications FTP-Contrôle, FTP-Data ou Telnet correspondent aux numéros de port 21, 20 ou 23. Soulignons qu’un port d’entrée et un autre de sortie sont assignés pour chaque session. Le TCP émet un deuxième numéro qui rend chacune des communications (sessions) uniques. Dans la figure 3.23, le TE1 demande à établir une session FTP1, en faisant appel au port 21. Le TCP répond en octroyant un numéro de port, 1026 dans l’exemple illustré; ce même numéro de port est assigné au TE2 afin de rendre la session unique.

Lorsque le TE1 transmet, son port de source est 1026 et son port de destination est 21.

Pour la même session, le TE2 répond : son port de source est 21 et son port de destination est 1026.

L’adjonction du numéro de port à une adresse IP constitue une interface logique spécifique (socket).

T C P T C P Origine TE1

FTP1 FTP2

21 21

1026 1030 21 1026 1030 21

Destination TE2 FTP1 FTP2

FIGURE 3.23

Deux sessions FTP et numéros des ports.

Établissement d’une connexion

La procédure d’établissement d’une connexion est faite à l’aide de la méthode dite en trois étapes (three way hanshake), de la manière suivante : une des extrémités, par exemple le serveur, attend de manière passive l’arrivée d’une communication. À l’autre extrémité, le client fait une demande de connexion au serveur en lui indiquant le port auquel il désire se connecter, la taille maximale des segments TCP qu’il admet et éventuellement quelques données utilisateur (par exemple, le mot de passe). Un segment TCP est envoyé avec le bit SYN à l et le bit ACK à 0, ainsi qu’un numéro de séquence (SEQ = 100 dans l’exemple de la figure 3.24) et attend une réponse. Quand ce segment arrive à destination, l’entité TCP du serveur vérifie s’il existe une application à l’écoute du port indiqué dans le champ Port de destination TCP. Si elle n’en trouve pas, elle rejette la demande de connexion en envoyant une réponse avec le bit RST à 1.

USAGER TCP TCP USAGER

Actif Ouvert

SYN = oui ACK = non valide SEQ no = 100

Crée une table d'états

Ouvert

( ouvert ) SYN = oui, ACK = valide, SEQ no = 300, ACK no = 101

SYN = non, ACK = valide, SEQ no = 101, ACK no = 301

( ouvert )

FIGURE 3.24

Établissement d’une conversation en TCP.

Autrement, on fournit à cette application le segment entrant. Si la connexion est acceptée, l’application envoie un segment accusant réception du segment. Son champ ACK vaut 101 pour indiquer qu’il a reçu la séquence numéro 100 et qu’il s’attend maintenant à recevoir la séquence numéro 101. Le segment contient également une référence initiale qui lui est propre, soit SEQ = 300 dans l’exemple de la figure. Pour terminer, le client confirme le choix du serveur en accusant la réception du segment SEQ = 300 avec un ACK = 301.

Durant le transfert, il y a confirmation ACK par transmission du prochain nombre d’octets.

Transfert de données

La gestion des fenêtres (Window dans le segment TCP) n’est pas directement liée aux accusés de réception. Expliquons le transfert de données, à partir de l’exemple de la figure 3.25.

Émetteur Récepteur Tampon du récepteur 0 4K L’application

écrit 2K

2K / SEQ = 0

ACK = 2048 Window = 2048

L’application écrit 3K

2K / SEQ = 2048 L’émetteur est bloqué

ACK = 4096 Window = 0

L’application lit 2K ACK = 4096 Window = 2048

L’application peut envoyer jusqu’à 2K

1K / SEQ = 4096

FIGURE 3.25

Le TCP en mode de transmission de données.

Le destinataire possède un tampon mémoire de 4096 octets (4 Koctets). Si le client transmet un segment de 2048 octets (2 Koctets), le destinataire l’acquitte, s’il le reçoit correctement, en envoyant un segment dont l’ACK vaut 2048; il annonce dans le champ Window qu’il lui reste un espace libre de 2048 octets dans son tampon (jusqu’à ce que

Vide

2K

Plein

2K

2K 1K

l’application y retire des données) pour les prochains transferts. Le client transmet de nouveaux 2048 octets. Le destinataire l’acquitte, mais la fenêtre est maintenant nulle. Le client doit donc arrêter d’émettre, le temps que l’application distante lise les données dans les tampons. Cependant, il peut envoyer un segment avec le champ URG actif pour commander l’arrêt de l’application. Il peut ensuite envoyer un autre segment d’un octet pour obliger le serveur à ré-annoncer le prochain octet attendu, ainsi que la taille de la fenêtre.

Fermeture d’une connexion

Le client ou le serveur peuvent l’un ou l’autre demander la fermeture de la connexion.

Celui qui en fait la demande doit activer le champ FIN du segment contenant les dernières données à transmettre. Il doit ensuite attendre que l’autre ait fini d’envoyer ses données pour fermer la connexion, comme le montre la figure 3.26.

AC K

D a ta

F IN = o ui

FIN = o u i F ER M É

(C lo s e )

D é la i d 'a tte n te fin a l (p a r p ré ca u tio n )

FIGURE 3.26

Fermeture d’une connexion TCP.

Un pointeur d’urgence permet d’interrompre la conversation et de recommencer. Pour le contrôle de débit, il existe une fenêtre d’octets dont la longueur varie. S’il y a des paquets de longueurs différentes, il est préférable de faire la confirmation par fenêtre d’octets.

Le fanion Push signifie qu’il faut transmettre sans attendre d’avoir suffisamment d’information à envoyer. Le fanion Reset force la fermeture de la connexion.

En résumé, le protocole TCP/IP diffère de celui d’OSI. La structure des couches OSI est très rigide et moins flexible. Ainsi, la couche session est responsable du dialogue et, plus précisément, de la gestion du dialogue : départ, interruption, reprise, arrêt, communications simplex ou duplex. La couche présentation définit les caractères et la syntaxe qui sont indépendants de l’équipement qui peut être utilisé au niveau application.

Au niveau de la couche application, le protocole OSI distingue l’ACSE (Association Control Service Element) qui définit les paramètres de connexion et le ROSE (Remote Operations Service Element) qui le fait pour les appels à distance.

Dans le document Protocoles et architectures (Page 34-41)

Documents relatifs