Osservare lo sviluppo della rete di file sharing è interessante, ma partecipare è ancora più affascinante.
Ad oggi, installando e avviando un moderno hub, il neoeletto amministratore ha accesso praticamente a tutte le competenze e all'esperienza accumulata dai suoi predecessori in questo campo. Ha a disposizione un sistema pronto per l'espansione e la personalizzazione, anche grazie a numerosi script.
C hub in modo diverso. La struttura di questo protocollo prevede l'espandibilità. Vuoi una nuova funzione? Bene – proponila, promuovila, realizzala, implementala, usala.
Di conseguenza, "fuori dalla scatola" è possibile ottenere un hub pronto all'uso, ma semplicemente avviarlo e dimenticarsene non è raccomandabile. L'espandibilità in un contesto storico implica anche la presenza di un numero variabile di funzioni diverse sia per il software client che per quello server a seconda della versione. E ciò che funziona senza problemi per un utente può rivelarsi incompatibile con il client di un altro, e questo va tenuto in considerazione.
È successo anche con IPv6. Il vecchio NMDC in realtà non lo supporta, mentre l'ADC è già pronto ad accoglierlo. Tuttavia, non è tutto così semplice.
Un po' di teoria
L'utente "attivo" può accettare connessioni in entrata. In effetti, la richiesta di connessione inviata da lui è in realtà un invito.
L'utente "passivo", in generale, può utilizzare solo richieste in uscita. Attraverso l'hub, può richiede inviare un invito all'utente attivo – e la connessione si realizza.

E sì, questo meccanismo non dipende dalla versione del protocollo IP utilizzato.
Il cigno, il granchio e la luccio
Parliamo del software client.
Il supporto per IPv6 in è di natura sperimentale. Non ci sono impostazioni specifiche per esso, ed è ancora più sorprendente per me vedere diverse modalità operative per le diverse versioni di IP, con la modalità passiva dedicata proprio alla sesta, ma questo non è certo.
Non sono riuscito a ottenere una modalità attiva con la configurazione manuale nemmeno utilizzando esplicitamente un dominio con record AAAA come IP WAN, ma in modalità automatica con UPnP tutto ha funzionato correttamente.
ha anche il supporto per le connessioni IPv6, implementato separatamente da IPv4. Inoltre, questo client modifica i tag degli utenti in modo da visualizzare le modalità operative per entrambi i protocolli IP contemporaneamente. Gli hub attualmente non sono in grado di farlo (fino ad ora), ed è un peccato.
Devo subito chiarire: AirDC++ fa così per se stesso. In futuro, per comodità, userò combinazioni come AP o AA come indicazione dei modi operativi attivi o passivi per IPv4 e IPv6 rispettivamente, e non la loro visualizzazione nel tag del client reale su un hub reale. È importante.
Nel nostro esperimento utilizzeremo FlylinkDC++ come client, completamente ignorante riguardo a IPv6. Va anche osservato che il supporto per esso al momento della stesura di questo articolo non era implementato da nessuna parte.
Inizio
Per prima cosa esamineremo le connessioni comprovabilmente impossibili tra utenti di diverse versioni del protocollo IP. Per il test utilizzeremo con record A e AAAA per il nome di dominio, che funge da indirizzo.

Si noti che qui, nel tentativo (reale) di contattare un utente con un indirizzo IP di sesta versione, viene visualizzato un errore.
Hub: [Outgoing][IPv4:412] DRCM AACX AACU ADCS/0.10 337151563
Hub: [Incoming][IPv4:412] DCTM AACU AACX ADCS/0.10 1988 337151563
Hub: [Outgoing][IPv4:412] DSTA AACX AACU 240 IPsunknownTradotto in linguaggio comune, suona come
P4: – Posso attaccarmi a te?
A6: – Attaccati!
P4: – La vita è un dolore 0_0
Un breve glossario, nel caso ci fosse bisogno, .
E se è l'opposto, e l'inizializzazione della connessione proviene da A4, allora non viene visualizzato alcun errore e la connessione semplicemente "si blocca".
Hub: [Outgoing][IPv4:412] DCTM AACX AACU ADCS/0.10 1993 3871342713Essere, non sembrare
Ciò che è importante è il modo di connessione visualizzato nell'hub.
I client senza supporto per IPv6 dovranno vedere gli utenti connessi attraverso di esso come chiaramente passivi semplicemente perché per loro l'hub non riempie I4 o I6 il campo rispettivamente.

FlylinkDC++ vs. IPv6
In realtà, la situazione è più semplice e complessa allo stesso tempo.

AirDC++ vs. IPv6
Più semplice, perché IPv6 ha priorità su IPv4, ed è chiaro. È proprio attraverso di esso (anche se con l'opzione corrispondente è disponibile la sovrascrittura) che verrà stabilita la connessione con l'hub, e il suo client attivo offrirà la connessione al passivo.
Più complicato, perché se sull'hub ci sono utenti con supporto per IPv6, ma sono connessi rigorosamente tramite indirizzo IPv4, allora...

… quindi è possibile connettersi a loro (a caso) senza avere affatto IPv4.
Si prega di notare che il client remoto si è identificato come attivo, ma viene trattato come passivo. Perché?
Dai in altalena
Ora proviamo a connettere tra loro client con varie, ma comuni configurazioni IPv4 per il protocollo IP.

Sì, è un peccato che gli utenti passivi debbano fumare in disparte. Ma non c'è modo di aiutarli, poiché il loro indirizzo IP visibile non ha particolare importanza – è proprio questa la loro natura.

Ehi! Il client attivo invia ?.. Логично было бы ожидать «зависшего» соединения, но нет, оно получается на условиях A4.
Perché? Contattiamo lo sviluppatore e riceviamo la risposta:
non è buono se l'altro utente non supporta IPv6
E non si può discutere! Ma questo richiede già una logica interna, indipendente dal hub (vedere il codice e ). E per i passivi non c'è modo di aiutarli, perché
Modalità attiva =
Le tentativi di connessione tra client con comuni configurazioni IPv6 per il protocollo IP si presentano nel seguente modo. Ricordo che ottenere PA per DC++ non sono riuscito.

E di nuovo una sorpresa. Risulta che la modalità passiva per IPv6, mostrata da DC++, è o un falso intenzionato, o un bug.
Cosa succede dopo?
Attualmente esistono esattamente due modi per risolvere tutti i possibili problemi di connessione degli utenti in diverse modalità e con diverse configurazioni del protocollo IP.
Il primo è disabilitare completamente IPv6 o, al contrario, creare un hub per lavorare solo attraverso di esso.
Il secondo è questo , che è appena entrato nella fase di test.
E, sebbene sia pigro a configurare la modalità attiva per lavorare in DC, ricordate:
A chi ha, sarà dato, e a chi non ha, sarà tolto anche ciò che pensa di avere. Lc. 8:18
Fonte: habr.com
