Как создать одноранговое соединение без переадресации портов или централизованного сервера?

Я помню, как читал статью о предлагаемом способе сделать это. Если я правильно помню, исследователи успешно создали соединение с клиентом в другой сети без переадресации портов, отправив HTTP-пакеты друг другу (Алиса притворяется, что Боб является веб-сервером HTTP, а Боб притворяется, что Алиса является веб-сервером).

Я не уверен, что это имеет смысл, но кто-нибудь знает, где я могу найти статью, или есть ли у кого-нибудь другие идеи о том, как подключить двух клиентов без центрального сервера или переадресации портов?

Возможно ли это?

Изменить: я бы знал IP-адреса обоих компьютеров и порт, который программа прослушивает.

Ответ 1

Это возможно. Я вижу по крайней мере 2 части на ваш вопрос. (Это не будет HTTP-пакет. Это намного сложнее, чем это.)

Сначала, я полагаю, вы можете говорить о концепции, называемой децентрализованной сетью P2P. Основной идеей идеи децентрализованной одноранговой сети является тот факт, что узлы, объединенные в такой сети, не потребуют центрального сервера или группы серверов.

Как вы уже могли знать, для большинства общих централизованных одноранговых сетей требуется такая централизованная система для обмена и поддержки межсоединений между узлами. Базовая концепция такова, поскольку новый node будет подключаться к одному из основных серверов для получения информации о других узлах в сети, чтобы поддерживать ее возможность подключения и доступность. Центральная система поддерживается через серверы, постоянно синхронизирующие состояние сети, соответствующую информацию и центральную координацию между собой.

Децентрализованная сеть, с другой стороны, не имеет никакой структуры или предопределенного ядра. Эта одноранговая модель также называется неструктурированными сетями P2P. Любой новый node копирует или наследует исходные ссылки из "родительского" node и формирует его собственный список сверхурочных. Существует несколько категорий децентрализации таких неструктурированных сетей.

Интересно, что отсутствие центральной системы управления делает ее решением для современных вредоносных бот-сетей. Отличным примером может быть Storm botnet, в котором используется так называемый пассивный P2P-монитор (PPM). PPM смог найти зараженные хосты и создать список сверстников независимо от того, был ли зараженный хост за брандмауэром или NAT. Статья в Википедии Storm botnet - интересное чтение. Существует также большое совместное исследование, называемое На пути к завершению node Перечисление в одноранговой сети Bot, которое обеспечивает отличный концептуальный анализ и методы, используемые сетью ботнета Storm.

Во-вторых,, вы можете говорить о перфорации отверстий UDP. Это метод или алгоритм, используемый для поддержания соединения между двумя хостами за NAT-маршрутизатором/шлюзом с использованием третьего узла комментариев с помощью третьего сервера рандеву.

Существует замечательная статья Брайана Форда, Пиды Крисуреш и Дэна Кегеля, которые называются Одноранговая связь между сетевыми адресными переводчиками.