Отправка UDP-пакетов через Интернет - PullRequest
4 голосов
/ 31 марта 2011

Я пытаюсь изучить некоторые тонкости P2P / децентрализованных сетей. У меня вопрос следующий. Скажем, у меня есть две машины с именем comp1 и comp2. Теперь comp1 настроен в моей домашней сети за маршрутизатором, а comp2 находится в моем офисе также за маршрутизатором. Могу ли я отправлять UDP-пакеты назад и вперед через Интернет, если предположить, что порты перенаправлены правильно? Чтобы лучше понять то, что я исследую, я пытаюсь выяснить, как новый узел обнаружит существующие узлы без использования центрального сервера.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 31 марта 2011

Предполагая, что, как вы сказали, порты переадресованы правильно, вы можете отправлять пакеты UDP двум клиентам за маршрутизаторами.

Хороший способ обнаружения клиентов в локальной интрасети может использовать многоадресную рассылку, однако этого не происходит.широко распространенная поддержка интернет-провайдеров (по крайней мере, здесь, в Великобритании), поэтому нельзя полагаться.Многоадресная рассылка используется многими платформами обнаружения устройств, такими как mDNS (используется в Bonjour от Apple)

http://en.wikipedia.org/wiki/Multicast

(в основном это работает, когда клиенты подписываются на группы, а затем отправляют сообщения в эту группу)

Я думаю, что лучший способ обнаружения новых клиентов через Интернет - это иметь один сервер, с которым новые клиенты связываются, чтобы сообщить ему о своем существовании, тогда централизованный сервер расскажет обо всех других клиентах о вас.Это используется, например, в P2P-играх, таких как Modern Warfare 2, и это то, что «трекеры» делают в протоколе BitTorrent.

Это не совсем децентрализовано, но, вероятно, наиболее просто для реализации и наиболеенадежно.

1 голос
/ 31 марта 2011

Чтобы добавить к ответу Dotmister, если порты не переадресованы правильно (например, маршрутизатор не настроен статически для переадресации портов), вам нужно рассмотреть что-то вроде UDP дырокол .В любом случае, чтобы обнаружить новый узел без какого-либо центрального сервера, вам придется полагаться на какой-то тип Multicast.

...