Я хочу развернуть приложение на мобильных устройствах, участвующих в одноранговой сети Wi-Fi, которое повысит надежность информации. Основная задача довольно проста: отправить данные (могут быть большего размера) с узла S (источник) на узел D (назначение). Вот моя примерная топология:
--- N1 ---
/ | \
/ | \
S ----- N2 ----- N4 ----- D
\ | /
\ | /
--- N3 ---
Просто используя TCP, я могу настроить надежный канал связи от S через N2 и от N4 до D. Это нормально.
Моя проблема сейчас такова: я хочу, чтобы N1 и N3 также могли получать (подслушивать) сообщения, отправленные S, N2 и N4, но им не нужно надежно их получать. Вы можете думать об этом как о потоке пакетов. Например, S хочет послать пакет D. Но этот пакет может быть полезен и для N[1-4], поэтому его следует сохранить.
Это, конечно, возможно при использовании неразборчивого режима Wi-Fi на всех узлах, но это было бы излишеством, потому что это означало бы, что каждый узел должен был бы анализировать все пакеты, чтобы увидеть, могут ли они их сохранить.
Простым решением будет отправка UDP-пакетов:
- S отправляет широковещательный пакет UDP со временем жизни от 1 до N2 с дополнительной информацией.
- N1, N2 и N3 могут получать и сохранять пакет, но только N2 повторно отправляет информацию N4.
- Это поведение повторяется до тех пор, пока D не получит пакет.
Но тогда я должен каким-то образом переопределить TCP с точки зрения упорядочения пакетов, контроля перегрузки и надежной связи, что плохо.
Итак, мой вопрос: знаете ли вы о протоколе, поддерживающем такое поведение?