Подслушивание на уровне приложений в специальных сетях, очень похоже на TCP - PullRequest
0 голосов
/ 16 февраля 2011

Я хочу развернуть приложение на мобильных устройствах, участвующих в специальной сети 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] - и поэтому должен храниться.

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

Простым решением будет отправка пакетов UDP:

  1. S отправляет широковещательный пакет UDP с временем жизни от 1 до N2 с дополнительной информацией.
  2. N1, N2 и N3 могут принимать и сохранять пакет, но только N2 повторно отправляет информацию в N4.
  3. Это поведение повторяется, пока D не получит пакет.

Но тогда мне нужно каким-то образом переопределить TCP с точки зрения упорядочения пакетов, контроля перегрузки и надежной связи - что плохо.

Итак, мой вопрос: знаете ли вы о протоколе, который поддерживает это поведение?

1 Ответ

0 голосов
/ 22 февраля 2011

Я сделал то, что вы говорите, и есть несколько способов сделать это.Использование linux - самая простая и единственная платформа, где я это реализовал.

В Linux есть два способа сделать это.1. используйте iptables и NQUEUE и передавайте полученные пакеты процессу приложения, который делает с ними все, что вы хотите.Используйте правила iptables, чтобы передавать только те пакеты, которые вам интересны, например пакеты с IP dst N2, N4 и т. Д. 2. Используйте libpcap, и вы связываете свою программу с этой библиотекой и настраиваете фильтр захвата для захвата интересующих вас пакетов.

...