Техническое задание: Протокол обмена сообщениями с подтверждением доставки
Цель проекта
Разработать надежный протокол для обмена данными между двумя узлами, обеспечивающий гарантированную доставку сообщений с помощью механизма подтверждений (ACK).
Ключевые требования к функционалу
- Односторонние подтверждения: Подтверждения (ACK) отправляются только в одну сторону. Протокол не должен реализовывать сложные механизмы запроса повторной передачи (ARQ).
- Таймаут и повторная отправка: Реализовать механизм проверки времени ожидания подтверждения. Если подтверждение на отправленный пакет не пришло в течение заданного интервала, протокол должен автоматически повторно отправить предыдущий пакет из буфера.
- Управление состоянием через callback-функции: Логика работы протокола (переходы между состояниями ожидания подтверждения и отправки данных) должна быть реализована не через явную таблицу состояний (state machine), а с помощью системы обратных вызовов (callbacks).
- Технический стек: Код должен быть написан в стиле языка C (процедурный стиль, структуры, указатели на функции), но с возможностью компиляции компилятором C++.
Ожидаемый результат
- Чистый, документированный исходный код на C/C++.
- Протокол, готовый к интеграции в более крупную систему.
- Базовая логика обработки таймаутов и повторных передач.