Osservare lo sviluppo della rete di file sharing è interessante, ma parteciparvi è ancora più affascinante.
Oggi, impostando e avviando un moderno hub, un nuovo amministratore ha accesso praticamente a tutte le pratiche consolidate e all'esperienza accumulata dai suoi predecessori in questo campo. Dispone di un sistema pronto per l'espansione e la personalizzazione, anche attraverso numerosi script.
C hub in modo diverso. La struttura di questo protocollo prevede l'espandibilità. Vuoi una nuova funzionalità? Bene, proponila, promuovila, implementala, utilizzala.
Come conseguenza, "out of the box" è possibile certamente ottenere un hub pronto, ma semplicemente avviarlo e dimenticarsene non sarebbe saggio. L'espandibilità, in un contesto storico, presuppone anche la presenza di un numero diverso di funzionalità software client e server a seconda della versione. E ciò che funziona senza problemi per un utente potrebbe risultare incompatibile con il client di un altro, e questo deve essere tenuto in considerazione.
È successo anche con IPv6. Il vecchio NMDC non lo supporta in linea di principio, mentre l'ADC è già pronto per esso. Tuttavia, non è tutto così semplice.
Pochi concetti teorici
Un utente «attivo» può accettare connessioni in ingresso. In realtà, una richiesta di connessione da parte sua è un invito.
Un utente «passivo» può generalmente utilizzare solo richieste in uscita. Tramite il hub, egli richiede a un utente attivo di inviare un invito, e la connessione viene stabilita.

E sì, questo meccanismo non dipende dalla versione del protocollo IP utilizzato.
Il cigno, il granchio e la trottola
Parliamo del software client.
Il supporto per IPv6 in è di natura sperimentale. Non ci sono impostazioni specifiche per esso, ed è sorprendente vedere che ci sono diversi modi di funzionamento per le diverse versioni di IP, con il passivo che è per il sesto, anche se questo non è preciso.
Non sono riuscito a ottenere la modalità attiva con la configurazione manuale, nemmeno utilizzando esplicitamente un nome di dominio con registrazione AAAA come WAN IP, mentre in modalità automatica con UPnP tutto ha funzionato come dovrebbe.
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, per ora, non possono farlo, ed è un peccato.
Devo chiarire subito: AirDC++ fa questo solo per se stesso. In seguito, per comodità, utilizzerò combinazioni come AP o AA come indicazione per le modalità attive o passive di funzionamento per IPv4 e IPv6 rispettivamente, e non la loro visualizzazione nel tag del client reale su un hub reale. Questo è importante.
Nel nostro esperimento utilizzeremo FlylinkDC++ come client, del tutto sconosciuto a IPv6. Va anche notato che il supporto non era stato implementato da nessuna parte al momento della scrittura di questo articolo.
Inizio
Per prima cosa, esamineremo le connessioni manifestamente impossibili tra gli utenti di diverse versioni del protocollo IP. Per il test sarà utilizzato un con record A e AAAA per il nome di dominio, che funge da indirizzo.

Si prega di notare che, durante il tentativo (effettivo) di contattare un utente con un indirizzo IP di sesta versione, viene restituito un errore.
Hub: [Uscita][IPv4:412] DRCM AACX AACU ADCS/0.10 337151563
Hub: [Ingresso][IPv4:412] DCTM AACU AACX ADCS/0.10 1988 337151563
Hub: [Uscita][IPv4:412] DSTA AACX AACU 240 IPsunknownIn parole semplici, suona così
P4: – Posso attaccarmi a te?
A6: – Attaccati!
P4: – La vita fa male 0_0
Un breve glossario, nel caso .
Ma se invece è il contrario e la connessione è initiata A4, allora l'errore non viene restituito e la connessione rimane semplicemente "appesa".
Hub: [Uscita][IPv4:412] DCTM AACX AACU ADCS/0.10 1993 3871342713Essere, non apparire
Ciò che è importante è il modo di connessione visualizzato sull'hub.
I clienti senza supporto IPv6 vedranno gli utenti connessi attraverso di esso come esclusivamente passivi semplicemente perché l'hub non li visualizza I4 o I6 nel campo corrispondente.

FlylinkDC++ vs. IPv6
In effetti, la situazione è sia più semplice che più complicata.

AirDC++ vs. IPv6
È più semplice perché l'IPv6 ha priorità sull'IPv4, e questo è chiaro. Sarà attraverso di esso (anche se con un'opzione appropriata è disponibile la sovrascrittura) che verrà stabilita una connessione con l'hub, e il suo cliente attivo offrirà la connessione al passivo.
È più complesso perché se nel hub ci sono utenti con supporto IPv6, ma sono connessi esclusivamente tramite indirizzo IPv4, allora…

… è possibile stabilire una connessione con loro (a caso) senza avere IPv4.
Si noti che il client remoto si è identificato come attivo, ma viene trattato come passivo. Perché?
Casuale.
Adesso proviamo a connettere tra loro i client con diverse, ma comuni offerte di supporto per il protocollo IP su IPv4.

Sì, è un peccato che agli utenti passivi tocchi stare a guardare. Ma non c'è modo di aiutare, dato che il loro indirizzo IP visibile non conta – è per questo che sono passivi.

Ah! Il client attivo invia ?.. Логично было бы ожидать «зависшего» соединения, но нет, оно получается на условиях A4.
Perché succede questo? Ci rivolgiamo allo sviluppatore e otteniamo la risposta:
non è efficace se l'altro utente non supporta IPv6.
E non si può discutere! Ma ciò richiede una logica interna, indipendente dal hub (vedi codice) e ). I passivi, però, non possono essere aiutati, perché
Active mode =
I tentativi di connessione tra client con offerte comuni di supporto per il protocollo IP su IPv6 appariranno in questo modo. Ricordo che ottenere PA per DC++ non mi è riuscito.

E ancora una sorpresa. Sembra che la modalità passiva per IPv6, mostrata da DC++, sia o una finta intenzionale o un bug.
E ora?
Attualmente ci sono esattamente due modi per risolvere tutti i possibili problemi di connessione degli utenti in diverse modalità e con diversi set di supporto del protocollo IP.
Il primo è disabilitare completamente IPv6 o, al contrario, creare un hub che funzioni solo attraverso di esso.
Il secondo è questo , che è appena entrato nella fase di test.
E mentre siete riluttanti 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
