Sledovať vývoj súborového zdieľania je zaujímavé, no ešte zaujímavejšie je sa na ňom podieľať.
Dnes, pri inštalácii a spúšťaní moderného hubu, nový administrátor získava prístup takmer ku všetkým poznatkom a získaným skúsenostiam jeho predchodcov. Má systém pripravený na rozšírenie a prispôsobenie, vrátane mnohých skriptov.
S huby inak. Štruktúra tohto protokolu predpokladá rozšíriteľnosť. Chceš novú funkciu? Nuž, navrhni, propaguj, realizuj, implementuj, využívaj.
Ako následok, "z krabice" samozrejme môžete získať hotový hub, ale jednoducho ho spustiť a zabudnúť naň by nebolo vhodné. Rozšíriteľnosť v historickom kontexte predpokladá aj existenciu rôzneho počtu rôznych funkcií klientského a serverového softvéru v závislosti od verzie. A to, čo bude fungovať bez problémov u jedného používateľa, môže byť nekompatibilné s klientom iného, a to treba brať do úvahy.
Tak sa stalo aj s IPv6. Starý NMDC ho vôbec nepodporuje, ale ADC je naň pripravený. Avšak, nie všetko je také jednoduché.
Trochu teórie
"Aktívny" používateľ môže prijímať prichádzajúce spojenia. Vlastne, od neho vychádzajúci požiadavok na spojenie je v skutočnosti pozvaním.
"Pasívny" používateľ môže vo všeobecnosti používať len odchádzajúce požiadavky. Prostredníctvom hubu môže žiadal aktívnemu používateľovi poslať pozvanie – a spojenie sa nadviaže.

A áno, tento mechanizmus nezávisí od verzie používaného IP protokolu.
Labut, rak a šťuka
Pohovoríme o klientskom softvéri.
Podpora IPv6 v má experimentálny charakter. Preň neexistujú osobitné nastavenia, a preto ma prekvapilo vidieť rôzne režimy fungovania pre rôzne verzie IP, pričom pasívny je práve pre šiestu, no to nie je presné.
Získať aktívny režim pri ručnom nastavení sa nepodarilo ani pri explicitnom použití domény s AAAA záznamom ako WAN IP, avšak v automatickom režime s využitím UPnP všetko fungovalo ako má.
má podporu pre pripojenia IPv6, pričom je implementovaná úplne oddelene od IPv4. Navyše, tento klient modifikuje značky používateľov tak, aby zobrazoval režimy fungovania pre obidva IP protokoly súčasne. Samotné huby to (zatiaľ) nevedia, čo je škoda.
Okamžite musím uviesť: AirDC++ robí tak jeden a pre seba. V budúcnosti pre pohodlie budem používať kombinácie ako AP alebo AA ako indikáciu aktívnych alebo pasívnych režimov pre IPv4 a IPv6, respektíve, a nie ich zobrazenie v značke reálneho klienta na reálnom hubu. To je dôležité.
V našom experimente budeme používať FlylinkDC++ ako klienta, ktorý vôbec nie je oboznámený s IPv6. Je tiež dôležité poznamenať, že podpora pre neho v čase písania článku nebola nikde implementovaná.
Začiatok
Najskôr sa pozrieme na očividne nemožné pripojenia medzi používateľmi rôznych verzií protokolu IP. Na test sa použije s A- a AAAA-záznamami pre doménové meno, ktoré slúži ako jeho adresa.

Všimnite si, že pri (skutočnej) pokuse o prístup k používateľovi s IP adresou šiestej verzie sa zobrazuje chyba.
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 IPsunknownPreložené do ľudskej reči to znie ako
P4: – Môžem sa k tebe pripojiť?
A6: – Pripájaj sa!
P4: – Život je bolesť 0_0
Krátky slovník, ak niečo, .
A ak naopak, pripojenie začína A4, chyba sa nezobrazí a pripojenie sa jednoducho "visí".
Hub: [Outgoing][IPv4:412] DCTM AACX AACU ADCS/0.10 1993 3871342713Byť, a nie zdať sa
Čo je dôležité, je zobrazený na hubu režim pripojenia.
Klienti bez podpory IPv6 budú vidieť pripojených používateľov cez neho ako jednoznačne pasívnych jednoducho preto, že hub nevyplní I4 alebo I6 pole príslušne.

FlylinkDC++ vs. IPv6
V skutočnosti je situácia jednoduchšia a zložitejšia naraz.

AirDC++ vs. IPv6
Jednoduchšie, pretože IPv6 má prioritu pred IPv4, a to je jasné. Práve cez neho (hoci s pomocou príslušnej možnosti je možné predefinovanie) bude nadviazané spojenie s hubom, a jeho aktívny klient to bude ponúkať pasívnemu.
Zložitejšie, pretože ak sú na hube používatelia s podporou IPv6, ale sú pripojení striktne cez IPv4-adresu, tak...

… tak sa nimi dá spojiť (náhodne) aj bez IPv4.
Všimnite si, že vzdialený klient sa označil ako aktívny, ale spracováva sa ako pasívny. Prečo?
Do toho ho do hojdačky
Teraz sa pokúsime spojiť medzi sebou klientov s rôznymi, ale spoločnými v časti IPv4 sadami podpory protokolu IP.

Áno, je smutné, že pasívni používatelia musia stáť bokom. Ale nemôžeme im pomôcť, pretože ich viditeľná IP adresa nemá osobitný význam – preto sú pasívni.

Ha! Aktívny klient posiela ?.. Логично было бы ожидать «зависшего» соединения, но нет, оно получается на условиях A4.
Prečo tak? Obraciame sa na vývojára a dostávame odpoveď:
nie je dobré, ak druhý používateľ nepodporuje IPv6
A na tom sa nedá nijako polemizovať! Ale to si už vyžaduje vnútornú, nezávislú od hubu logiku (pozri kód a ). Pasívom však stále nemôžeme pomôcť, pretože
Aktívny režim =
Pokusy o spojenie medzi klientmi so spoločnými v časti IPv6 sadami podpory protokolu IP vyzerajú nasledovne. Pripomínam, že dosiahnuť PA pre DC++ sa mi nepodarilo.

A znova prekvapenie. Odhaľuje sa, že pasívny režim pre IPv6, ktorý prezentuje DC++, je buď zámerný podvod, alebo chyba.
Čo ďalej?
V súčasnosti existujú presne dva spôsoby riešenia všetkých možných problémov spojenia používateľov v rôznych režimoch a s rôznymi sadami podpory protokolu IP.
Prvý – zablokovať IPv6 úplne, alebo naopak, vytvoriť hub na prácu len cez neho.
Druhý – toto , ktoré je práve na štádiu testovania.
A nezabúdajte, že keď sa vám nechce nastavovať aktívny režim pre DC, pamätajte:
Kto má, tomu bude dané, a kto nemá, tomu bude odňaté aj to, čo si myslí, že má. Lk. 8:18
Zdroj: habr.com
