Pourquoi la taille de la fenêtre est inférieure ou égale à la moitié du numéro de séquence dans le SR protocole?
Selective repeat protocole, la taille de la fenêtre doit être inférieure ou égale à la moitié de la taille du numéro de séquence de l'espace pour le SR protocole. Pourquoi est-ce si, et comment?
Vous devez vous connecter pour publier un commentaire.
C'est pour éviter les paquets être reconnu correctement.
Si la taille des fenêtres est plus grand que la moitié du numéro de séquence de l'espace, alors si un accusé de réception est perdu, l'expéditeur peut envoyer de nouveaux paquets que le récepteur estime retransmissions.
Par exemple, si notre numéro de séquence de la plage est de 0 à 3 et la taille de la fenêtre est de 3, cette situation peut se produire.
A -> 0 -> B
A -> 1 -> B
A -> 2 -> B
Un <- 2ack <- B (c'est perdu)
A -> 0 -> B
A -> 1 -> B
A -> 2 -> B
Après le paquet perdu, B attend maintenant la prochaine paquets d'avoir des numéros de séquence 3, 0, et 1.
Mais, le 0 et le 1 qui est de l'envoi sont en fait des retransmissions, donc B reçoit de l'ordre.
En limitant la taille de la fenêtre à 2 dans cet exemple, nous éviter ce problème, car B attendent 2 et 3, et seulement des 0 et des 1 peut être retransmissions.
La séquence de l'espace revient à zéro après le nombre max est atteint. Considérons le cas de coin où tous les accusés de réception sont perdus - expéditeur ne bouge pas de sa fenêtre, mais le récepteur n' (car il est pas au courant de l'expéditeur ne reçoit pas les accusés de réception). Si nous n'avons pas de limite de la taille de la fenêtre à la moitié de la séquence de l'espace, nous nous retrouvons avec un chevauchement de l'expéditeur "envoyé, mais pas reconnu" et le récepteur "valide la nouvelle" séquence d'espaces. Cela aurait pour conséquence retransmissions être interprété comme de nouveaux paquets.
Parce que le récepteur ne font pas la distinction entre un vieux paquet ou d'un nouveau paquet. Le récepteur identifie les paquets en fonction des numéros de séquence, et il y a un nombre fini de nombres uniques pour chaque connexion. Vous ne pouvez pas avoir une infinité de tampon.
Permet de regarder un échec évident scénario:
La taille de la fenêtre est plus grande que le numéro de séquence de l'espace. Disons que nous avons des numéros de séquence 0, 1, 2. Et notre taille de la fenêtre est 4. Cela signifie que la fenêtre a deux occurrences de 0.
0,1,2,0 <- modulo envelopper. Lorsque nous recevons un paquet avec un seq 0. Est-il le premier paquet ou le quatrième? Aucune idée. Maintenant, ce problème va se produire dans la mesure où la taille de la fenêtre est supérieure à la moitié du numéro de séquence de l'espace. Pourquoi? Car il y a toujours la possibilité que le récepteur est à la recherche d'un numéro de séquence qui PEUT être contenue dans un paquet en provenance de l'expéditeur qui est NOUVEAU ou ANCIEN. Est-il toujours le cas? Pas de. Mais lorsqu'il le fait, voici ce qui arrive:
Cas 1:
Fenêtre du récepteur après l'avoir correctement de la réception de paquets 0,1,2.
0,1,2,[3,0,1],2
Mais que faire si les accusés de réception envoyés sont perdus? Ainsi, l'expéditeur de renvoyer 0,1,2. Mais sont 0,1 ANCIEN ou le NOUVEAU? Le récepteur ne peut pas dire.
Cas 2:
Même fenêtre sur l'extrémité de réception. Les trois paquets sont reçus.
0,1,2,[3,0,1],2
Maintenant, le récepteur reçoit TOUS les accusés de réception, mais correctement. Vous permet de choisir le 2ème (1). Maintenant, il va renvoyer 1. Mais le récepteur est à la recherche à 1! Alors, est-ce le nouveau, il s'attend à ce (non), ou de l'ancien?
Par conséquent, pour s'assurer que la fenêtre est de ne jamais attendre que les numéros de séquence qui pourrait éventuellement être utilisé par le potentiel de circulation des paquets (soit provenant d'une transmission normale ou re-transmission d'un accusé de réception), nous avons de diminuer la taille de la fenêtre ou de l'augmentation des numéros de séquence.
Regardez ce qui se passe lorsque nous augmentons le numéro de séquence de l'espace, par exemple, de 6.
0,1,2,3,4,5.
Peu importe comment nous positionner la fenêtre, il n'est jamais au risque de recevoir un paquet avec un vieux numéro de séquence.
0,1,2,[3,4,5]0,1...
Le temps que la fenêtre s'enroule autour de, nous sommes positifs que nous avons reçu les précédentes dans l'ordre.
Ce lien a une animation qui marche à travers chacune des étapes du protocole d'expliquer pourquoi la taille de la fenêtre questions:
http://webmuseum.mi.fh-offenburg.de/index.php?view=exh&src=73
En gros, si la taille de la fenêtre est trop haute, alors la corruption dans la transmission peut entraîner des erreurs dans les hypothèses et entraîner la corruption des données dans le résultat final.