Je zaujímavé sledovať vývoj siete na zdieľanie súborov, ale ešte zaujímavejšie je zúčastniť sa na ňom.
Dnes inštalácia a spustenie moderného NMDC hub, novo razený správca získa prístup k takmer všetkému vývoju a skúsenostiam, ktoré nazbierali v tejto oblasti jeho predchodcovia. Má systém pripravený na rozšírenie a prispôsobenie, a to aj pomocou mnohých skriptov.
С pobočník huby inak. Dizajn tohto protokolu má byť rozšíriteľný. Chcete novú funkciu? No ponúknuť to, propagovať to, implementovať to, implementovať to, používať to.
Výsledkom je, že môžete samozrejme dostať hotový rozbočovač z krabice, ale jednoducho ho spustiť a zabudnúť na to nebude dobré. Rozšíriteľnosť v historickom kontexte tiež znamená prítomnosť rôzneho počtu rôznych funkcií klientskeho a serverového softvéru v závislosti od verzie. A to, čo bude fungovať bez problémov pre jedného používateľa, môže byť nekompatibilné s klientom iného a s tým treba počítať.
Stalo sa to s IPv6. Starý pán NMDC to z princípu nevie, ale samotné ADC je na to pripravené. Nie všetko je však také jednoduché.
Len trochu teórie
„Aktívny“ používateľ môže prijímať prichádzajúce spojenia. Požiadavka na pripojenie z nej v skutočnosti skutočne pochádza pozvánka.
„Pasívny“ používateľ môže vo všeobecnosti používať iba odchádzajúce požiadavky. Cez rozbočovač on pýta aktívny používateľ odošle pozvánku - a spojenie sa vytvorí.
A áno, tento mechanizmus nezávisí od verzie použitého IP protokolu.
Labuť, rak a šťuka
Poďme hovoriť o klientskom softvéri.
podpora IPv6 DC ++ má experimentálny charakter. Neexistujú pre to žiadne samostatné nastavenia a o to viac ma prekvapilo, že som videl rôzne prevádzkové režimy pre rôzne verzie IP, s pasívnym len pre šiestu, ale to nie je presné.
Pri manuálnej konfigurácii nebolo možné získať aktívny režim ani pri explicitnom použití IP domény s AAAA záznamom ako WAN, ale v automatickom režime pomocou UPnP všetko fungovalo podľa očakávania.
AirDC++ má tiež podporu pre pripojenia IPv6 a je implementovaná úplne oddelene od IPv4. Okrem toho tento klient upravuje užívateľské značky tak, aby zobrazoval prevádzkové režimy pre oba IP protokoly súčasne. Samotné huby to (zatiaľ) nevedia, čo je škoda.
Musím okamžite urobiť rezerváciu: AirDC++ to robí sám a pre seba. V budúcnosti pre pohodlie použijem kombinácie ako AP alebo AA ako indikáciu aktívnych alebo pasívnych režimov prevádzky pre IPv4 a IPv6, v danom poradí, skôr ako ich zobrazenie v značke skutočného klienta na skutočnom uzle. To je dôležité.
V našom experimente použijeme FlylinkDC++ ako klienta, ktorý vôbec nepozná IPv6. Treba tiež poznamenať, že podpora NATT pre neho v čase písania tohto článku nebol nikde implementovaný.
začiatok
V prvom rade sa pozrieme na zjavne nemožné spojenia medzi používateľmi rôznych verzií IP protokolu. Bude použitý na skúšku Hub pripravený na IPv6 so záznamami zdroja A a AAAA pre názov domény fungujúci ako jeho adresa.
Upozorňujeme, že keď sa (v skutočnosti) pokúsite kontaktovať používateľa s adresou IP verzie XNUMX, zobrazí sa chyba.
Klienti bez podpory IPv6 budú musieť vidieť používateľov pripojených cez IPvXNUMX ako jasne pasívnych, jednoducho preto, že hub sa im nenaplní. I4 alebo I6 pole podľa toho.
FlylinkDC++ vs. IPv6
V skutočnosti je situácia jednoduchšia a zložitejšia zároveň.
AirDC++ vs. IPv6
Jednoduchšie, pretože IPv6 má prednosť pred IPv4, a to je pochopiteľné. Prostredníctvom neho (hoci je k dispozícii prepísanie pomocou príslušnej voľby) sa vytvorí spojenie s hubom a aktívny klient ho ponúkne pasívnemu klientovi na pripojenie.
Je to ťažšie, pretože ak sú na hube používatelia s podporou IPv6, ale sú pripojení striktne cez adresu IPv4, potom...
... potom sa k nim môžete pripojiť (náhodne) bez toho, aby ste vôbec mali IPv4.
Upozorňujeme, že vzdialený klient sa označil ako aktívum, ale zaobchádza sa s ním ako so záväzkom. prečo?
Hoď ho na hojdačke
Teraz sa pokúsime navzájom prepojiť klientov s rôznymi, ale z hľadiska IPv4 bežnými sadami podpory protokolu IP.
Áno, je škoda, že pasívni používatelia musia fajčiť na okraji. Tomu sa však nedá pomôcť, pretože ich viditeľná IP adresa nie je obzvlášť dôležitá - preto sú pasívami.
Bach! Aktívny klient odošle pasívny príkaz?.. Bolo by logické očakávať „zaseknuté“ spojenie, ale nie, za podmienok sa to ukazuje A4.
prečo je to tak? Kontaktujeme vývojára a dostaneme odpoveď:
CTM nie je dobré, ak druhý používateľ nepodporuje IPv6
A nemôžete sa hádať! Vyžaduje si to však internú logiku nezávislú od rozbočovača (pozri kód tu и tu). Pasívom sa stále nedá pomôcť, lebo
Pokusy o pripojenie medzi klientmi s bežnými sadami podpory IPv6 IP vyzerajú takto. Dovoľte mi pripomenúť, dosiahnuť PA Pre DC++ sa mi to nepodarilo.
A opäť prekvapenie. Ukazuje sa, že pasívny režim pre IPv6, ktorý DC++ demonštruje, je buď zámerný falošný, alebo chyba.
Čo bude ďalej?
V súčasnosti existujú presne dva spôsoby, ako vyriešiť všetky možné problémy s pripojením používateľov v rôznych režimoch a s rôznymi sadami podpory protokolu IP.
Prvým je úplné stlmenie IPv6 alebo naopak vytvorenie rozbočovača, ktorý bude fungovať iba cez neho.
Druhý je tento predĺženie, ktorá sa práve blíži do štádia testovania.
Ak ste príliš leniví na nastavenie aktívneho režimu pre prácu v DC, nezabudnite:
Kto má, tomu bude dané, a kto nemá, aj to, čo si myslí, že má, bude mu odňaté. OK. 8:18