Es interesante observar el desarrollo de la red de intercambio de archivos, pero es aún más interesante participar en ella.
Hoy en día, al instalar y lanzar un hub, el nuevo administrador tiene acceso prácticamente a todos los desarrollos y a la experiencia acumulada en este campo por sus predecesores. Cuenta con un sistema listo para ser ampliado y personalizado, incluyendo la integración de numerosos scripts.
Con Los hubs funcionan de manera diferente. La estructura de este protocolo implica escalabilidad. ¿Quieres una nueva función? Bueno, propón, promueve, implementa, aplica y utilízala.
Como resultado, se puede obtener un hub listo para usar 'de fábrica', pero lanzarlo y olvidarse de él no sería correcto. La escalabilidad, en un contexto histórico, implica también la existencia de diferentes funciones de software cliente y servidor dependiendo de la versión. Y lo que funciona sin problemas para un usuario puede ser incompatible con el cliente de otro, y esto debe ser tenido en cuenta.
Esto también sucedió con IPv6. El viejo NMDC no lo admite en absoluto, pero el ADC está preparado para ello. Sin embargo, no todo es tan simple.
Un poco de teoría
Un usuario 'activo' puede aceptar conexiones entrantes. En realidad, la solicitud de conexión que envía es en efecto una invitación.
Un usuario 'pasivo', en términos generales, solo puede utilizar solicitudes salientes. A través del hub, él solicita a un usuario activo que envíe una invitación, y así se establece la conexión.

Y sí, este mecanismo no depende de la versión del protocolo IP utilizado.
El cisne, el cangrejo y la perca
Hablemos sobre el software cliente.
El soporte de IPv6 en es experimental. No hay configuraciones específicas para ello, y me sorprendió ver diferentes modos de funcionamiento para distintas versiones de IP, siendo el pasivo precisamente para la sexta, aunque esto no es seguro.
No se logró obtener modo activo con la configuración manual incluso al usar explícitamente un dominio con registro AAAA como IP WAN, pero en modo automático utilizando UPnP, todo funcionó como debería.
también tiene soporte para conexiones IPv6, implementado de forma independiente de IPv4. Además, este cliente modifica las etiquetas de los usuarios para mostrar los modos de operación de ambos protocolos IP simultáneamente. Los hubs no pueden hacer esto (por ahora), lo cual es una pena.
De inmediato debo aclarar: AirDC++ hace esto solo para sí mismo. A partir de ahora, por conveniencia, utilizaré combinaciones como AP o AA como indicación de modos activos o pasivos de operación para IPv4 e IPv6 respectivamente, y no su visualización en la etiqueta del cliente real en un hub real. Esto es importante.
En nuestro experimento, utilizaremos FlylinkDC++ como cliente, que no está familiarizado con IPv6. También cabe destacar que el soporte de no se había implementado en ningún lugar en el momento de escribir este artículo.
Introducción
Primero, examinaremos conexiones potencialmente imposibles entre usuarios de diferentes versiones del protocolo IP. Para la prueba, se utilizará con registros A y AAAA para el nombre de dominio que actúa como su dirección.

Tenga en cuenta que aquí, al intentar (de hecho) acceder a un usuario con una dirección IP de la sexta versión, se muestra un error.
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 IPsunknownEn un lenguaje más sencillo, esto suena como
P4: – ¿Puedo conectarme a ti?
A6: – ¡Conéctate!
P4: – La vida duele 0_0
Un breve diccionario, si es necesario, .
Y si, al contrario, la conexión la inicia A4, no se muestra error alguno, y la conexión simplemente queda "colgada".
Hub: [Outgoing][IPv4:412] DCTM AACX AACU ADCS/0.10 1993 3871342713Ser, y no parecer
Lo que importa es el modo de conexión mostrado en el hub.
Los clientes que no soportan IPv6 deberán ver a los usuarios conectados a través de él como pasivos, simplemente porque el hub no llena I4 o I6 el campo correspondiente.

FlylinkDC++ vs. IPv6
En la práctica, la situación es más simple y más compleja al mismo tiempo.

AirDC++ vs. IPv6
Más simple, porque IPv6 tiene prioridad sobre IPv4, y eso es claro. A través de él (aunque con la opción correspondiente disponible para la anulación) se establecerá la conexión con el hub, y su cliente activo será el que ofrezca la conexión al pasivo.
Más complejo, porque si en el hub hay usuarios con soporte para IPv6, pero están conectados estrictamente a través de una dirección IPv4, entonces…

… entonces se pueden conectar (al azar) sin tener IPv4.
Tenga en cuenta que el cliente remoto se ha identificado como activo, pero se está procesando como pasivo. ¿Por qué?
¡A la cama con él!
Ahora intentamos conectar entre sí a los clientes con diferentes, pero comunes conjuntos de soporte de protocolo IP en parte de IPv4.

Sí, es una pena que los usuarios pasivos tengan que quedarse de lado. Pero no se puede hacer nada al respecto, ya que su dirección IP visible no tiene un significado especial; por eso son pasivos.

¡Vaya! El cliente activo envía ?.. Логично было бы ожидать «зависшего» соединения, но нет, оно получается на условиях A4.
¿Por qué es así? Hablamos con el desarrollador y obtenemos la respuesta:
no es bueno si el otro usuario no soporta IPv6
Y no se puede discutir con eso. Pero esto requiere una lógica interna ya independiente del hub (ver código y ). Los pasivos aún no pueden ser ayudados, porque
Modo activo =
Los intentos de conexión entre clientes con conjuntos de soporte de protocolo IP comunes en parte de IPv6 se ven de la siguiente manera. Recuerden, lograr PA para DC++ no lo logré.

Y otra vez la sorpresa. El modo pasivo para IPv6 que muestra DC++ es un engaño intencionado o un error.
¿Qué sigue?
En la actualidad, existen exactamente dos maneras de resolver todos los posibles problemas de conexión de usuarios en diferentes modos y con diferentes conjuntos de soporte de protocolo IP.
La primera es desactivar completamente IPv6 o, por el contrario, crear un hub que funcione solo a través de él.
La segunda es esta , que apenas está en fase de prueba.
Y, al no querer configurar el modo activo para trabajar en DC, recuerden:
A quien tiene, se le dará, y a quien no tiene, se le quitará aún lo que piensa tener. Lc. 8:18
Fuente: habr.com
