Aller au contenu principal

Exercices de la semaine 15

Exercices sur la fragmentation

Fragmentation IPv4 et IPv6

Vous désirez envoyer un paquet TCP du PC1 vers le PC2. Tout prit en compte, la trame Ethernet fait exactement 1500 octets.

En supposant que le datagramme est acheminé par IPv4, sera-t-il fragmenté? Supposez que le drapeau don't fragment est mis à 0. Si le datagramme est fragmenté, quel sera l'appareil effectuant la fragmentation?

En supposant que le datagramme est acheminé par IPv6, sera-t-il fragmenté? Si oui, à quel endroit?

Topologie à utiliser pour la fragmentation IPv4 et IPv6

Réponse

Oui, le datagramme IPv4 sera fragmenté par le routeur R2.

Non, le datagramme IPv6 ne sera pas fragmenté. TCP utilisera les messages ICMPv6 de type Packet Too Big pour ajuster la taille de ses paquets (Path MTU discovery). Ce message ICMPv6 sera généré par le routeur R2.

Assemblage des fragments

Pourquoi est-ce que seule la destination d'un datagramme peut rassembler ses fragments?

Réponse

Il n'y a aucune garantie que les fragments utiliseront tous le même chemin sur le réseau pour arriver à destination. Donc un routeur sur le chemin n'est pas assuré d'obtenir tous les fragments pour effectuer le réassemblage.

Entête et fragments

Supposez qu'un datagramme transportant un paquet UDP doit être fragmenté, l'entête UDP sera-t-elle copiée dans tous les fragments?

Réponse

Non, elle ne sera que dans le premier fragment. UDP ne se rend pas compte que le datagramme est fragmenté. Lors du réassemblage, le paquet se trouve identique à celui envoyé.

Modification des entêtes IPv4 en transit

Outre, la quantité plus grande de datagrammes liée à la fragmentation, en quoi diffèrent les entêtes IPv4 des datagrammes entre R2 et R3 des entêtes des datagrammes entre R1 et R2?

Réponse

Les premiers fragments possèdent un drapeau more fragments, alors que les suivants ont un fragment offset que les datagrammes entre R1 et R2 n'avaient pas.

Analyse d'une capture Wireshark

Une capture Wireshark est fournie sur MonPortail avec cette série d'exercices. La capture comporte des datagrammes ICMP issus de la commande ping. Quelle était la taille du plus faible MTU sur les liens situés entre les deux PCs?

Réponse

La taille du plus faible MTU était de 1454 octets. Cette valeur est obtenue en soustrayant la taille de l'entête Ethernet à la taille des trames des plus gros fragments.

Exercices TCP

TCP vs UDP

TCP fournit aux applications une abstraction d'un flux d'octets. Une application met un flux d'octet à une extrémité et ce même flux d'octets apparait à l'autre extrémité. Expliquez comment cela diffère par rapport à UDP.

Réponse

TCP stocke les données reçues de l'application en mémoire, et convertit ces données en flux d'octets. Ce flux d'octets sera ensuite structuré en segments (avec entête TCP) avant d'être transmis à la couche réseau (IP). Chaque segment sera identifié avec un numéro de séquence.

Dans le cas d'UDP, les données reçues de l'application sont immédiatement transmises à la couche IP après avoir ajouté l'entête UDP. Chaque écriture sur un socket UDP par l'application va provoquer l'envoi d'un datagramme UDP sur le réseau.

Drapeau SYN

Entre le début et la fin d'une connexion TCP, combien de segments auront le drapeau SYN actif (=1) ?

Réponse

Seulement les 2 premiers segments lors de l'établissement de la connexion.

Drapeau ACK

Entre le début et la fin d'une connexion TCP, combien de segments auront le drapeau ACK actif (=1) ?

Réponse

Tous sauf le premier segment (SYN client ->serveur).

Numéro de séquence initial (ISN)

Pourquoi est-il important de choisir un numéro de séquence initial (ISN) aléatoire et difficile à prédire?

Réponse

Si un adversaire connait les adresses IP et numéros de port utilisés dans une connexion TCP, il devient possible d'interrompre une connexion en cours, et injecter des segments dans la connexion si le numéro de séquence peut être prédit.

Options TCP

Indiquez si les informations suivantes sont échangées uniquement lors de l'établissement d'une connexion TCP, ou ultérieurement pendant que la connexion est active.

  • Option MSS (Maximum Segment Size)
  • Option timestamp
  • Largeur de fenêtre (Window Size)
  • Option Window Scale (facteur d'échelle de la largeur de fenêtre)
Réponse

InformationÉchangé uniquement au début?
Option MSS (Maximum Segment Size)Oui
Option timestampNon
Largeur de fenêtre (Window Size)Non
Option Window Scale (facteur d'échelle de la largeur de fenêtre)Oui

Les options MSS et Window Scale restent fixes durant la connexion TCP, alors que l'option timestamp et Window Size varient.

Réutilisation des numéros de séquence

Un téléchargement d'un volume de 6 Go utilise TCP/IP. Si le transfert est effectué à une vitesse de 1 Gb/s, après combien de temps devra-t-on réutiliser des numéros de séquence dans TCP?

Réponse

Il existe 2322^{32} numéros de séquence possible. Puisque chaque numéro identifie la position d'un octets dans le flux TCP, il sera nécessaire de réutiliser les numéros de séquence lorsque 2322^{32} octets (~4,3 Go) de données auront été transférées sur cette connexion.

Le temps requis pour transférer cette quantité de données sur un lien à 1 Gb/s est environ 34 secondes. Si le transfert s'effectue à 10 Gb/s, ce temps est réduit à 3.4 secondes (!).

Des extensions ont été ajoutées dans TCP pour tenir compte des réseaux de plus en plus rapides. Dans le cas de la réutilisation rapide des numéros de séquence, TCP utilise la valeur du temps disponible dans l'option timestamp en plus du numéro de séquence afin de détecter si le segment reçu est un nouveau segment ou une duplication. Voir section 13.3.4 du livre du cours. RFC 7323 présente différentes extensions ajoutées à TCP pour supporter les réseaux à haute performance.

Signalisation et contrôle de flux et congestion

Quelle signalisation est utilisée par le contrôle de flux TCP? Par le contrôle de congestion?

Réponse

  • Le contrôle de flux limite le taux de transmission de l'envoyeur en utilisant l'espace disponible dans la mémoire du socket TCP du récepteur. L'espace disponible est annoncé dans le champ "Taille de fenêtre" ou "Window Size" de l'entête TCP. Le contrôle de flux utilise un signal explicite.
  • Le contrôle de congestion utilise l'arrivée de 3 ACK dupliqués ou l'expiration du compteur de temps d'un paquet perdu pour détecter la présence de congestion. Le premier (3 ACK dup.) était un signal de congestion moins sévère que l'expiration du compteur de temps. Les signaux utilisés par le contrôle de congestion sont implicites: TCP présume que c'est situation de congestion qui a provoqué ce signal.

Numéro de séquence

Les données suivantes sont transmises dans des segments TCP:

MessageTaille (octets)
1200
2300
3800
4100
5200
6200

Illustration des paquets transmis et des réponses ACK associées.

Si le numéro de séquence initial est 1000, indiquez quel sera le numéro de séquence dans l'entête TCP pour chacun des segments S, et quel sera le numéro d'accusé pour chacun des ACK.

Réponse

MessageNuméroMessage ACKNuméro du message ACK
S11000ACK11200
S21200ACK21500
S31500ACK32300
S42300ACK42400
S52400ACK52600
S62600ACK62800

Paquet perdu

Répondez à la question précédente, mais dans le scénario ou le segment S3 est perdu. Assumez que le compteur de temps est >> 2RTT (RTT est le temps aller-retour. Pour le transmetteur, c'est le temps entre la transmission d'un segment et la réception du ACK correspondant).

Réponse

MessageNuméroMessage ACKNuméro du message ACK
S11000ACK11200
S21200ACK21500
S3perduACK3n'existe pas
S42300ACK41500
S52400ACK51500
S62600ACK61500

Contrôle de congestion

Le graphique suivant montre la taille (en segments ou MSS) de fenêtre de congestion TCP en fonction du temps. Chaque unité de temps représente un temps aller-retour (RTT).

Graphique de la taille de la fenêtre de congestion évoluant dans le temps

Identifiez dans quel(s) intervalle(s) de temps où TCP est en mode de démarrage lent (slow start).

Réponse

Intervalles [1, 6] et [31, 35]. Augmentation exponentielle de la taille de fenêtre de congestion.

Identifiez dans quel(s) intervalle(s) de temps où TCP est en mode d’évitement de congestion.

Réponse

[7, 30] et [35, 41]. Augmentation linéaire de la taille de fenêtre de congestion.

Après la 15e transmission, quel évènement a provoqué la diminution de la taille de fenêtre de congestion?

Réponse

3 ACK dupliqués, car la fenêtre de congestion est diminuée de moitié et on retombe en évitement de congestion.

Après la 30e transmission, quel évènement a provoqué la diminution de la taille de fenêtre de congestion?

Réponse

Compteur de temps expiré: La taille fenêtre de congestion descend à 1, et le démarrage lent reprend.

Quel est le seuil d’évitement de congestion après la 6e transmission?

Réponse

Seuil est ajusté à 16, soit la moitié de la taille de fenêtre au temps 6. Le contrôle de congestion reprend ensuite en mode d’évitement de congestion.

Quel est le seuil d’évitement de congestion (threshold) après la 30e transmission?

Réponse

Le seuil est diminué à 13, soit la moitié de la taille de fenêtre de congestion (26) lorsque la perte de segment est détectée (temps 30).