2013-06-04 11 views
14

Ricordo di aver letto un articolo su un modo proposto per farlo. Se ricordo bene, i ricercatori hanno creato una connessione ad un client su un'altra rete senza il port forwarding inviando pacchetti HTTP tra loro (Alice finge che Bob sia un server Web HTTP mentre Bob finge che Alice sia un server web).Come si crea una connessione peer-to-peer senza port forwarding o un server centrato?

Non sono sicuro che abbia senso, ma qualcuno sa dove posso trovare l'articolo o qualcuno ha altre idee su come connettere due client senza un server centrale o un port forwarding?

È possibile?

Modifica: vorrei conoscere gli IP di entrambi i computer e il programma su cui è in ascolto il programma.

+0

P2P può essere ottenuto con http://en.wikipedia.org/wiki/UDP_hole_punching, ma senza un server centralizzato, non è possibile trovare gli IP degli altri membri. – Deepsy

+0

@Deepsy anche se conosci l'IP e la porta di entrambi i lati? – mwaboff

risposta

21

È possibile. Vedo almeno 2 parti alla tua domanda. (Non sarà un pacchetto HTTP. È molto più complesso di quello.)

Prima di tutto, credo che potresti parlare di un concetto chiamato rete P2P decentralizzata. L'idea principale alla base della rete peer-to-peer decentralizzata è il fatto che i nodi congiunti in una rete di questo tipo non richiederanno un server centrale o un gruppo di server.

Come forse già sapete, le reti peer-to-peer centralizzate più comuni richiedono un tale sistema centralizzato per lo scambio e la manutenzione dell'interconnettività tra i nodi. Il concetto di base è tale, poiché il nuovo nodo si connetterà a uno dei server principali per recuperare informazioni su altri nodi sulla rete per mantenere la sua connettività e disponibilità. Il sistema centrale viene gestito tramite server che sincronizzano costantemente lo stato della rete, le informazioni pertinenti e il coordinamento centrale tra loro.

La rete decentralizzata, d'altra parte, non ha alcuna struttura o nucleo prestabilito. Questo modello peer-to-peer è anche chiamato reti P2P non strutturate. Qualsiasi nuovo nodo copierà o erediterà i collegamenti originali dal nodo "padre" e formerà il proprio elenco di straordinari. Esistono diverse categorie di decentralizzazione di tali reti non strutturate.

È interessante notare che l'assenza di un sistema di comando e controllo centrale rende la soluzione ideale per le moderne botnet di malware. Un ottimo esempio potrebbe essere la botnet Storm, che utilizzava il cosiddetto Passive P2P Monitor (PPM). PPM è stato in grado di localizzare gli host infetti e creare elenchi di peer indipendentemente dal fatto che l'host infetto fosse o meno protetto da firewall o NAT. L'articolo di Wikipedia Storm botnet è una lettura interessante. C'è anche un grande studio collaborativo chiamato Towards Complete Node Enumeration in a Peer-to-Peer Botnet, che fornisce un'eccellente analisi concettuale e le tecniche utilizzate dalla rete botnet Storm.

In secondo luogo,, si potrebbe parlare di perforazione UDP. Questa è una tecnica o un algoritmo utilizzato per mantenere la connettività tra 2 host dietro il router/gateway NATed usando il terzo host di commenti per mezzo di un terzo server rendezvous.

C'è un grande articolo di Bryan Ford, Pyda Srisuresh e Dan Kegel chiamato Peer-to-Peer Communication Across Network Address Translators.

+0

Grazie per le informazioni ben scritte e di provenienza.Cercando di approfondire la punzonatura dei fori UDP, ho capito che questo era quello che stavo cercando (per qualche ragione all'inizio avevo pensato che fosse necessario un server centralizzato, ma ora comprendo se ho già l'IP e le informazioni sulla porta posso saltare quella parte). – mwaboff

+1

Prego. Sono contento di poterti aiutare. – PSS

+1

SO avuto alcune menti intelligenti. – frostymarvelous

Problemi correlati