Две компьютеры, которые ищут друг друга через Интернет
Учитывая, что два компьютера, подключенные к Интернету, которые ничего не знают друг о друге перед вами, возможно ли, чтобы один компьютер мог транслировать сообщение, чтобы второй компьютер мог его получить и ответить?
Я знаю, что UDP широковещательные exsits, но я считаю, что они обычно фильтруются провайдером до того, как он достигнет истинного Интернета. Это правда?
Ответы
Ответ 1
Нынешний лучший способ достижения многоузловой сети без централизованной координации - использование Распределенные таблицы хэш. Эта ссылка немного объясняет и ссылается на различные реализации, которые вы можете использовать.
Тем не менее, вам все равно нужна каждая машина для координации, по крайней мере, с некоторыми сверстниками. Просто вам не нужно координировать работу с центральным сервером. Решение, использующее центральный сервер, который знает обе (все) участвующие машины, также будет работать, но накладывает дополнительные ограничения на анонимность и масштабируемость, просто помните, что случилось с Napster.
Ответ 2
Вам нужна промежуточная третья сторона, которую они оба знают, которая может распространять сообщения, направленные на нее, в режиме вещания.
Ответ 3
Решение этой проблемы (где ни один из ваших коллег не знает конечный адрес другого), может полагаться на протоколы IM.
В частности, протокол XMPP является расширяемым, открытым и используемым многими поставщиками, такими как Google Talk. Библиотеки существуют для большинства языков, и у нее есть плюс возможность работать (медленно и через сторонний сервер), даже если оба узла находятся за NAT-box.
Если связь должна использовать другой канал, вы можете использовать XMPP для обмена IP-адресом, а затем продолжить со стандартным маршрутом сокета (но если вы зашифруете свои сообщения, не должно быть никаких проблем даже при прохождении через сторонний сервер), чтобы быть правдой все пакеты проходят через ненадежные сторонние маршрутизаторы, поэтому вы должны шифровать в любом случае, если у вас есть конфиденциальные данные..).
Надеюсь, что это поможет.
Ответ 4
Нет, вы не можете транслировать это через Интернет. Вам нужно знать, к какому адресу вы хотите перейти.
Ответ 5
Возможное решение для вас - использовать службу динамический DNS.
Ваше приложение должно знать заранее, какое имя хоста будет использовать другой хост, но эта служба по крайней мере обойдется в том, что вы точно не знаете, какой IP-адрес находится на другом компьютере.
Обратите внимание, что это не решит потенциальную проблему межсетевых экранов между двумя хостами, блокирующими ваши пакеты. Единственный практический способ заключается в том, чтобы оба узла открывали исходящее соединение с центральным узлом, который затем может передавать данные между ними.
Ответ 6
Посмотрите на алгоритм аккорда или теста. Это оверлейная сеть (на основе DHT), в которой задействован механизм обнаружения. Это алгоритм маршрутизации P2P (Peer 2 Peer).
Ответ 7
UDP является тупиком - его просто протокол, в котором порядок приема пакетов менее важен, и возникают проблемы с маршрутизацией по WANS. Вы сказали, что хотите подключить два компьютера к "Интернету", предположительно, с перемещением конечных точек и т.д. Единственный способ - использовать центральный сервер в качестве каталога register/. Если каждая конечная точка также является веб-службой или что-то еще и периодически регистрирует свой текущий IP-адрес и имя, то другая конечная точка может искать IP-адрес другого, используя эту услугу. (может разместить собственный DNS-сервер и указать конечную точку для регистрации в этом DNS?)
Одна из проблем заключается в том, что даже если у вас есть IP-адрес, что один или несколько узлов находятся за брандмауэром или NAT-маршрутизатором? Вам нужно будет разместить сервер для прокси-трафика. Лучший пример - SKYPE - посмотрите, как он работает, он документирован, очень интересен.
Упрощенный ответ может заключаться в том, чтобы перепрыгнуть назад на существующую службу, такую как messanger, skype, bit torrent и т.д.
Саймон
Ответ 8
Если компьютеры работают под управлением Windows, я бы посмотрел на PNRP.
Ответ 9
Многоадресная рассылка также является возможным решением. Это, безусловно, возможно в корпоративной сети