Скачиваний:
0
Добавлен:
04.02.2026
Размер:
221.68 Кб
Скачать

Механизм скользящего окна (Sliding Window Protocol)

Скользящее окно — это мощный механизм, позволяющий отправителю и приёмнику управлять потоком данных с использованием N-позиционного окна шириной W пакетов.wikipedia+2

Структура скользящего окна

На стороне отправителя существует окно с тремя указателями (границами):

text

┌─────────────────────────────────────────────────────────────────┐

│ Отправленные и подтверждённые │ Окно (W пакетов) │ Не отправленные │

│ pакеты │ │ пакеты │

└─────────────────────────────────────────────────────────────────┘

↑ ↑ ↑

LAR LFS USP

(Last Ack Rcvd) (Last Frame Sent) (Upper Sending Pointer)

↑─────────────────────W─────────────────────↑

Три указателя отправителя:

  1. LAR (Last Acknowledged Received) — номер последнего подтверждённого пакета

  2. LFS (Last Frame Sent) — номер последнего отправленного пакета

  3. USP (Upper Sending Pointer) = LAR + W — верхняя граница (макс. можно отправить)

Правило отправителя:

text

LFS ≤ USP

или эквивалентно:

LFS - LAR ≤ W

Если LFS == USP, окно "полное" → отправитель должен остановиться и ждать подтверждения

Иллюстрация работы скользящего окна отправителя

Начальное состояние:

text

Пакеты: 1 2 3 4 5 6 7 8 9 10

LAR=0, W=5

Окно отправителя:

LAR=0 LFS=0 USP=5

│ │ │

├──────────────────┼─────────────┤─────────────

│ Подтвержденные │ Окно (0-5) │ Не отправл

├──────────────────┼─────────────┤─────────────

Отправитель может отправить: пакеты 1, 2, 3, 4, 5

После отправки 3 пакетов:

text

LAR=0 LFS=3 USP=5

│ │ │

├──────────────────┼─────────────┤─────────────

│ Подтвережденные │ Окно 1,2,3 │ 4,5 - готовы

├──────────────────┼─────────────┤─────────────

LFS - LAR = 3 - 0 = 3 ≤ 5 ✓ (окно не переполнено)

Может ещё отправить 2 пакета (4, 5)

После получения ACK на пакет 1:

text

LAR=1 LFS=3 USP=6 (=1+5)

│ │ │

├────────────────┼─┼─────────────┤─────────────

│ Подтверждены │1│ Окно 2,3 │ 4,5,6 готовы

├────────────────┼─┼─────────────┤─────────────

Окно СДВИНУЛСЯ вправо на 1 позицию!

Теперь можно отправить пакет 6 (был недоступен)

После получения ACK на пакеты 1-3:

text

LAR=3 LFS=3 USP=8 (=3+5)

│ │ │

├──────────────────┼──────────────┼────────────

│ Подтверждены │ Окно 4,5,6,7,8

├──────────────────┼──────────────┼────────────

Окно открыт полностью!

Можно отправить пакеты 4, 5, 6, 7, 8

Сторона получателя

На стороне получателя аналогично:

text

┌─────────────────────────────────────────────────────────────────┐

│ Полученные и │ Окно (W пакетов) │ Ещё не полученные │

│ обработанные │ (ожидание) │ пакеты │

└─────────────────────────────────────────────────────────────────┘

↑ ↑ ↑

LAF RFP URp

(Last Ack Frame) (Receive Frame Position)

Правило получателя:

  • Принять пакеты, номера которых входят в диапазон [LAF+1, URp]

  • Пакеты вне этого диапазона отбросить

  • При получении подтвержденного пакета отправить ACK

Особенность: если пакеты приходят не по порядку (например, пакет 3 пришёл раньше пакета 2), получатель буферизирует пакет 3 и ждёт пакета 2. После получения всех пакетов по порядку, они обрабатываются и отправляется ACK.

Соседние файлы в предмете Открытые информационные системы и сети