Как назначить PacketID для отслеживания пакетов по ненадежной сети, используя UDP в C? - PullRequest
0 голосов
/ 08 декабря 2018

Извините, если вопрос кажется странным.Прямо сейчас у меня есть клиент, отправляющий пакеты на сервер через надежную сеть с использованием UDP.Для моего проекта я должен отправить эти пакеты по ненадежной сети, используя UDP.Чтобы эмулировать ненадежную сеть, я использую sudo tc qdisc add dev lo root netem delay 100ms 20ms 25% loss 0.5% duplicate 1% reorder 25% 50%.

Поскольку пакеты отбрасываются и дублируются, я хочу назначить каждому пакету PacketID для отслеживания каждого пакета.Например, если PacketID 5 пропущен, другие пакеты не будут отправлены, пока 5 не будет отправлено должным образом.Если PacketID 5 дублируется, он не примет дублированную версию.

Мне кажется, я понимаю методологию назначения PacketID, но я довольно новичок в программировании сокетов и не знаю,есть более эффективный способ сделать это.Я не спрашиваю ответы (так как это проект для класса), но некоторые советы и подсказки о том, как мне поступить об этом

1 Ответ

0 голосов
/ 08 декабря 2018

Требуется пакет подтверждения.Дополнительно можно использовать таймер.Если получатель получает пакет с идентификатором n, он будет ожидать n + 1 идентификатора пакета и будет ждать этого, пока не истечет установленный таймер.все пакеты с идентификаторами больше чем n + 1 будут отброшены.Когда принимается пакет n + 1, пакет подтверждения должен быть отправлен от получателя отправителю с n + 1, что указывает на то, что пакет принят.Отправитель может подождать, пока не будет получен подтверждающий пакет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...