Подтвердить что ты не робот

Почему размер окна меньше или равен половине номера последовательности в протоколе SR?

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

4b9b3361

Ответ 1

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

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

Например, если наш диапазон порядковых номеров равен 0-3, а размер окна равен 3, это может произойти.

A → 0 → B

A → 1 → B

A → 2 → B

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

A → 0 → B

A → 1 → B

A → 2 → B

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

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

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

Ответ 2

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

Ответ 3

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

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

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

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

Случай 1:

Окно получателя после правильного приема пакетов 0,1,2. 0,1,2, [3,0,1], 2 Но что, если отправленные ACK будут потеряны? Ну, отправитель отправит 0.02. Но 0,1 OLD или NEW? Приемник не может сказать.

Случай 2:

То же окно на принимающей стороне. Получены три пакета.

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

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

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

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

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

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

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

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

Ответ 4

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

http://webmuseum.mi.fh-offenburg.de/index.php?view=exh&src=73

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