Maroc Informatique Programmation

Le Forum Marocain de Programmation Du Room Maroc_Salon_Informatique_Programmation
 
AccueilAccueil  PortailPortail  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  

Partagez | 
 

 Résumé du Protocole TCP

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
niceboy120183
Rang: Administrateur
Rang: Administrateur


Nombre de messages : 29
Date d'inscription : 11/05/2005

MessageSujet: Résumé du Protocole TCP   Dim 12 Juin à 13:24

Transmission Control Protocol
Service de transport en mode connecté au-dessus d'une couche réseau non fiable en commutation par paquets.
Implémentation assez complexe.

Utilisé dans les cas où il est nécessaire d'avoir une communication sûre entre applications.

Utilisation de la notion de port pour communiquer entre applications (ports TCP distincts des ports UDP)

telnet 23
ftp 20,21
smtp 25


Cinq caractéristiques du service TCP

Flot de données

Le récepteur reçoit exactement la séquence d'octets envoyée par le processus source.

Connexion et déconnexion

Avant tout envoi de données, il y a un échange de segments afin de mettre en place la connexion. De même la déconnexion est négociée.

Bufferisation et contrôle de flot

Les données envoyées et reçues sont bufferisées afin d'améliorer la communication.

Flot non structuré

Nécessité d'un protocole de présentation pour structurer les données tensmisent.

Connexion Full-Duplex

Communication dans les deux sens. Informations de contrôle + données

Le service de fiabilité

Acquittement positif avec retransmission (acknowledgement ACK)

L'émetteur bufferise tous les segments qu'il envoie et attend un acquittement avant de les effacer. Il démarre également une alarme qui, si elle expire avant l'arrivée d'un acquittement, entraîne la retransmission des données du segment.

Chaque octet émis à un numéro de séquence.

Le numéro d'un segment est le numéro du premier octet qu'il contient.

Un acquittement contient un numéro de séquence strictement supérieur à tous les octets déjà reçus.

Ainsi un acquitte tous les segments qui ont un numéro de séquence inférieur.

L'acquittement d'un paquet allant de A vers B peut être véhiculer par un paquet allant de B vers A. Cette technique est appelée piggybacking.


------------------------------------------------------------------------------------

Fenêtre coulissante (sliding window)

Amélioration des performances : ne pas attendre d'avoir reçu l'acquittement du segment émis pour en envoyer un nouveau.

Nécessité de connaître la taille de la fenêtre de réception (place encore libre dans le buffer) pour ne pas émettre des données pour rien.

Signalisation de la taille de la fenêtre par segment TCP (éventuellement piggybacking)

Fenêtre d'émission déduite de la taille de la fenêtre de réception et du numéro d'acquittement (prochain octet attendu).

Un mécanisme de fenêtres coulissantes par sens de communication.



En comportement normal :

SEND_UNA : coulisse en fonction des acquittements qui arrivent et SEND_WNDW diminue

SEND_NEXT : coulisse en fonction des segments émis

RECV_NEXT : coulisse en fonction des segments reçus et RECV_WNDW diminue

RECV_WNDW : augmente lorsque l'application récupère les données reçues

SEND_WNDW : augmente quand l'émetteur est informé que RECV_WNDW a augmentée

Si SEND_NEXT - SEND_UNA == SEND_WNDW alors émission stoppée.

La taille du buffer d'émission n'est pas a priori corrélée à la taille de la fenêtre d'émission. Il sert à bufferiser les données qui ne peuvent pas être émisses.



-------------------------------------------------------------------------------------

Scénario de connexion (three-way handshake):

Ouverture passive par le serveur en attente de connexions

Ouverture active par le client

Le client envoie un segment de synchronisation (SYN) contenant son numéro de séquence initial (ex:700)

Le serveur reçoit le (SYN) et renvoie au client un segment de synchronisation contenant son numéro de séquence initial (ex : 400) et un (ACK) de 701 signifiant que le premier numéro de segment devrait être 701.

Le client reçoit le (SYN/ACK) et renvoie un (ACK) de 401.

Le client notifie l'ouverture de la connexion.

Le serveur reçoit (ACK) et notifie l'ouverture de la connexion.



Le seul segment qui contient le numéro d'acquittement à zéro est le premier SYN lors de la connexion.
-------------------------------------------------------------------------------------
Scénario de déconnexion (three-way handshake)
Le serveur demande la clôture de connexion

Il y a envoi d'un message FIN informant le partenaire qu'il n'enverra plus de données . (niveau TCP)

Le message FIN est acquitté (niveau TCP) ACK

Le client apprend que le serveur a fermé sa connexion

Le client demande la clôture de la connexion

Il y a envoi d'un message FIN.

Il y a acquittement du message FIN par un ACK

Le serveur apprend que la connexion est fermée


-----------------------------------------------------------------------------------

Format des segments TCP




Numéro de séquqnce spécifie le numéro de séquence du premier octet de données.

Numéro d'acquittment spécifie le numéro de séquence du prochain octet attendu.

Taille est la taille de l'entête du segment en nombre de mots de 32 bits.

Window donne la taille de la fenêtre de réception. S'il y a perte d'un segment, il n'y a pas de moyen pour, éventuellement, acquitter les segment suivants.

Code détermine le type du segment et son contenu. Les valeurs possibles sont :

0x20 URG contient un message urgent.

0x10 ACK contient un acquittement

0x08 PSH indication que la transmission a été forcée

0x04 RST indicateur de réinitialisation de la connexion

0x02 SYN indication de début de communication

0x01 FIN indicateur de fin d'envoie de l'emetteur

Pointeur urgent indique l'offset du caractère urgent dans données si le code URG est présent.

Options permet, entre autre, de négocier la taille des segments envoyés, en fonction de la capacité mémoire de la machine réceptrice et éventuellement de la MTU des réseaux traversés.

Checksum est calculée comme pour UDP en ajoutant une pseudo-entête.

[img=http://img260.echo.cx/img260/6350/bbbbbb5jk.png]
-----------------------------------------------------------------------------------

La valeur du timeout

Algorithme de Karn et Jacobson

Utilisation du temps aller-retour en particulier lors de la connexion.
Jacobson : calcul de proche en proche s'il n'y a pas de timeout

Karn : timeout augmenté par facteur multiplicatif en cas de timeout.
-----------------------------------------------------------------------------------

Nagle Algorithm

L'envoyeur doit éviter d'envoyer de petits segments

Il est recommandé d'envoyer les données, soit quand la taille maximum du segment est atteinte, soit quand une partie du buffer de réception est pleine.

Nagle propose de ne pas envoyer tant que l'on attend un ACK

Congestion
En cas de congestion (réception d'un message ICMP) on utilise une fenêtre de congestion plus petite que la fenêtre d'émission. Celle-ci augmente au fur et à mesure de la réception des ACK.
--------------------------------------------------------------------------------

États TCP des points de communication


-----------------------------------------------------------------------------------
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 
Résumé du Protocole TCP
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» ADSL - Changement de protocole PPoE vers IPoA
» VPN en Protocole UDP sur clés 3G Bytel
» Protocole VOIP de la Bbox (compte SIP ?)
» Skyrim Résumé en 24 Secondes
» Protocole BitTorrent bloqué

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Maroc Informatique Programmation :: Annoces aux membres-
Sauter vers: