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?
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 timestamp | Non |
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 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 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:
Message | Taille (octets) |
---|---|
1 | 200 |
2 | 300 |
3 | 800 |
4 | 100 |
5 | 200 |
6 | 200 |
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
Message | Numéro | Message ACK | Numéro du message ACK |
---|---|---|---|
S1 | 1000 | ACK1 | 1200 |
S2 | 1200 | ACK2 | 1500 |
S3 | 1500 | ACK3 | 2300 |
S4 | 2300 | ACK4 | 2400 |
S5 | 2400 | ACK5 | 2600 |
S6 | 2600 | ACK6 | 2800 |
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
Message | Numéro | Message ACK | Numéro du message ACK |
---|---|---|---|
S1 | 1000 | ACK1 | 1200 |
S2 | 1200 | ACK2 | 1500 |
S3 | perdu | ACK3 | n'existe pas |
S4 | 2300 | ACK4 | 1500 |
S5 | 2400 | ACK5 | 1500 |
S6 | 2600 | ACK6 | 1500 |
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).
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).