Нужна помощь для пробивки отверстий udp - PullRequest
0 голосов
/ 23 февраля 2011

Эй, я работаю над проектом по созданию сети p2p в java. Я построил н / ж, используя UDP для локальной сети, и я работаю над отправка UDP датаграммы через Интернет. Я столкнулся с этой концепцией, называемой UDP дырокол, но не могу найти ни одной соответствующей темы или библиотек. Может кто-нибудь помочь, пожалуйста?

Ответы [ 5 ]

1 голос
/ 01 августа 2011

Вот некоторые настоятельно рекомендуемые технические материалы для пробивки отверстий UDP (или TCP):

http://www.usenix.org/events/usenix05/tech/general/full_papers/ford/ford_html/

Или, конечно же, википедия:

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

По сути, поскольку большинство компьютеров находятся за так называемыми трансляторами сетевых адресов (NAT), вам нужно будет использовать общедоступный IP-адрес компьютера и общедоступный порт так, как их видит кто-то в Интернете. Кроме того, вам понадобится частный IP-адрес и частный порт (или, поскольку само приложение видит свои сокеты ... это на тот случай, если вы находитесь за тем же NAT, что и другое приложение / компьютер / узел, к которому вы пытаетесь подключиться). Затем ОБА оба узла пытаются установить соединение, пробуя открытый и закрытый адреса. Когда эти два приложения устанавливают контакт, они успешно прошли NAT - они успешно пробили дырокол.

Популярный способ сделать это - подключить обоих клиентов к серверу, который помогает координировать работу двух клиентов. Он координирует отправку общедоступных и частных IP-адресов и портов другому клиенту, который они затем используют для выполнения «дырокола».

Также, очевидно, используется протокол UDP, потому что он более (эмпирически) успешен, чем TCP. Примечание: я пытался найти статистику по этому вопросу, но безуспешно.

1 голос
/ 23 февраля 2011

Я думаю, это то, что часто называют NAT punch-through .Может быть, вам больше повезет в поиске с этим названием.

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

Проверьте этот другой вопрос на Обход NAT-to-NAT . У Эрика есть хорошее описание дырокола UDP.

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

Возможно, вы ищете uPnP средство обхода NAT.Многие потребительские маршрутизаторы поддерживают программное открытие всего брандмауэра и переадресацию портов для любого приложения, которое запрашивает.Или червь.В любом случае.:)

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

Вы не можете выполнять широковещательную / многоадресную передачу по протоколу UDP через Интернет.Однако вы можете передать TCP через Интернет.

Я предлагаю вам попробовать, чтобы шлюз в вашей сети прослушивал UDP-пакеты по вашему выбору, передавал данные по TCP другому шлюзу в другой сети, который может преобразовать эту информацию обратно в UDP.

...