Доступны ли протоколы / методы для синхронизации сообщений и их подтверждений в широковещательной асинхронной сетевой системе? - PullRequest
1 голос
/ 17 января 2011

Какие протоколы / методы доступны для синхронизации сообщений и их подтверждений в широковещательной асинхронной сетевой системе? Мы используем UDP с ACK и таймером, чтобы выяснить, есть ли необходимость в повторной отправке (макс. Отправить одно и то же сообщение 3 раза).

Ответы [ 2 ]

1 голос
/ 17 января 2011

Если вы используете ACK и повторную отправку, вам следует серьезно подумать об использовании TCP, поскольку создание надежности и масштабируемости поверх UDP чревато опасностью (повторная отправка 3x на самом деле также не дает вам надежности).В широковещательной системе, которая нуждается в масштабировании, вам следует подумать о том, чтобы просто выполнять периодическую повторную отправку и заставить получателей отказаться от подписки, как только они получат необходимую информацию (именно так работает множество систем автоматического обнаружения).

0 голосов
/ 21 декабря 2011

UDP с ACK. Попробуй TCP; он делает все это и даже больше.

Если вы действительно хотите сделать это вручную, посмотрите на скользящее окно. Короче говоря, вы можете отправлять несколько сообщений одновременно и ожидать много ACK (вместо отправки и ожидания ACK). То, как вы будете действовать после истечения времени ожидания ACK (не получено), зависит от вас. Если вы отправляете видеокадры, вы можете игнорировать их. С другой стороны, вы можете переслать только те пакеты, которые не были подтверждены ACK, или переслать все после последнего истекшего ACK.

Википедия описывает протокол скользящего окна здесь .

Визуальная демонстрация по этой ссылке: http://www.osischool.com/protocol/Tcp/slidingWindow/index.php

...