2014-02-01 4 views
1

У меня есть два приложения Java, работающих на двух разных машинах в двух разных частях мира. Машины могут быть за NAT (или нет!).Передача сообщений P2P за брандмауэрами и NAT

Предполагается, что заявки будут перенесены на некоторые данные (< 500kb).

У нас есть сервер, который может делать все (например, предоставлять IP-адрес сверстников), но данные из приложений должны всегда передаваться одноранговым. Данные не могут быть перенаправлены через сервер.

Должен ли я иметь дело с брандмауэром?
Должен ли я устанавливать перенаправление портов?
Являются ли JXTA или JGroups тем, что мне нужно? UPNP что-то мне нужно для изучения? UDP Hole Пробивая что-то, на что я должен смотреть?

Я знаю, что мой вопрос немного расплывчатый, но, пожалуйста, не снимайте мой вопрос, мне просто нужно подтолкнуть в правильном направлении. Я попытаюсь лучше объяснить, когда начнут появляться комментарии/ответы!

+2

Начните с изучения ICE (RFC 5245) с помощью STUN и TURN. WebRTC в основном базируется на этих технологиях. – selbie

ответ

1

Я согласен с рекомендацией selbie в комментарии выше.

Короткий ответ заключается в том, что для создания сетей одноранговой сети вы должны иметь базовое понимание всех технологий, о которых вы говорили.

Должен ли я иметь дело с брандмауэром?

Если сверстники находятся за NAT, вам необходимо иметь дело с обходом NAT.

Должен ли я устанавливать переадресацию портов?

Вы "должны"? Нет. Но вы могли бы рассмотреть это как решение своей проблемы. Переадресация портов - это способ настроить ваш брандмауэр, чтобы ваши коллеги эффективно обменивались данными, как будто они не находятся за брандмауэром. Это означает, что вы можете написать свое программное обеспечение, как будто нет брандмауэра. Перфорация отверстий в сетях NAT является альтернативой ручной переадресации портов. Вы можете думать об этом как о «автоматическом переадресации портов».

Являются ли JXTA или JGroups тем, что мне нужно?

Извините. Я не знаю, что это такое.

UPNP что-то, что мне нужно для изучения?

UPnP является одним из возможных стратегий прохождения NAT:

http://en.wikipedia.org/wiki/Universal_Plug_and_Play#NAT_traversal

Обратите внимание, что UPnP, как известно, небезопасно и, вероятно, не должны быть включены, например, см:

http://www.zdnet.com/how-to-fix-the-upnp-security-holes-7000010584/

Мое впечатление, что UPnP является не самым важным NAT метод обхода, но это может быть полезным для реализации для достижения большей совместимости (т.е. в качестве запасного варианта, если STUN терпит неудачу).

UDP Hole Punching что-то, что я должен изучить?

Вам понадобится стратегия обхода NAT. UDP Hole Punching (STUN и т. Д.) - одна из таких стратегий, и, как говорит Селби, она является обычной. Существуют также безсерверные методы (посмотрите на механизм, который использует SubEthaEdit).

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

Смежные вопросы