Я работал над написанием своего собственного сетевого движка для моих собственных проектов по разработке игр.Это требует наличия вариантов ненадежных, надежных и упорядоченных надежных сообщений.Однако я не смог определить все механизмы, необходимые для надежных и упорядоченных надежных протоколов.
Каковы необходимые механизмы для надежного уровня по UDP?Дополнительные детали приветствуются.
На данный момент я понимаю, что это требования:
- Подтверждение полученных сообщений с порядковым номером.
- Повторная отправка неподтвержденных сообщенийпосле истечения времени повторной передачи.
- Отслеживание времени прохождения сигнала туда и обратно для каждого пункта назначения для расчета подходящего времени повторной передачи.
- Определение и удаление дублирующих пакетов.
- Обработка номеров переполнения последовательностицикл вокруг.
Это повлияло на мою архитектуру: надежные заголовки сообщений с последовательностями и временными метками, подтверждающие сообщения, которые отражают принятую последовательность и временную метку, система для отслеживания подходящего времени повторной передачи на основе адреса ипоток, который a) принимает сообщения и ставит их в очередь для получения пользователем, b) подтверждает надежные сообщения и c) повторно передает неподтвержденные сообщения с истекшими таймерами повторной передачи.
ПРИМЕЧАНИЕ: Надежный UDP не тот жекак ПТС.Даже заказанный надежный UDP не совпадает с TCP.Я не тайно не знаю, что я действительно хочу TCP.Кроме того, прежде чем кто-то играет в семантику, да ... надежный UDP - это "оксюморон".Это слой поверх UDP, который обеспечивает надежную доставку.