Почему размер окна меньше или равен половине порядкового номера в протоколе SR? - PullRequest
19 голосов
/ 22 октября 2010

В протоколе селективного повтора размер окна должен быть меньше или равен половине размера пространства порядковых номеров для протокола SR.Почему это так и как?

Ответы [ 4 ]

24 голосов
/ 22 октября 2010

Это делается для того, чтобы избежать неправильного распознавания пакетов.

Если размер окна превышает половину пространства порядкового номера, то, если ACK потерян, отправитель может отправить новые пакеты, которые получатель считает повторными передачами..

Например, если наш диапазон порядкового номера 0-3 и размер окна равен 3, такая ситуация может возникнуть.

A -> 0 -> B

A -> 1 -> B

A -> 2 -> B

A <- 2ack <- B (это потеряно) </p>

A -> 0 ->B

A -> 1 -> B

A -> 2 -> B

После потери пакета B ожидает, что следующие пакеты будут иметь порядковые номера 3,0 и 1.

Но 0 и 1, которые отправляет A, фактически являются повторными передачами, поэтому B получает их не по порядку.

Ограничив размер окна до 2 в этом примере,мы избегаем этой проблемы, потому что B будет ожидать 2 и 3, и только 0 и 1 могут быть повторными передачами.

8 голосов
/ 22 октября 2010

Пробел последовательности обнуляется после достижения максимального числа.Рассмотрим угловой случай, когда все ACK потеряны - отправитель не перемещает свое окно, но получатель делает (так как он не знает, что отправитель не получает ACK).Если мы не ограничим размер окна половиной пространства последовательности, мы получим перекрывающиеся отправляющие, «не подтвержденные» и получатели «действительные новые» пространства последовательности.Это приведет к тому, что повторные передачи будут интерпретироваться как новые пакеты.

3 голосов
/ 07 мая 2013

Поскольку получатель не сможет различить старый пакет или новый пакет.Приемник идентифицирует пакеты на основе порядковых номеров, и для каждого соединения существует конечное число уникальных номеров.Вы не можете иметь бесконечный буфер.

Давайте рассмотрим очевидный сценарий сбоя:

Размер окна больше, чем пространство порядкового номера.Допустим, у нас есть порядковые номера 0, 1, 2. И наш размер окна равен 4. Это означает, что у окна есть два вхождения 0.

0,1,2,0 <- перенос по модулю.Когда мы получаем пакет с последовательностью, равной 0. Это первый пакет или четвертый?Понятия не имею.Теперь эта проблема возникнет, поскольку размер окна превышает половину пространства порядкового номера.Зачем?Потому что всегда существует вероятность того, что получатель просматривает порядковый номер, который МОЖЕТ содержаться в пакете, поступающем от отправителя, который НОВЫЙ или СТАРЫЙ.Это всегда случается?Нет. Но когда это происходит, вот что происходит: </p>

Случай 1:

Окно получателя после правильного приема пакетов 0,1,2.0,1,2, [3,0,1], 2 Но что, если отправленные ACK потеряны?Ну, отправитель отправит 0,1,2.Но 0,1 СТАРЫЙ или НОВЫЙ?Приемник не может сказать.

Случай 2:

То же окно на приемном конце.Три пакета получены.

0,1,2, [3,0,1], 2

Теперь получатель получает ВСЕ подтверждения, но ОДИН из них правильно.Давайте выберем 2-й (1).Теперь он собирается отправить 1. Но получатель смотрит на 1!Так это новый, как он ожидает (нет), или старый?

Поэтому, чтобы гарантировать, что окно никогда не ожидает порядковые номера, которые могут быть использованы потенциальными ожидающими пакетами (либо поступающими изнормальная передача или повторная передача пропущенного подтверждения) мы должны либо уменьшить размер окна, либо увеличить порядковые номера.

Посмотрите, что произойдет, когда мы увеличим пространство порядковых номеров, скажем, до 6.

0,1,2,3,4,5.

Независимо от того, как мы позиционируем окно, никогда не рискует получить пакет со старым порядковым номером.

0,1,2, [3,4,5] 0,1...

К тому времени, когда окно закроется, мы уверены, что уже получили предыдущие по порядку.

1 голос
/ 12 октября 2016

Эта ссылка содержит анимацию, которая проходит через каждый из шагов протокола, чтобы объяснить, почему размер окна имеет значение:

* ** 1003 тысяча два *http://webmuseum.mi.fh -offenburg.de / index.php? Вид = EXH & SRC = 73

Как правило, если размер окна слишком велик, повреждение при передаче может привести к неверным предположениям и привести к повреждению данных в конечном результате.

...