Le protocole rdt3.0 ne gère pas intrinsèquement la réorganisation des messages. Son mécanisme de base repose sur la numérotation et l'accusé de réception séquentiels des messages pour garantir une livraison fiable, *en supposant* que les messages arrivent dans l'ordre. Si les messages sont réorganisés par le réseau, rdt3.0 échouera.
Le schéma ci-dessous illustre cet échec. Nous allons simplifier le diagramme en nous concentrant sur les aspects cruciaux de la réorganisation des messages et de la répartition du protocole.
```
+--------+ Réseau (Réorganisation) +--------+
| Expéditeur |---------------------------->| Récepteur|
+--------+ <----------------------------+--------+
| |
| Paquet 2 (séqnum =1) |
V ^
+--------+------->[Réseau]<-------+--------+
| | | Paquet 1 (numéro de séquence =0)
| Paquet 1 (séqnum=0) |
+--------+------->[Réseau]<-------+--------+
+-----------------+ +-----------------+
| Actions de l'expéditeur | | Actions du récepteur |
+-----------------+ +-----------------+
| Envoie le paquet 1 | | Reçoit le paquet 2 (seqnum=1) – Inattendu ! |
| Envoie le paquet 2 | | (Le paquet 2 est en panne, rdt3.0 ne gère pas cela) |
| | | Le récepteur attend le numéro de séquence 0.|
+-----------------+ +-----------------+
^ |
| (Un délai d'attente se produit finalement chez l'expéditeur si aucun ACK n'est reçu) |
| V
| L'expéditeur retransmet le paquet 1 | Le récepteur reçoit finalement le paquet 1 (seqnum=0) - mais cela reste potentiellement problématique en raison de duplications si l'ACK a été manqué.
```
Explication :
1. Expéditeur : Envoie le paquet 1 (seqnum=0) et le paquet 2 (seqnum=1).
2. Réseau : Le réseau réorganise les paquets, livrant le paquet 2 avant le paquet 1 au récepteur.
3. Récepteur : Le récepteur attend le paquet 1 (seqnum=0) mais reçoit le paquet 2 (seqnum=1). La conception de rdt3.0 dicte qu'il supprimera le paquet 2 car ce n'est pas le numéro de séquence attendu. Il n'enverra pas d'ACK pour le paquet 2 car il est en panne.
4. Échec : L'expéditeur expire en attendant un ACK pour le paquet 1 (ou éventuellement le paquet 2 en fonction de l'implémentation du délai d'attente). Il retransmet, conduisant à une duplication potentielle au niveau du récepteur. Le récepteur pourrait avoir des problèmes pour traiter les paquets dupliqués et séquencer correctement les événements si un mécanisme permettant de résoudre ce problème n'était pas implémenté.
Point crucial : rdt3.0 s'appuie sur le réseau sous-jacent pour transmettre les paquets dans l'ordre dans lequel ils ont été envoyés. Si le réseau réorganise les paquets, le simple mécanisme d'accusé de réception du protocole tombe en panne, ce qui entraîne une livraison de données peu fiable. Pour gérer la livraison dans le désordre, un protocole plus sophistiqué (comme le mécanisme de fenêtre coulissante de TCP ou un protocole explicitement conçu pour gérer la réorganisation) serait nécessaire.
|