
Информатика: создаём своего цифрового помощника Урок 42 из 46
TCP и UDP: разные обещания доставки
Сравним два способа доставки и увидим, почему скорость сама по себе не решает задачу.
Где мы на карте
Это урок 42 из 72, блок «Интернет, веб и облако» (39–46). Мы продолжаем один проект: три вымышленные записи и пять результатов напоминания из версии 1.0 должны сохраниться. На опорной схеме показан ровно тот переход, который можно объяснить и проверить; стрелка не означает, что все промежуточные устройства нарисованы.
Ситуация и вопрос
Школьный клуб диктует по телефону три шага рецепта: «открой», «запиши», «проверь». Если второй шаг исчез, третий не исправит рецепт. Но во время видеозвонка один пропавший кадр обычно лучше пропустить, чем ждать его повторной отправки. Какие обещания нужны двум разным задачам?
Новые слова без пропусков
TCP предоставляет приложению упорядоченный надёжный поток байтов между конечными точками соединения; подтверждения и повторная передача помогают заметить потерю. UDP передаёт отдельные датаграммы без встроенной гарантии доставки и порядка. Датаграмма — самостоятельное сообщение транспорта. Поток — последовательность байтов: границы отправленных «сообщений» TCP сам не сохраняет. Никакой транспорт не спасает от ошибки в содержимом самой задачи.
Опорный сигнал
Прочитайте схему слева направо. Для каждой стрелки назовите вход, действие и проверяемый результат. Затем закройте подпись следующей карточки и предскажите её своими словами. Вернитесь к реальному примеру: различайте учебную аналогию, работу localhost и возможный удалённый сайт. Если картинка обещает больше, чем объяснение, исправьте объяснение или рисунок.
Разбираем шаг за шагом
Представьте карточки 1, 2, 3. В учебной TCP-модели получатель не показывает окончательный текст, пока не получит часть 2; отправитель узнаёт о пропуске и повторяет её. В простой UDP-модели 1 и 3 могут прийти без 2, а приложение само решает, ждать ли, запросить ли повтор или проигнорировать потерю. В реальности TCP работает с номерами байтов, а не с нашими карточками. Современный HTTP/3 использует QUIC поверх UDP; это не означает, что его данные остаются без восстановления: нужные гарантии реализует QUIC выше UDP.
Предскажите и проверьте
Не запускайте код сразу. Выпишите точный ожидаемый результат, включая порядок строк и символы. Объясните, что код доказывает, а чего не доказывает: этот маленький пример моделирует одно правило и не создаёт настоящий интернет, TLS-сертификат или открытый сервер. Затем выполните фрагмент в каталоге step-04 и сравните результат посимвольно. Измените один вход, сначала предскажите новый результат, потом проверьте.
received = {3: "done", 1: "task", 2: ":"}
print("".join(received[n] for n in sorted(received)))
Ожидаемый вывод
task:done
Поймайте ошибку
Фраза «UDP всегда быстрее TCP» неверна как универсальное правило. Скорость зависит от сети, протокола выше и цели. Ещё одна ошибка: считать один вызов отправки TCP равным одному чтению у получателя. Поток может поступить частями или несколькими отправками сразу; поэтому приложение задаёт собственные границы данных.
Изменение проекта
В паспорт веб-помощника внесите решение: полная HTML-страница и JSON-файл задач не должны показываться как правильные, если часть содержимого пропала. Для учебной схемы выбираем доставку с проверкой; наш локальный Python-сервер пользуется обычным HTTP поверх TCP на 127.0.0.1. Не приписывайте ему HTTPS или QUIC.
Задание и доказательство
Карточки 1 и 3 пришли, 2 пропала. Покажите поведение учебного TCP-варианта и простого UDP-варианта. Потом сформулируйте правило приложения для целого JSON-документа: когда показывать задачи, а когда сообщать о неполном ответе?
Перенос в новую ситуацию
Для прямого видеозвонка и для перевода денег выберите желательное поведение при потере части данных. Объясните выбор через последствия ошибки, а не через слоган о скорости.
Возврат через 1, 7 и 30 дней
Через 1 день нарисуйте главный переход по памяти и приведите контрпример к слишком простой аналогии. Через 7 дней объясните новый случай однокласснику, не читая готовый текст; проверьте не менее 7 из 10 вопросов. Через 30 дней повторите опыт с локальной веб-версией и убедитесь, что три исходных задачи и пять правил сохранились. Запишите, какой термин всё ещё непонятен, и вернитесь к его первому объяснению.
Первоисточник для проверки
Следующий урок
Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом
Комментарии (0)
Войдите, чтобы оставить комментарий →
Пока нет комментариев. Будьте первым.