Pergunta

Existem quaisquer métodos conhecidos de encontrar pares sem o uso de um servidor central dedicado?

ou seja:. Se eu tenho colegas que estão desconectar e reconectar à internet, mas recebendo um novo endereço IP de cada vez, e eu quero ligar para eles sem a criação de um servidor dedicado para registrar com

Eu estava pensando em usar pares de endereços de e-mail para enviar um manifesto de pares conectados periodicamente, com algum tipo de código de tempo, negando a necessidade de um servidor dedicado. Este seria um fallback se nenhum dos pares poderiam ser conectados para depois de tentar todos os endereços de pares previamente conhecidos. Mas os modelos de encontrar pares existente seria preferível.

Foi útil?

Solução

Não há nenhuma maneira em torno de ter de saber pelo menos um ponto inicial para descobrir mais. Totalmente protocolos P2P, como o Gnutella ou Gnutella2, ou o mais simples Overnet (que ficou famosa por Storm Worm), baseiam-se em cada cliente ter uma lista de start-up de alguns pares. Estes podem vir fora de um rastreador automatizado baseado na web, por exemplo. O cliente vai descobrir toda a rede ou partes dele, pedindo outros pares para mais endereços, por exemplo, quando a delegação de uma pesquisa de arquivo.

Se você realmente não pode ter qualquer tipo de recurso centralizado, o melhor que você pode fazer é encontrar o primeiro par através de mensagens transmitidas e, finalmente, a digitalização endereço IP. A primeira abordagem é bem intencionado, mas em, pelo menos, 98% dos casos não produzirá quaisquer resultados. A abordagem mais tarde, é claro, está abusando da internet, bem como ilegal na maioria dos países.

Eu realmente iria repensar ter algum tipo de um tracker central. Pode ser algo tão simples como um script PHP em um servidor Web (a rede Gnutella, hoje, é sustentada por dez e vinte tais scripts, organizada por pessoas que nem sequer se conhecem). E esta certeza é mais leve do que o e-mail (que, devido a filtros de spam, no mínimo, não iria funcionar de qualquer maneira).

Outras dicas

No caso limitado de pares dentro de uma intranet, é possível enviar uma mensagem de difusão UDP para uma porta conhecido pedindo pares ao relatório de volta.

Aproveite qualquer fórum existente onde os dados podem postado. Pense canal IRC secreto, a incorporação de dados em fotos e postagem para sites de compartilhamento de fotos 4chan ?, qualquer site que permita a sua aplicação a dados de login e postar sem captia logins etc.

http://chatzilla.hacksrus.com/faq/#password

Outra estratégia poderia ser a de mensagens incorporadas em operações em moeda digitais. Escolha uma moeda barata que é provável que pendurar em torno de ... DOGE ou LUA moeda talvez. Construir funcionalidade de carteira em seu aplicativo. de tal forma que você pode enviar micro transações e para trás entre os endereços que os controles de aplicativos. Ainda haveria uma taxa mineiros, mas isso é apenas frações de centavos. Mesmo que mais tarde proibir a adição de metadados para transações, você poderia fazer um equivalente transação para o seu endereço de IP na lua e endereços de uso vaidade em MOON moeda para o seu aplicativo. de tal forma que quando um novo nó vem on-line sabe o que procurar a blockchain para - 2daMOON% bootStr @ PM3. SEND -. 104,003021133 MOON IP = 104.3.21.133 não uma proposta cara

O cliente BitcoinQT usa uma variedade de métodos para encontrar nós, alguns deles podem ser úteis para você.

Satoshi do nó cliente Descoberta

IRC não é mais usado, mas pode ser o mais fácil de implementar:

A partir da versão 0.6.x do cliente Bitcoin não usa mais IRC bootstrapping por padrão, e a partir da versão 0.8.2 suporte para bootstrapping IRC foi removido completamente. Esta documentação abaixo é preciso para a maioria das versões anteriores.

Além de aprender e compartilhar seu próprio endereço, o nó aprendeu sobre outros endereços de nós através de um canal de IRC. Consulte irc.cpp .

Depois de aprender o seu próprio endereço, um nó codificado seu próprio endereço em uma string para ser usado como um apelido. Em seguida, juntou-se aleatoriamente um canal de IRC chamado entre # bitcoin00 e # bitcoin99. Em seguida, ele emitiu um comando OMS. O fio ler as linhas que apareceram no canal e decodificados os endereços IP de outros nós no canal. Ele fez isso em um loop, para sempre, até que o nó foi desligado.

Quando o cliente descobriu um endereço de IRC, é definir o timestamp no endereço para o tempo atual, mas usou uma "pena" de 51 minutos, o que significa que ele parecia que estava realmente visto quase uma hora mais cedo.

maneiras Três, em cima da minha cabeça, apesar de você sempre vai precisar de algum servidor central para iniciar a conexão a menos que você foi com a opção 3.

  • servidor central que mantém a lista conhecida de pares, com keep-alive.
  • Um ou mais servidores centrais que mantêm alguns pares de recursos comuns pode usar para descobrir o outro, mas uma vez conectado não precisa mais o servidor central, enquanto os restos de pares ligados (algo como BitTorrent); cadeia lata conexões olhou bem.
  • A exploração portuária / IP ( fortemente não recomendado ).

No seu exemplo, você ainda tem algum tipo de servidor central, onde os pares seria registrado; o protocolo é a única diferença.

velha questão, mas eu estive pensando sobre esse problema sozinho assim será ad meus 2 centavos. Em suma, um servidor central não é necessário se um nó está ciente de pelo menos um ponto válido. Novos nós deve ser adicionado à rede por qualquer membro atual (por exemplo, convidado, ou desova nó outro nó, dependendo do aplicativo).

Assumindo que:

  • agentes de manter o controle de seus pares; o tamanho deste endereço livro e como são geridos dependerá da natureza do sistema; por exemplo. quanto tempo pares permanecer conectado, se os pares usar endereços estáveis ??

  • informações agentes share par com outros pares

  • , pelo menos, alguns agentes permanecem disponíveis para períodos relativamente longos de tempo em relação a conecta nó de frequência para a rede para atualizar a sua agenda de endereços (ou nós têm endereços estáveis)

  • além de endereços de pares com informação de disponibilidade também é rastreado (muitas opções aqui, dependendo do sistema exemplos incluem:. Se por pares tem um endereço estável, quando visto pela última vez, alguma disponibilidade métrica, informações de conteúdo / tipo de serviço, endereço válido-até o tempo se conhecido)

  • novos agentes são inicializados com pelo menos um ponto válido (não tem que ser um nó central, pode ser qualquer nó válido)

  • mecanismos de confiança será necessário se pares maliciosos são uma possibilidade

Quando um peer vem on-line, ele consulta os pares em que tabela de pares para descobrir quais estão ativos e, talvez, remove endereços dinâmicos expirados. Nós troca de informações entre pares e podem se tornar eles próprios ligados. Esta descoberta de pares / câmbio pode continuar um certo número de saltos ou via passeio aleatório até que lista hierárquica se de tamanho e / ou qualidade suficiente.

Alguns mais detalhes:

  • Nós conectar e compartilhar informações entre pares com frequência relacionado à forma como muitas vezes nó endereços de mudança, de modo livro de endereços não se tornar obsoleto e nó se desligar porque nada disso é ex-colegas estão disponíveis em seus últimos endereços conhecidos

  • Nós ser necessário limitar o número de pares que aceitar, a tendência evitar de centralização em torno das maioria dos nós estáveis.

  • Nós deve ser seletivo sobre os pares mantêm-se; ou seja, aqueles em que eles são mais propensos a trocar dados (por exemplo, peso baseada no histórico)

  • ligações nó pode ser assimétrica ou simétrica, dependendo da aplicação

Para colocá-lo simplesmente não, não há nenhuma maneira de fazer isso sem um sever central.

Se você quiser fazer isso, você simplesmente precisa de um ou mais centrais servidores, seja por dns dinâmico ou não. Os clientes precisam de um método para descobrir onde devem ligar, ea única maneira verdadeiramente sensata de fazer isso é com o seu próprio servidor, no cenário mais simples, só precisa enviar um endereço IP em resposta.

severs virtuais pode ser adquirido por cerca de US $ 15 / mês, o que IMO é consideravelmente mais barato do que tentar usar ou largura de banda abuso de outra pessoa.


[Edit].

Para colocá-lo simplesmente, não há outra maneira, como se segue.

Após a reflexão eu acho que eu faria é para designar um conjunto de pares como controladores de cluster e usar um serviço de DNS dinâmico para permitir que outros colegas para descobrir os controladores de cluster.

Escolha um provedor de DNS dinâmico vou chamá-lo myc.ath.cx (I Use http: // www. dyndns.com/ ).

Cada ponto tem que ser capaz de se tornar um controlador de cluster. Um controlador de aglomerado irá conter uma lista de todos os outros pares ligados.

Quando um par é iniciado ele procura myc.ath.cx e tenta se conectar. Se a conexão não pode ser feita dentro de um período de, digamos, 30 segundos, ele assume o registro da entrada de DNS.

Qualquer ponto que desejam descobrir outros pares pode simplesmente consulta myc.ath.cx e uma lista será fornecido

Todos os pares é responsável pela transferência periodicamente a lista de pares, em caso de necessidade de controlador de cluster.

O controlador de cluster irá consultar periodicamente a entrada DNS - se mudou do seu endereço IP, em seguida, ele sabe que ele não é mais o controlador de cluster - por isso vai entrar em contato com o controlador de cluster que atualmente tem a entrada DNS e fornecê-lo da lista de máquinas conhecidas.

O controlador de cluster periodicamente anfitriões contacto na lista para garantir que eles ainda são válidos.

Seu método de envio de e-mail usa um servidor dedicado, embora; servidor de e-mail do par, para ser mais preciso.

A grosso modo, eu não acho que é possível sem o uso de algum tipo de armazenamento ou servidor dedicado (que a abordagem de e-mail faz, ainda que obliquamente) a menos que você é capaz de caracterizar a conectividade com a internet que seus colegas estão usando.

Basicamente, se você tem um conjunto de um número X de pares, que conexão para Y quantidade de tempo, e eles são, em seguida, fora da grade de quantidade Z de tempo ... essencialmente, você pode construir uma equação de probabilidade sobre como provável é que o conjunto de pares que a última vez que contactou ainda está disponível; onde probabilidade que se aproxima de 1 (para um dado conjunto de X, Y e Z acima), pode provavelmente sustentar uma rede ponto-a-ponto sem o uso de armazenamento.

Possivelmente mais no espírito; em vez de ter um "servidor central dedicado", use serviço gratuito on-line simples para especificar uma lista de pares. Criou um grupo de yahoo, ou algo parecido; os clientes podem procurar automaticamente-lo e obter um endereço de ponto a partir do qual a consulta de um conjunto de pares; o cliente pode ser codificado com a autenticação para enviar mensagens para o grupo, e pode publicar periodicamente seu endereço IP para que outros possam solicitar o conjunto de pares ativos conhecidos.

Se você quiser ficar realmente complicado, você pode começar a usar métodos basicamente steganographic para ocultar informação da localização de pares. Ou seja, obter uma pesquisa no Google por "blah"; encontrar o primeiro site listado nos resultados que tem um (sem CAPTCHA) quadro de mensagens sem proteção; encontrar o terceiro posto (ou qualquer outro) que começa com "Indubitavelmente" (ou qualquer outro), e encontrar o cabeçalho da primeira mensagem, e lá é o endereço IP de um par. Se isso não funcionar, ir para baixo a lista de termos de pesquisa para o próximo.

Mas isso Sneaky. : -)

Você poderia voltar a usar um existente servidor dedicado para o efeito?

Estou a pensar, em particular, de registrar cada um dos pares com um DNS dinâmico, mas se você estivesse disposto a conseguir um mais feio pouco, a partilha de acesso a uma conta conhecida Hotmail ou Google Doc ou similar.

Você pode usar um diretório central ou algum tipo de protocolo de transmissão para a descoberta de serviços. Supondo que você poderia levá-los indexado pelo Google, você poderia conceber um sistema em que cada peer mantém um site com alguns, palavras raras únicas contidas em uma página específica. Você poderia, então, usar os resultados de pesquisa do Google com base nessas palavras para identificar potenciais pares. Este seria essencialmente uma transmissão internet (barulhento e lento).

Se a estrutura da página era um padrão bem conhecido ou informações de conexão identificável contida por esse ponto, seria fácil distingui-los nos resultados da pesquisa. Usando um tal de folhas diretório público que você se abrem para nós comprometidos na rede que é formado, mas isso é muito verdadeiro de qualquer rede P2P haja algum mecanismo de segurança.

Obtendo os sites rastreado e altamente classificado pelo Google (ou algum outro mecanismo de busca) para o seu conjunto arcano particular de termos de pesquisa seria o truque. Eu posso pensar de algumas maneiras, mas eles não são os que eu usaria. Para um serviço legítimo, eu prefiro gastar o dinheiro ou encontrar um site gratuito que poderia funcionar como um diretório.

E sobre outro sistema P2P construído especificamente para rastrear pares on-line de outros sistemas P2P?

Em seguida, reduzir o problema de encontrar pares para qualquer novo sistema P2P aos pares simplesmente encontrar para o sistema P2P 'main', que vai lhe dar os endereços dos colegas on-line para o sistema que você está interessado em usar ...

Este é um uso típico de um algoritmo Distributed Hash Table. Eu sugiro olhando para algo como pastelaria. Ele usa uma rede de sobreposição (Aplicação da camada de rede) em cima das outras camadas.

Cada nó tem um GUID que é usado para encaminhar pedidos em toda a rede de pares.

Se você estiver loooking para um servidor central já estabelecida, em seguida, ver a entrada metaservidor na página aqui:
http://martindevans.appspot.com/
Pode registar pares sobre lá e, em seguida, outros pares pode encontrá-los. Obviamente este é um servidor central, mas não requer manutenção de sua parte.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top