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

Практический пример: n-позиционное окно шириной w пакетов

Задача: Передать 10 пакетов с окном W=3 пакета.

Решение:

text

Этап 1: Инициализация

LAR = 0 (последний подтвёрж.)

LFS = 0 (последний отправл.)

USP = 0 + 3 = 3 (верхний предел)

Этап 2: Отправка первых 3 пакетов

Отправитель отправляет пакеты 1, 2, 3

LFS становится 3

Окно "полно" (LFS - LAR = 3 = W)

Отправитель ЖДЁТ подтверждения

Этап 3: Получение первого подтверждения

Получатель → Отправителю: ACK(1)

LAR = 1

USP = 1 + 3 = 4

LFS = 3

Окно сдвинулся: теперь можно отправить пакет 4

LFS - LAR = 3 - 1 = 2 ≤ 3 ✓

Этап 4: Отправка пакета 4

Отправитель отправляет пакет 4

LFS = 4

Окно снова "полно" (LFS - LAR = 4 - 1 = 3 = W)

Этап 5: Получение подтверждений на пакеты 2-3

Получатель → Отправителю: ACK(3)

LAR = 3

USP = 3 + 3 = 6

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

Этап 6: Отправка пакетов 5 и 6

LFS = 6

Окно "полно" (6 - 3 = 3)

... процесс продолжается ...

Этап N: После отправки всех пакетов

LAR = 10

LFS = 10

Соединение завершено

Таблица прогресса:

Этап

Отправлено

LAR

LFS

Окно

ACK

Статус

1

1,2,3

0

3

ПОЛНО

Ждём

2

1,2,3

1

3

2/3

✓(1)

Отправить 4

3

1,2,3,4

1

4

ПОЛНО

✓(1)

4

1,2,3,4

3

4

1/3

✓(3)

Отправить 5,6

5

1,2,3,4,5,6

3

6

ПОЛНО

✓(3)

...

...

...

...

...

...

...

Почему это эффективно?

Сравнение подходов:

text

1. Stop-and-Wait (окно = 1 пакет):

Отправить пакет → Ждать → Получить ACK → Отправить следующий

Количество операций: N (для N пакетов)

Время: Очень долго (много времени ожидания)

2. Скользящее окно (W=5):

Отправить пакеты 1-5 → Параллельно получать ACK → Отправить 6-10

Одновременно активно: до W пакетов

Время: В W раз быстрее!

3. Большое окно (W=100):

Даже быстрее, но требует больше буфера

Оптимальный размер окна:

text

window ≥ (RTT × Bandwidth) / PacketSize

Где:

- RTT = Round Trip Time (время туда-обратно, мс)

- Bandwidth = пропускная способность канала (Мбит/с)

- PacketSize = размер пакета

Пример для интернета:

RTT = 100 мс = 0.1 сек

Bandwidth = 10 Мбит/с

PacketSize = 1000 байт = 8000 бит

window ≥ (0.1 × 10Mb/s) / 8000 bit = (0.1 × 10,000,000) / 8000 ≈ 125 пакетов

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

Вопрос 18. Управление потоком данных в протоколе tcp. Быстрый и медленный перезапрос пакетов. Принцип медленного старта Специфика управления потоком в tcp

TCP использует двухуровневое управление потоком:asvk.msu+2

  1. Управление потоком получателя (Receiver-side Flow Control)

    • Получатель контролирует, сколько данных может принять

    • Параметр: RWND (Receiver Window) — объявленное окно получателя

    • Получатель отправляет RWND в каждом ACK пакете

  2. Управление перегрузкой сети (Network Congestion Control)

    • Отправитель контролирует перегрузку сети

    • Параметр: CWND (Congestion Window) — окно перегрузки, вычисляется отправителем

    • Отправитель НЕ отправляет CWND, но использует его для ограничения передачи

Эффективное окно отправителя:book.itep+1

text

Effective Window = min(RWND, CWND)

Отправитель передаёт не более min(RWND, CWND) пакетов!

Процесс:

text

Получатель → Отправителю: ACK с RWND = 5

(означает: я готов получить до 5 сегментов)

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

- RWND = 5 (объявлено получателем)

- CWND = 3 (вычислено из состояния сети)

- Effective Window = min(5, 3) = 3

Отправитель может отправить максимум 3 пакета

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