Перейти к содержимому
3.5. TCP и UDP: надёжность против скорости

Две доставки: кто придёт целым, а кто вовремя

Один поток, одинаковые потери, разное поведение: с подтверждениями и без.

// один поток, две дорожки

Поток из десяти кусков идёт двумя дорожками. Сеть общая, теряются одни и те же куски - третий и седьмой. Разница только в том, переспрашивает ли дорожка потерянное. Нажимайте «Такт» и смотрите, кто когда закончит и с чем.

Такт 15 / 15

TCP: с подтверждениями

дорожка закончила

Заказное письмо с уведомлением о вручении. Каждый кусок ждёт подтверждения, потерянное уходит заново, порядок гарантирован. Так работают загрузка страниц, почта и скачивание файлов.

  1. SYN: клиент просит соединение соединение
  2. SYN-ACK: сервер отвечает и просит в ответ соединение
  3. ACK: клиент подтверждает, соединение установлено соединение
  4. кусок 1 дошёл
  5. кусок 2 дошёл
  6. кусок 3 подтверждения нет
  7. кусок 3 отправлен заново
  8. кусок 4 дошёл
  9. кусок 5 дошёл
  10. кусок 6 дошёл
  11. кусок 7 подтверждения нет
  12. кусок 7 отправлен заново
  13. кусок 8 дошёл
  14. кусок 9 дошёл
  15. кусок 10 дошёл

Дошло всё: кусков у приложения 10, потеряно 0. Цена - 15 тактов: три ушли на рукопожатие и ещё два на повторные отправки. Отправитель не двигается вперёд, пока не убедится, что предыдущее дошло.

UDP: без подтверждений

дорожка закончила

Листовки в окно на ходу: ни рукопожатия, ни подтверждений, ни порядка. Заголовок 8 байт против минимум 20 у TCP. Так идут видеозвонки, игры и DNS-запросы.

  1. кусок 1 дошёл
  2. кусок 2 дошёл
  3. кусок 3 пропущен, ждать не стали
  4. кусок 4 дошёл
  5. кусок 5 дошёл
  6. кусок 6 дошёл
  7. кусок 7 пропущен, ждать не стали
  8. кусок 8 дошёл
  9. кусок 9 дошёл
  10. кусок 10 дошёл

Уложились в 10 тактов - ровно столько, сколько кусков. Но до приложения добрались не все: 8 дошло, 2 пропущено, переспрашивать никто не стал. В видеозвонке это доля секунды подмороженной картинки, а не остановка разговора: пересланный кадр всё равно опоздал бы.

Модель условная и сильно упрощённая: такт здесь - одна отправка, потери назначены заранее, а повтор всегда удаётся со второго раза. Настоящий TCP отправляет пакеты окном и складывает пришедшее не по порядку в буфер, пока ждёт недостающее, а при потерях ещё и сам сбавляет скорость. Терпение у него не бесконечное: если потери долгие, соединение рвётся по таймауту - поэтому при очень плохом интернете загрузка обрывается, а не ждёт вечно.

Интерактив разработан - ремонт компьютеров и ноутбуков в Барановичах. © 2008-2026. Источник: any.by/demo/dve-dostavki