Какие существуют подходы, чтобы убедиться, что UDP доставляет пакеты по порядку? - PullRequest
0 голосов
/ 15 марта 2020

Я прочитал, что приложение может обрабатывать в порядке доставки УДП. Но как это работает? Не существует порядкового номера или чего-либо еще, чтобы определить, вышел ли пакет из строя.

1 Ответ

1 голос
/ 15 марта 2020

Какие существуют подходы, чтобы убедиться, что UDP доставляет пакеты по порядку?

Это неправильный подход к проблеме. Вы не можете гарантировать определенный c порядок доставки пакетов, и вы также не можете быть уверены, что пакеты не потеряны или пакеты дублируются. Вместо этого вам нужно проверить успешную доставку и доставку заказа в приложении-получателе и реагировать на проблемы с передачей, игнорируя дубликаты, обрабатывая сообщения в намеченном порядке или, при необходимости, запрашивать у отправителя повторную передачу потерянного сообщения.

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

Тот же самый подход фактически используется с TCP, который использует 16-битный порядковый номер. Только то, что в TCP лог c для переупорядочения и повторной передачи обычно выполняется внутри ядра ОС получателя, а не внутри приложения получателя.

...