Es ist spannend, die Entwicklung des Dateiaustausch-Netzwerks zu verfolgen, aber es ist noch spannender, daran teilzuhaben.
Heute, beim Einrichten und Starten eines modernen Hubs erhält der angehende Administrator Zugang zu nahezu sämtlichem Wissen und der Erfahrung seiner Vorgänger auf diesem Gebiet. Er verfügt über ein System, das bereit für Erweiterungen und Anpassungen ist, auch durch zahlreiche Skripte.
E Hubs funktionieren anders. Die Struktur dieses Protokolls ermöglicht Erweiterungen. Möchtest du eine neue Funktion? Nun, dann schlage sie vor, fördere sie, setze sie um, implementiere sie, und nutze sie.
Folglich kannst du zwar "out of the box" einen fertigen Hub erhalten, aber ihn einfach zu starten und dann zu vergessen, wäre nicht ideal. Erweiterbarkeit bedeutet historisch gesehen auch, dass es je nach Version unterschiedlich viele Funktionen für Client- und Server-Software gibt. Und was bei einem Nutzer problemlos funktioniert, kann mit dem Client eines anderen inkompatibel sein, und das ist zu beachten.
So verhält es sich auch mit IPv6. Der alte NMDC kann damit grundsätzlich nichts anfangen, aber der ADC ist dafür von Natur aus bereit. Doch so einfach ist es nicht.
Ein wenig Theorie
Ein „aktiver“ Benutzer kann eingehende Verbindungen annehmen. Tatsächlich ist die ausgehende Anfrage nach einer Verbindung von ihm eine Einladung.
Ein „passiver“ Benutzer kann im Allgemeinen nur ausgehende Anfragen verwenden. Über einen Hub kann er 16 BYN (~475 RUB) für das Subnetz /64. dem aktiven Benutzer eine Einladung senden – und die Verbindung wird hergestellt.

Und ja, dieser Mechanismus hängt nicht von der Version des verwendeten IP-Protokolls ab.
Der Schwan, der Krebs und der Hecht
Lass uns über die Client-Software sprechen.
Die Unterstützung von IPv6 in ist experimenteller Natur. Es gibt keine speziellen Einstellungen dafür, und es war umso überraschender für mich, verschiedene Betriebsmodi für verschiedene IP-Versionen zu sehen, wobei der passive Modus tatsächlich für die sechste ist, aber das ist ungenau.
Es gelang nicht, den aktiven Modus bei manueller Konfiguration zu erhalten, selbst bei expliziter Verwendung einer Domain mit AAAA-Eintrag als WAN-IP. Im automatischen Modus mit UPnP funktionierte jedoch alles wie gewünscht.
unterstützt auch IPv6-Verbindungen, die komplett unabhängig von IPv4 implementiert sind. Zudem modifiziert dieser Client die Benutzertags so, dass die Betriebsmodi für beide IP-Protokolle gleichzeitig angezeigt werden. Die Hubs sind dazu (bislang) nicht in der Lage, leider.
Ich sollte gleich anmerken: AirDC++ macht das einmal für sich selbst. Zukünftig werde ich Bezeichnungen wie AP oder AA als Hinweis auf den aktiven oder passiven Modus für IPv4 und IPv6 verwenden, und nicht deren Anzeige im Tag des tatsächlichen Clients auf einem realen Hub. Das ist wichtig.
In unserem Experiment werden wir FlylinkDC++ als Client verwenden, der mit IPv6 nicht vertraut ist. Es ist auch zu beachten, dass die Unterstützung für zum Zeitpunkt des Schreibens des Artikels noch nirgendwo implementiert war.
Anfang
Zuerst betrachten wir eindeutig unmögliche Verbindungen zwischen Benutzern verschiedener IP-Protokollversionen. Für den Test wird ein mit Ressourcen-A- und AAAA-Einträgen für den Domänennamen, der als seine Adresse fungiert, verwendet.

Bitte beachten Sie, dass bei der (tatsächlichen) Anfrage an einen Benutzer mit einer IPv6-Adresse ein Fehler angezeigt wird.
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 IPsunknownAuf gut Deutsch heißt das
P4: – Darf ich mich anhängen?
A6: – Häng dich an!
P4: – Das Leben ist schmerzhaft 0_0
Ein kurzer Wortschatz, falls nötig, .
Und wenn es umgekehrt ist und die Verbindung initiiert wird A4, erscheint kein Fehler und die Verbindung bleibt einfach "hängen".
Hub: [Outgoing][IPv4:412] DCTM AACX AACU ADCS/0.10 1993 3871342713Sein und nicht scheinen
Was wichtig ist, ist der angezeigte Verbindungsmodus im Hub.
Klienten ohne IPv6-Unterstützung werden die über ihn verbundenen Benutzer als eindeutig passiv sehen, nur weil der Hub ihnen kein Feld entsprechend ausfüllt. I4 oder I6 Feld entsprechend.

FlylinkDC++ vs. IPv6
In der Realität ist die Situation gleichzeitig einfacher und komplizierter.

AirDC++ vs. IPv6
Einfacher, weil IPv6 Priorität über IPv4 hat, und das ist klar. Genau über ihn (obwohl eine entsprechende Option verfügbar ist, um dies zu überschreiben) wird die Verbindung zum Hub hergestellt, und sein aktiver Client wird dem passiven Angebot machen.
Es wird komplizierter, denn wenn Nutzer mit IPv6-Unterstützung am Hub sind, aber ausschließlich über eine IPv4-Adresse verbunden sind, dann…

… können sie zufällig auch ohne IPv4 verbunden werden.
Bitte beachten Sie, dass der entfernte Client sich als aktiv identifiziert hat, aber als passiv verarbeitet wird. Warum?
Das ist wirklich merkwürdig.
Nun versuchen wir, Clients mit unterschiedlichen, aber in Bezug auf IPv4 gemeinsamen IP-Protokollunterstützungen miteinander zu verbinden.

Ja, es ist schade, dass passive Nutzer an der Seitenlinie stehen müssen. Aber daran kann man nichts ändern, da ihre sichtbare IP-Adresse keine besondere Bedeutung hat – so sind sie eben passive Nutzer.

Oh! Der aktive Client sendet ?.. Логично было бы ожидать «зависшего» соединения, но нет, оно получается на условиях A4.
Warum ist das so? Wir wenden uns an den Entwickler und erhalten die Antwort:
ist nicht gut, wenn der andere Nutzer kein IPv6 unterstützt.
Und man kann nicht widersprechen! Aber das erfordert eine interne, vom Hub unabhängige Logik (siehe Code und ). Passiven Nutzern kann immer noch nicht geholfen werden, denn
Aktiv-Modus =
Versuche, die Verbindung zwischen Clients mit gemeinsamen IPv6-Protokollunterstützungen herzustellen, sehen folgendermaßen aus. Ich erinnere daran, dass es mir nicht gelungen ist, PA für DC++ zu erreichen.

Und wieder eine Überraschung. Es scheint, dass der passive Modus für IPv6, den DC++ zeigt, entweder ein absichtlicher Fake oder ein Bug ist.
Wie geht es weiter?
Derzeit gibt es genau zwei Möglichkeiten, um alle möglichen Verbindungsprobleme von Benutzern in verschiedenen Modi und mit unterschiedlichen IP-Protokollunterstützungen zu lösen.
Die erste Möglichkeit besteht darin, IPv6 vollständig abzuschalten oder im Gegenteil, einen Hub einzurichten, der nur über IPv6 funktioniert.
Die zweite Möglichkeit ist dies hier , das sich gerade in der Testphase befindet.
Wenn Sie sich also scheuen, den aktiven Modus für die Arbeit in DC einzurichten, denken Sie daran:
Wer hat, dem wird gegeben, und wer nicht hat, dem wird auch das genommen, was er zu haben glaubt. Lk. 8:18
Quelle: habr.com
