Две доставки: кто придёт целым, а кто вовремя
Один поток, одинаковые потери, разное поведение: с подтверждениями и без.
// один поток, две дорожки
Поток из десяти кусков идёт двумя дорожками. Сеть общая, теряются одни и те же куски - третий и седьмой. Разница только в том, переспрашивает ли дорожка потерянное. Нажимайте «Такт» и смотрите, кто когда закончит и с чем.
TCP: с подтверждениями
дорожка закончилаЗаказное письмо с уведомлением о вручении. Каждый кусок ждёт подтверждения, потерянное уходит заново, порядок гарантирован. Так работают загрузка страниц, почта и скачивание файлов.
- SYN: клиент просит соединение соединение
- SYN-ACK: сервер отвечает и просит в ответ соединение
- ACK: клиент подтверждает, соединение установлено соединение
- кусок 1 дошёл
- кусок 2 дошёл
- кусок 3 подтверждения нет
- кусок 3 отправлен заново
- кусок 4 дошёл
- кусок 5 дошёл
- кусок 6 дошёл
- кусок 7 подтверждения нет
- кусок 7 отправлен заново
- кусок 8 дошёл
- кусок 9 дошёл
- кусок 10 дошёл
Дошло всё: кусков у приложения 10, потеряно 0. Цена - 15 тактов: три ушли на рукопожатие и ещё два на повторные отправки. Отправитель не двигается вперёд, пока не убедится, что предыдущее дошло.
UDP: без подтверждений
дорожка закончилаЛистовки в окно на ходу: ни рукопожатия, ни подтверждений, ни порядка. Заголовок 8 байт против минимум 20 у TCP. Так идут видеозвонки, игры и DNS-запросы.
- кусок 1 дошёл
- кусок 2 дошёл
- кусок 3 пропущен, ждать не стали
- кусок 4 дошёл
- кусок 5 дошёл
- кусок 6 дошёл
- кусок 7 пропущен, ждать не стали
- кусок 8 дошёл
- кусок 9 дошёл
- кусок 10 дошёл
Уложились в 10 тактов - ровно столько, сколько кусков. Но до приложения добрались не все: 8 дошло, 2 пропущено, переспрашивать никто не стал. В видеозвонке это доля секунды подмороженной картинки, а не остановка разговора: пересланный кадр всё равно опоздал бы.
Модель условная и сильно упрощённая: такт здесь - одна отправка, потери назначены заранее, а повтор всегда удаётся со второго раза. Настоящий TCP отправляет пакеты окном и складывает пришедшее не по порядку в буфер, пока ждёт недостающее, а при потерях ещё и сам сбавляет скорость. Терпение у него не бесконечное: если потери долгие, соединение рвётся по таймауту - поэтому при очень плохом интернете загрузка обрывается, а не ждёт вечно.
Интерактив разработан ANY.BY - ремонт компьютеров и ноутбуков в Барановичах. © 2008-2026. Источник: any.by/demo/dve-dostavki