Este interesant să observi dezvoltarea rețelei de schimb de fișiere, dar este și mai interesant să participi la ea.
În ziua de astăzi, instalând și lansând un hub, noul administrator are acces practic la toate realizările și experiența acumulată în acest domeniu de precedentii săi. Acesta dispune de un sistem pregătit pentru extindere și personalizare, inclusiv prin intermediul numeroaselor scripturi.
Cu huburi în mod diferit. Structura acestui protocol presupune extensibilitate. Vrei o nouă funcție? Ei bine, propune-o, promoveaz-o, implementeaz-o, utilizeaz-o.
Ca urmare, "din cutie" se poate, desigur, obține un hub gata, dar a-l porni și a uita de el nu ar fi bine. Extensibilitatea în contextul istoric presupune, de asemenea, existența unui număr diferit de funcții ale software-ului client și server, în funcție de versiune. Și ceea ce funcționează fără probleme pentru un utilizator poate fi incompatibil cu clientul altuia, și acest lucru trebuie luat în considerare.
Așa s-a întâmplat și cu IPv6. Vechiul NMDC nu îl suportă de fapt, iar ADC este pregătit pentru el. Totuși, lucrurile nu sunt atât de simple.
Puțină teorie
"Utilizatorul activ" poate accepta conexiuni intră. De fapt, cererea de conexiune din partea lui este, în realitate, o invitație.
"Utilizatorul pasiv" poate utiliza, în general, doar cereri ieșite. Prin intermediul hubului, el solicită utilizatorului activ să trimită o invitație – și conexiunea se realizează.

Și da, acest mecanism nu depinde de versiunea protocolului IP utilizat.
Lebăda, racul și știuca
Să vorbim despre software-ul client.
Suportul IPv6 în are un caracter experimental. Nu există setări separate pentru acesta, iar cu atât mai surprinzător mi-a fost să văd diferite moduri de funcționare pentru diferite versiuni IP, iar modul pasiv este de fapt pentru versiunea șase, dar nu este exact.
Obținerea modului activ prin setare manuală nu a fost posibilă nici măcar atunci când am utilizat în mod explicit ca IP WAN un domeniu cu înregistrare AAAA, dar în modul automat cu utilizarea UPnP, totul a funcționat așa cum ar trebui.
de asemenea, are suport pentru conexiuni IPv6, care este implementat complet separat de IPv4. Mai mult, acest client modifică etichetele utilizatorilor astfel încât să afișeze modurile de operare pentru ambele protocoale IP simultan. Hub-urile nu pot face acest lucru (încă), ceea ce este păcat.
Trebuie să specific imediat: AirDC++ face acest lucru și pentru el însuși. În continuare, pentru comoditate, voi folosi combinații precum AP sau AA ca o indicație a modurilor active sau pasive de operare pentru IPv4 și IPv6, respectiv, și nu ca afișare în eticheta clientului real pe un hub real. Este important.
În experimentul nostru, vom folosi FlylinkDC++ ca client, care nu este deloc familiarizat cu IPv6. De asemenea, este important de menționat că suportul pentru acesta nu a fost implementat nicăieri la momentul scrierii acestui articol.
Început
În primul rând, vom examina conexiunile care sunt în mod evident imposibile între utilizatorii de versiuni diferite ale protocolului IP. Pentru test, va fi folosit cu înregistrări A și AAAA pentru numele de domeniu, care servește drept adresă.

Atenție, aici, în situația (reală) de încercare de a contacta un utilizator cu un adresă IP de versiune șase, se va genera o eroare.
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 IPsunknownTradus în limbaj uman, asta sună ca
P4: – Pot să mă alături ție?
A6: – Alătură-te!
P4: – Viața e durere 0_0
Un mic glosar, pentru orice eventualitate, .
Și dacă invers, conexiunea este inițiată A4, atunci nu se generează eroare, iar conexiunea pur și simplu "se blochează".
Hub: [Outgoing][IPv4:412] DCTM AACX AACU ADCS/0.10 1993 3871342713A fi, nu a părea
Ce este important este modul de conexiune afișat pe hub.
Clienții fără suport IPv6 vor trebui să îi vadă pe cei conectați prin el ca fiind clar pasivi, pur și simplu pentru că hub-ul nu completează I4 sau I6 câmpul corespunzător.

FlylinkDC++ vs. IPv6
În realitate, situația este mai simplă și mai complicată în același timp.

AirDC++ vs. IPv6
Mai simplu, pentru că IPv6 are prioritate asupra IPv4, și asta este clar. Conexiunea cu hub-ul va fi stabilită prin el (deși cu o opțiune corespunzătoare este disponibilă redefinirea), iar clientul său activ va propune conexiunea pasivului.
Mai complicat, pentru că dacă pe hub sunt utilizatori cu suport IPv6, dar ei sunt conectați strict prin adresă IPv4, atunci...

… iar cu ele se poate conecta (la întâmplare) fără a avea deloc IPv4.
Vă rugăm să rețineți, clientul de la distanță s-a prezentat ca activ, dar este procesat ca pasiv. De ce?
Să-l ducem în leagăn
Acum să încercăm să conectăm clienții între ei cu seturi de suport IP comuna în parte pentru IPv4.

Da, e păcat că utilizatorii pasivi trebuie să aștepte. Dar nu se poate ajuta acest lucru, deoarece adresa IP vizibilă nu are o semnificație specială – de aceea sunt pasivi.

Uite! Clientul activ trimite ?.. Логично было бы ожидать «зависшего» соединения, но нет, оно получается на условиях A4.
De ce așa? Ne adresăm dezvoltatorului și primim răspuns:
nu este bine dacă cealaltă persoană nu suportă IPv6
Și nu poți contrazice! Dar aceasta necesită deja o logică internă, independentă de hub (vezi codul și ). Totuși, nu se poate ajuta pasivii, deoarece
Mod activ =
Încercările de a conecta clienții cu seturi comune de suport pentru IPv6 arată astfel. Reamintesc, a obține PA pentru DC++ nu am reușit.

Și iarăși surpriză. Se pare că modul pasiv pentru IPv6, pe care îl demonstrează DC++, este fie o înșelătorie intenționată, fie un bug.
Ce urmează?
În prezent, există exact două metode de a rezolva toate problemele posibile de conectare a utilizatorilor în moduri diferite și cu diferite seturi de suport pentru protocolul IP.
Primul – dezactivați complet IPv6 sau, dimpotrivă, creați un hub care funcționează doar prin el.
Al doilea – iată acest , care abia acum ajunge în stadiul de testare.
Ei bine, și, dacă nu doriți să configurați modul activ pentru a funcționa în DC, amintiți-vă:
Cine are, i se va da; iar cine nu are, îi va fi luat chiar și ceea ce crede că are. Lc. 8:18
Sursa: habr.com
