1 / 66

Chapitre 3

Chapitre 3. L’acquittement et la couche 2 (acknowledgment). w3.uqo.ca/luigi. Protocoles. Procédures concernant la communication Afin que deux ou plusieurs parties puissent communiquer , ils doivent utiliser un protocole commun

kenaz
Télécharger la présentation

Chapitre 3

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapitre 3 L’acquittement et la couche 2 (acknowledgment) w3.uqo.ca/luigi

  2. Protocoles • Procédures concernant la communication • Afin que deux ou plusieurs parties puissent communiquer, ils doivent utiliser un protocole commun • P.ex. pour communiquer par la poste, il faut informer les autres de votre adresse, il faut regarder dans la boîte aux lettres périodiquement, poster aux boîtes rouges, utiliser des enveloppes, des timbres, etc. INF6001 Chap 3

  3. Deux généraux qui doivent prendre une ville… http://www.clipart-darktreasures.com • Seulement en agissant ensemble peuvent-ils gagner… • Un général n’attaquera que s’il est certain que l’autre attaquera aussi • Le seul moyen de communication est un pigeon… INF6001 Chap 3

  4. Un dialogue sans espoir… http://www.clipart-darktreasures.com • Général A envoie un message à B: attaquons à 6h demain • Attaqueront-ils? • Non, A attendra confirmation car le pigeon aurait pu ne pas arriver à B • Général B envoie une réponse: d’accord à 6h demain • Attaqueront-ils? • Non, B attendra confirmation • Général A répond encore: d’accord à 6 h demain • Attaqueront-ils? • Non, A attendra confirmation • Etc… INF6001 Chap 3

  5. Il n’y a pas de protocole pour achever la certitude mutuelle! • Preuve (informelle): • Supposez qu’un protocole existe • Il doit impliquer au moins un message • Il doit être tel que si le dernier message est perdu, les généraux seront certains et attaqueront • Donc le dernier message ne serait pas nécessaire • Enlevons le dernier message pour un protocole plus efficace • Le même raisonnement s’applique récursivement à tout message, y inclus le premier! • Aucun message ne serait nécessaire • contradiction INF6001 Chap 3

  6. Retards non-bornés • Observez que le même résultat est valable dans le cas où • il n’y a pas mort de pigeons, • mais les pigeons pourraient retarder pour un temps arbitraire • Jours ou plus … • Ceci pourrait aussi impliquer la possibilité que les pigeons se croisent, dans la même direction ou dans directions opposées INF6001 Chap 3

  7. Résultat théorique • Théorème • In any run of a system that displays unbounded message delays, it can never be common knowledge that a message has been delivered. • J. Y. Halpern and Y. Moses. Knowledge and common knowledge in a distributed environment. • Journal of the ACM, 37(3):549–587, 1990. INF6001 Chap 3

  8. Erreurs résiduelles • Après analyse, on découvre que ce résultat s’applique à n’importe quel protocole! • Il n’est pas possible d’établir l’accord certain dans le cas de canaux avec perte • Un aspect fondamental de la preuve est que nous ne savons pas combien de fois le milieu va échouer • Si nous savons que sûrement il y aura succès au moins 1 fois sur 10, alors l’envoi de 10 pigeons suffira • Étant donné que normalement il est impossible d’établir ce type de borne, il n’est pas possible d’établir la certitude globale dans les systèmes répartis • N’importe la complexité du protocole et la fiabilité du milieu, il y a toujours la possibilité d’erreurs résiduelles • On parle donc de taux d’erreur résiduel (residual error rate) • Il est vrai cependant que dans les supports de communication modernes (fibres optiques, etc.) la fiabilité est extrêmement élevée • Et nous avons aussi des applications pour lesquelles la fiabilité absolue n’est pas nécessaire • Si un paquet est perdu dans la transmission de la parole, de la musique, d’une image de télévision, l’usager pourrait ne pas s’en rendre compte INF6001 Chap 3

  9. Problèmes de sécurité • Considérez aussi la possibilité que le pigeon puisse être intercepté et remplacé par un autre pigeon avec un message différent… • Ceci est tout un domaine de recherche, les protocoles de sécurité INF6001 Chap 3

  10. Les acquittements et leur fonctionnalité • Dans les systèmes télématiques, les acquittements peuvent avoir fonctions différentes • Simplement faire savoir que le message a été reçu • Surtout dans la couche liaison de données • Contrôle de flux • Programmant l’envoyeur de ne pas envoyer des nouveaux messages si les précédents n’ont pas été acquittés • Répondre à la requête • Surtout dans la couche application • Les deux premières fonctions nous préoccupent en ce chapitre INF6001 Chap 3

  11. La détection d’erreurs dans les modèles à couche • Quelle couche est la plus appropriée pour la détection d’erreurs? • Dans l’ OSI, la détection d’erreurs se fait • un peu partout dans les premières 4 couches • surtout dans la couche 2: Liaison de données • pas du tout après la couche Transport • Dans le TCP/IP, elle se fait à la couche TCP (Transport) • Cependant en principe il n’y a pas de couche préférable • Chaque couche doit en quelque sorte se préoccuper d’erreurs à son niveau • Détectable p.ex. comme ‘réception non spécifiée’ • Même dans les applications nous devons nous préoccuper de la possibilité d’erreurs • P.ex. une application de base de données qui reçoit une requête dans un format non valable INF6001 Chap 3

  12. Protocoles à trois étapes – Three-way handshake • Utilisé dans TCP, connexion et déconnexion • Et dans un grand nombre d’autres protocoles Invitation Accept (ou non) Confirm. Pour les raisons mentionnées, il n’assure pas que les deux côtés soient vraiment prêts à échanger les données INF6001 Chap 3

  13. Avec ré-essai après un temps • Chaque côté renvoie après un certain temps • Ici aussi, il n’y a pas certitude mutuelle après l’envoi de conf. • Afin de chercher à la créer, on pourrait avoir une temporisation et boucle pour conf, ce qui demanderait une 2ème conf, etc. ! invit ? invit tempor. ? accept ! accept tempor. ! conf ? conf Peut commencer à envoyer sans être certain…. INF6001 Chap 3

  14. Le protocole du bit alterné (BA) • Le protocole BA fut le 1er protocole qui fut spécifié utilisant la notion de modèle de transitions d’état • Article de Bartlett et Scantlebury dans Comm. ACM May 1969, disponible à partir de l’UQO sur http://dl.acm.org/results.cfm?h=1&cfid=62842928&cftoken=34701209 • Excellent et fameux article, 2 pages seulement! • Parfois cité comme 1er article dans l’ingénierie des protocoles • BA est un des plus simples protocoles de liaison données possibles, mais il • Démontre les principes fondamentaux de tous les protocoles de liaison de données • Réussit à récupérer des erreurs de transmission • Dans certaines limites, nous verrons… • Il a été utilisé dans un grand nombre d’études sur la validation des protocoles INF6001 Chap 3

  15. Rédécouvrons le protocole du bit alterné • Exigence: un protocole qui accepte une séquence de paquets de données et les remet à l’autre côté dans le même ordre 0 Message 0 1 1 2 2 3 3 Effet désiré: comment l’obtenir? INF6001 Chap 3

  16. Contrôle d’erreurs • Problème, le canal peut perdre des données 0 0 1 Le récepteur a perdu l’ordre des messages 1 2 2 3 INF6001 Chap 3

  17. Compter les messages • Chaque message contient son numéro, afin que le récepteur sache quel message il vient de recevoir • Besoin de connexion: les deux côtés doivent initialiser une connexion, ce qui permet d’initialiser le comptage • Étant donné qu’il faut pas gaspiller les bits pour le comptage, essayons avec le plus petit compteur possible: 1 bit INF6001 Chap 3

  18. Utilisation du bit alterné • Le protocole commence le comptage à 0 • Pour pouvoir reprendre, il faut donner au récepteur la possibilité de demander le renvoi du message perdu bit=0 Attend 0, OK 0 Message 0 1 Message 1 0 Attend 1, reçoit 0 Erreur 2 3 INF6001 Chap 3

  19. Deux méthodes • Le récepteur peut envoyer un message NACK 0, signalant le fait que le message 0 n’a pas été reçu • Cependant ce message pourra lui-même être perdu • Une solution équivalente est d’exiger un ACK pour chaque message reçu • Qui peut lui aussi être perdu • ARRÊT ET ATTENTE: Stop and Wait Protocol • L’émetteur envoie, attend acquittement • Si l’acquittement arrive, continue avec proch. message • Sinon (le message ou l’acquittement pourraient être perdus!) renvoie message précédent • Problème: combien de temps attendre • Solution: établir un temps sur la base du temps d’allée/retour du message et son acquittement (le double?) • Minuterie: positionner , annuler INF6001 Chap 3

  20. Arrêt et attente (stop-and-wait) contextepartagé • Cas normal n-1 messages déjà transmis, n pair Message n D0 Attend bit 0: accepté t positionne minuterie t Ack OK minuterie t annulée t Message n+1 D1 t positionne minuterie t Etc. INF6001 Chap 3

  21. Perte de message dans arrêt-attente(si l’attente n’est pas assez longue) n-1 messages déjà transmis, n pair Message n D0 Attend bit 0: accepté Ack D0 Retransmet D0 et peut penser que l’acquittement est pour le 2ème Ack D1 Ceci est l’acquittement du 2ème D0 mais il pourrait être pour D1 Ce D0 est-il une retransmission du 1er ou est-il un nouveau message… (étant donné que tous les ack pourraient avoir été perdus) D0 Etc. INF6001 Chap 3

  22. Protocole du bit alterné • Le protocole que nous avons vu n’est pas capable d’apparier les messages avec les acquittements en présence de pertes de messages et retards • Peut fonctionner seulement quand les délais maximaux sont connus et certains • Besoin de numéroter non seulement les messages, mais aussi les acquittements • Le protocole résultant est assez résistant aux erreurs comme nous verrons • Il est la base pour autres protocoles plus puissants comme “sliding window” (“fenêtre d’anticipation”) etc. INF6001 Chap 3

  23. Deux questions importantes • Il n’y a pas de question sur quel message ou acquittement envoyer si un message ou acquittement avec le ‘bon’ bit a été reçu • Quand un message est reçu et il n’a pas le ‘bon’ bit, quel sera le bit dans l’acquittement? • Quand un acquittement est reçu et il n’a pas le ‘bon’ bit, quel sera le bit dans le prochain message envoyé? INF6001 Chap 3

  24. Protocole bit alterné: Arrêt et attente • Cas de perte de message n-1 messages déjà transmis, n impair Message n D0 Positionne Minuterie Temporisation Doit renvoyer n D0 n A0 OK INF6001 Chap 3

  25. Protocole bit alterné: Arrêt et attente • Chevauchement de message! n-1 messages déjà transmis, n pair n D0 D0 n Attend 1, reçoit 0; Écarter A0 Ack le dernier msg bien reçu OK INF6001 Chap 3

  26. Protocole bit alterné: Arrêt et attente • Chevauchement d’ack! n-1 messages déjà transmis, n pair D0 A0 D0 Attend 1, écarter Attend ack de 0, OK D1 OK A1 INF6001 Chap 3

  27. Protocole bit alterné: Arrêt et attente • Cas de perte d’acquittement n-1 messages déjà transmis, n pair D0 A0 D0 Attend 1: écarté A0 Continue d’envoyer l’acquittement du dernier msg bien reçu D1 OK INF6001 Chap 3

  28. Sans pertes mais avec retards n-1 messages déjà transmis, n pair Message n D0 Attend bit 0: accepté A0 D0 D0 acquitté A0 Continue d’acquitter le dernier msg bien reçu D1 Écarte ceci et il retransmet D1 D1 Écarté A1 OK D0 INF6001 Chap 3

  29. Protocole du bit alterné avec pertes et retards n-1 messages déjà transmis, n pair Message n D0 Attend bit 0: accepté A0 D0 D0 acquitté A0 D1 Écarte ceci et il retransmet D1 D1 OK A1 INF6001 Chap 3

  30. Exercice • Exécutez le bit alterné dans plusieurs scénarios de votre invention pour bien comprendre comment il fonctionne • La compréhension de ce protocole est la base pour la compréhension de tous les autres protocoles de la couche ‘liaison de données’ INF6001 Chap 3

  31. Collision • Nous venons de voir un cas de collision, cad une situation où deux entités envoient des messages ‘en même temps’ (D0-A0) • Les collisions ne sont pas nécessairement des erreurs, cependant elles doivent être prises en considération dans la conception • P.ex. deux entités qui demandent connexion ou déconnexion indépendamment • Deux données qui voyagent en direction opposée dans les protocoles bi-directionnels INF6001 Chap 3

  32. Bit alterné unidirectionnel, diagramme de transition émetteur récepteur ?D1 8 !D1 8 !A1 ?A1 To, ?A0 !A1 1 1 4 6 Données de l’usager ?D0 Données à usager !D1 5 2 2 5 Données à usager Données de l’ usager !D0 ?D1 ?A0 4 3 6 3 !A0 To, ?A1 !A0 !D0 ?D0 7 7 To: temporisation A: Ack INF6001 Chap 3

  33. Usagers émetteur et recepteur Donner message à l’émetteur Prendre message du récepteur INF6001 Chap 3

  34. Architecture globale: 4 machines à états Usager émetteur Usager récepteur Émetteur Récepteur INF6001 Chap 3

  35. Messages altérés - Erreurs • Nous n’avons pas considéré le cas de réception de messages altérés (messages avec erreur détectée) • L’hypothèse étant qu’un message altéré est comme un message non-reçu • Supposant un mécanisme de contrôle d’intégrité qui jette les messages altérés • Dans le diagramme de transition nous pourrions ajouter ce cas d’erreur aux transitions • 3 7 et 6  8 dans l’émetteur • 67 et 18 dans le récepteur INF6001 Chap 3

  36. Problèmes (montrant que ce protocole n’est pas parfait, comme attendu) • Double chevauchement de message! • Un vieux message échu avec un bit égal à ce qui est attendu sera considéré bon… D0 13 n 37 n 73 n 13 A0 34 36 D1 64 n+1 n+1 46 A1 41 61 13 OK! (croit avoir reçu n+2) A0 Acquitte vieille donnée 36 D0 Pense que ceci est un msg répété par erreur! 67 INF6001 Chap 3

  37. Réceptions non spécifiées dans BA • Que fera l’envoyeur avec un A0 après avoir reçu un A1 lorsqu’il n’a rien envoyé? • Il pourra l’écarter • le récepteur recevra un deuxième D0 qu’il acquittera et ignorera • Ou il pourra lire dans le canal seulement après avoir envoyé D0 • Il considérera son dernier D0 acquitté • Et il répondra avec !D1 à l’A0 que le récepteur lui enverra • Dans les deux cas, le protocole retournera enfin à la normalité • Mais la mauvaise donnée a été livrée à l’usager INF6001 Chap 3

  38. Et aussi… • Double chevauchement d’ACK D0 13 n 13 n A0 36 37 D0 n 67 73 A0 34 76 D1 64 n+1 46 n+1 A1 41 61 D0 13 A0 34 18 D1 D0 n’a pas été reçu, D1 sera écarté 46 INF6001 Chap 3

  39. Problèmes de sécurité • Nous aurons évidemment des problèmes semblables si nous admettons que le milieu puisse générer par lui-même des mauvais messages, • Ou si ceci serait possible par intervention d’un tiers, l’intrus • V. cours sur les protocoles de sécurité INF6001 Chap 3

  40. Transmission bidirectionnelle • Le protocole que nous venons de donner est pour transmission dans 1 direction seulement (simplex) • Le protocole BA original pouvait fonctionner dans les 2 directions (alternat ou half-duplex) • Piggybacking: un seul paquet sert pour transférer les nouvelles données en même temps que l’ack du message précédent dans la direction opposée • Dans le transparent suivant, supposons que: • A est un client qui envoie des requêtes SQL à B • B est un serveur (base de données) qui acquitte ces requêtes tout en répondant INF6001 Chap 3

  41. Protocole BA alternat bidirectionnel, compacté… • Deux stations A et B, chacune garde son propre bit local • Bit local=1 au début pour les deux • A commence en état 1 • B commence en état 3 • N=Données de l’usager, bit local est renversé • !D envoi données avec bit local • ?Db réception de données avec • Pour A, bit = local de A • Pour B, bit ≠ local de B • ?Dm réception opposée (erreur) • U=données à l’usager A 1 N U 2 ?Dm, To !D 4 3 ?Db B INF6001 Chap 3

  42. Architecture globale: 4 machines à états Usager émetteur Usager récepteur U N Émetteur Récepteur INF6001 Chap 3

  43. Mais... • La vitesse des deux usagers doit être ± la même: • Quoi faire si A envoie un message, B doit acquitter mais son usager n’a pas de données prêtes à envoyer? • A devra donc attendre, ou sinon des messages vides pourraient être livrés avec certains acquittements... INF6001 Chap 3

  44. Terminologie • Simplex = Unidirectionnel • Half-Duplex ou alternat = bidirectionnel alternative • Transmission qui peut fonctionner dans une direction ou l’autre, mais pas simultanément • C’est le cas pour le protocole précédent • Full duplex = bidirectionnel simultané INF6001 Chap 3

  45. Propriété qui peut être prouvée pour le BA Dans le cas d’un milieu avec possibilité d’erreur mais sans double chevauchement, il est possible de prouver que le BA préserve l’ordre des données, c.-à-d. La chaîne des messages reçus est dans le même ordre de la chaîne des messages envoyés Moins évidemment les messages envoyés et pas encore arrivés La condition ‘sans double chevauchement’ peut être obtenue choisissant des temps d’attentes suffisamment longs Mais le coût sera un système plus lent Et comment déterminer ce qui est suffisant? INF6001 Chap 3

  46. Auto-stabilisation (Self-synchronisation) • Le protocole du BA a aussi la propriété d’être capable de retourner au fonctionnement normal après n’importe quelle situation d’erreur • Il pourra cependant avoir envoyé à l’usager les mauvaises données (ce que nous avons vu) INF6001 Chap 3

  47. Protocoles à fenêtre d’anticipation(sliding window) • Le protocole du BA peut être généralisé en utilisant un compteur de plusieurs bits • n bits • Dans le cas de n=1, l’émetteur devait garder le dernier message jusqu’à l’acquittement, donc 2n -1 = 1 messages • En général, pour un compteur de n bits, l’émetteur doit garder au plus les derniers 2n -1 messages jusqu’à leur acquittement • Persuadez-vous de ceci! • Dans ce cas, il y a plus de liberté concernant la vitesse relative de l’émetteur et du récepteur • L’émetteur peut continuer d’envoyer des paquets même si un certain nombre de paquets déjà transmis n’a pas été acquitté • Les protocoles à fenêtre sont utilisés dans TCP • Ainsi que couche 2 de l’OSI, couche 2 de X.25 etc • HDLC: High-level Data Link Control INF6001 Chap 3

  48. Fenêtre d’anticipation • Au moment de l’envoi d’un message, l’émetteur positionne une minuterie spécifique à ce message • Si l’ack n’est pas reçu dans le délai, le message doit être retransmis, avec tous les messages qui l’ont suivi jusqu’à la détection de l’erreur • L’émetteur doit être prêt à renvoyer tous les messages non acquittés dans une ‘fenêtre’ ou tampon dont la dimension est reliée à l’intervalle de la minuterie • Peut réutiliser l’espace des messages acquittés • La dimension de la fenêtre doit être telle que le transmetteur puisse être sûr de pouvoir retransmettre toutes les trames non acquittées • L’intervalle de temporisation et la dimension du tampon doivent être soigneusement choisis INF6001 Chap 3

  49. Fenêtre d’anticipation émetteur récepteur 0 1 0 2 3 1 Erreur 4 écarté 5 L’émetteur s’est enfin aperçu que 2 n’a pas été acquitté (temporisation) écarté 6 écarté 2 3 écarté 4 2 3 4 Émetteur doit garder en mémoire un certain nombre de messages pour pouvoir éventuellement les retransmettre (dans ce cas, de 2 à 6) INF6001 Chap 3

  50. Comment choisir le temps d’attente pour un acquittement? • Ce temps est déterminé par la vitesse du réseau • Doit être choisi judicieusement: • Si trop petit, beaucoup de messages pourraient être renvoyés inutilement • Si trop grand, trop de message devront être renvoyés quand on s’apercevra qu’un message a été perdu • Aussi le protocole pourrait retourner à numéroter un message n avant qu’on se soit aperçu que le message n précédent a été perdu… INF6001 Chap 3

More Related