Какие существуют подходы, чтобы убедиться, что UDP доставляет пакеты по порядку?
Это неправильный подход к проблеме. Вы не можете гарантировать определенный c порядок доставки пакетов, и вы также не можете быть уверены, что пакеты не потеряны или пакеты дублируются. Вместо этого вам нужно проверить успешную доставку и доставку заказа в приложении-получателе и реагировать на проблемы с передачей, игнорируя дубликаты, обрабатывая сообщения в намеченном порядке или, при необходимости, запрашивать у отправителя повторную передачу потерянного сообщения.
Типичный способ сделать это - добавить некоторый порядковый номер в сообщение, а затем проверить этот порядковый номер в приложении получателей. Это делается, например, с помощью RTP (протокол на основе UDP для аудио / видео / ... в реальном времени), который имеет 16-битный порядковый номер в заголовке RTP . Аналогичный QUI C имеет 32-битный порядковый номер в каждом кадре .
Тот же самый подход фактически используется с TCP, который использует 16-битный порядковый номер. Только то, что в TCP лог c для переупорядочения и повторной передачи обычно выполняется внутри ядра ОС получателя, а не внутри приложения получателя.