SkillGridИзучай computer science на практике

TCP и UDP: надёжный против быстрого

Как TCP гарантирует доставку, почему UDP — нет, и когда нужен каждый из них.

12 мин · 40 XP

IP доставляет пакеты «как получится»: они могут потеряться, продублироваться или прийти не по порядку. Приложениям это обычно не подходит. TCP добавляет надёжность поверх IP, а UDP сознательно её не добавляет.

Трёхстороннее рукопожатие TCP
КлиентCLOSED
СерверCLOSED

Соединение закрыто. Пока ничего не подключено.

Пакетов отправлено
0
Повторов
0
Статус
Ещё не установлено

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

UDP вообще обходится без рукопожатия. Он быстрее и требует меньше накладных расходов — поэтому на нём работают видеозвонки, игры и DNS. Потерять один пакет допустимо, а ждать повторной отправки — нет.

ClientServerSYN (seq=x)SYN-ACK (seq=y, ack=x+1)ACK (ack=y+1)Соединение установлено

Практика

  1. Расставь шаги трёхстороннего рукопожатия в правильном порядке.

    Подсказки
    • Начни с того, кто инициирует соединение.
    • ACK всегда отвечает на предыдущий шаг.

    10 XP

  2. В видеозвонке потерялся один кадр. Какой протокол уместнее и почему?

    Подсказки
    • Подумай, что происходит при потере пакета.
    • TCP жертвует скоростью ради надёжности.

    12 XP

  3. Первый SYN потерян. Заверши рукопожатие, правильно повторив попытку.

    Подсказки
    • Таймер истёк, ответа не пришло.
    • Клиент повторяет SYN с тем же sequence number.

    18 XP