• Aucun résultat trouvé

L'utilisateur transmet des segment de grande taille

Dans le document Télécommunications et réseaux 1 (TER1) (Page 54-76)

Principe Go-Back-N (2/2)

1. L'utilisateur transmet des segment de grande taille

2.

La couche réseau n'est pas tout à fait parfaite

1.

Erreurs de transmission possibles sur le contenu des paquets

2.

Des paquets peuvent être perdus

3.

La transmission des données se fait dans les deux

sens

Construction d'un protocole de transport fiable

Couche « transport »

Comment transmettre de longs messages ? Principe

Permettre à l'entité de transport de l'émetteur de découper un message en petites parties placées chacune dans un segment

Demander à l'entité transport du receveur de réassembler les segments reçus pour reconstruire le message

Construction d'un protocole de transport fiable –

Couche « transport »

Comment fournir un service en mode byte stream ? Principe

L'émetteur découpe le flux d'octets en segments

Le receveur fournit le contenu des segments à son utilisateur

Généralement, numéroter les octets dans le byte stream et placer dans chaque segment le numéro de séquence du premier octet de données présent dans le segment

Dans ce cas, les fenêtres sont également exprimées sur base de la numérotation des octets du byte stream

Construction d'un protocole de transport fiable –

Protocole de transport fiable TCP – Structure d'un segment TCP

Couche « transport »

Source port Destination port

Payload 32 bits

Checksum Urgent pointer THL Reserved Flags

20 bytes Sequence number

Optional header extension Window Flags :

Drapeaux binaires servant à spécifier la "fonction" d'un segment TCP

SYN : utilisé lors de l'ouverture FIN : utilisé lors de la fermeture RST : utilisé en cas de problème

ACK : si vrai, indique que l'Acknowledgement number contenu dans le segment est valide

Couvre l'entête du segment, le contenu du segment

et une partie de l'entête IP (adresses notamment)

Acknowledgement number

Longueur de l'entête du segment

Protocole de transport fiable TCP – Ouverture d'une connexion

Couche « transport »

SYN+ACK(ack=x+1,seq=y)

ACK(seq=x+1, ack=y+1) Demande de connexion

Demande de connexion + autorisation de connexion Numéro de séquence initial (x)

Numéro de séquence initial (y) SYN(seq=x)

Connexion établie A->B

Connexion établie B -> A

Numéro de séquence des segments de données -> commencera à x+1

Numéro de séquence des segments de données -> commencera à y+1

A B

Three-way handshake

Protocole de transport fiable TCP – Ouverture d'une connexion

Couche « transport »

Négociation d'options

possibilité de négocier certaines options durant l'ouverture de la connexion TCP

=> option encodée dans extension entête du segment TCP Par exemple :

Maximum segment size (MSS), longueur maximum de segment

Protocole de transport fiable TCP – Ouverture d'une connexion

Couche « transport »

RST+ACK(ack=x+1,seq=0) SYN(seq=x)

Connexion refusée

Refus d'ouverture

Demande de connexion

Déconnexion

Protocole de transport fiable TCP – Fermeture d'une connexion

Couche « transport »

FIN(seq=x)

ACK(ack=x+1)

ACK(ack=y+1) Demande de fermeture (A-B)

Autoriser la fermeture (A-B) Déconnexion (A-B)

FIN(seq=y)

Time WAIT

Attendre pendant deux fois la durée de vie maximale d'un paquet dans le réseau pour

Demande de fermeture (B-A) Autoriser la fermeture (B-A)

Déconnexion (A-B)

Fermeture ordonnée d'une connexion TCP

Protocole de transport fiable TCP – Fermeture d'une connexion

Couche « transport »

RST(seq=x) Déconnexion (abrupte)

Connexion fermée Connexion fermée

Fermeture abrupte d'une connexion TCP

Protocole de transport fiable TCP – États d'une connexion TCP

Couche « transport »

Émetteur

Protocole de transport fiable TCP – États d'une connexion TCP

Couche « transport »

Receveur

Protocole de transport fiable TCP – Fiabilité de transfert

Couche « transport »

ACK perdu ACK cumulatif

Protocole de transport fiable TCP –Contrôle de flux

Couche « transport »

Récepteur d'une connexion TCP a un tampon (buffer) de réception Le processus du récepteur peut prendre un certain temps pour récupérer les segments du tampon

Service de contrôle de flux :

Ajuster le rythme d'envoi de l'expéditeur à la vitesse de lecture de l'application destinataire

RcvBuffer : taille du buffer de réception

RcvWindow : espace libre dans le buffer

Protocole de transport fiable TCP –Contrôle de flux

Couche « transport »

Récepteur: informe explicitement l’émetteur de l’espace

disponible dans le buffer (=> nb d’octets qu’il est prêt à recevoir)

champ rcvWindow (fenêtre de réception) dans le segment TCP

0

RcvBuffer = 10 octets LastByteRcvd = 6

LastByteRead = 1

LastByteRcvd : n° du dernier octet dans le flux de données reçu par le destinataire et placé dans sa mémoire tampon

LastByteRead : n° du dernier octet dans le flux de données retiré du tampon par le processus d'application du destinataire

RcvWindow = RcvBuffer – (LastByteRcvd – LastByteRead)

Protocole de transport fiable TCP –Contrôle de flux

Couche « transport »

Protocole de transport fiable TCP –Contrôle de flux

Couche « transport »

RcvWindow=0 => plus de place disponible chez le récepteur L’émetteur est bloqué en attente d’ouverture de fenêtre

Et si le récepteur n’a rien à émettre ?

Dans TCP, un ACK ne peut être envoyé que sur réception de données

Solution

Lorsque l'émetteur reçoit une RcvWindow à 0, il envoie

périodiquement un segment d’1 octet de données pour provoquer l'envoi d'un ACK

Protocole de transport fiable TCP –Contrôle de congestion

Couche « transport »

Le contrôle de flux évite qu'une machine émet plus de segments (par seconde) que le récepteur ne peut consommer.

Le contrôle de congestion évite qu'une machine émet plus de segments (par seconde) dans un réseau que celui-ci peut

transporter.

=> Contrôle de congestion = Contrôle de flux du réseau (noeud de transfert)

Protocole de transport fiable TCP –Contrôle de congestion

Couche « transport »

R1 R2

2 Mbps

10 Mbps 10 Mbps

A C

10 Mbps

A C

2 Mbps Buffers de taille infinie R1

Modèle simplifié

Protocole de transport fiable TCP –Contrôle de congestion

Couche « transport »

10 Mbps

A C

2 Mbps Buffers de R1

TCP self-clocking

ACK

ACK

ACK

ACK

ACK

Protocole de transport fiable TCP –Contrôle de congestion

Couche « transport »

TCP self-clocking

=> peut suffire lorsqu'une seule connexion TCP utilise une ligne à bas débit pour autant que le routeur intermédiaire puisse stocker un fenêtre complète de segments

Que se passe-t-il si plusieurs connexions TCP doivent se partager la ligne ?

Protocole de transport fiable TCP –Contrôle de congestion

Couche « transport »

10 Mbps 2 Mbps

Buffers infinis Nombreux

émetteurs

Nombreux receveurs L'occupation des buffers du

routeur augmente... Même si les buffers sont infinis, le délai augmente et les émetteurs ne reçoivent pas d'acquit. Cela provoque l'expiration des temporisateurs de retransmission et la retransmission des segments non-acquités avec go-back-n....

Informellement : « trop de sources envoient trop de données, trop rapidement, plus que ce que le réseau peut absorber »

Protocole de transport fiable TCP –Contrôle de congestion

Couche « transport »

Comment réguler une connexion TCP en fonction de

Dans le document Télécommunications et réseaux 1 (TER1) (Page 54-76)

Documents relatifs