Java Ejemplo de perforación de agujeros UDP: conexión a través del firewall
Digamos que tengo dos computadoras.
Conocen las IP públicas y privadas de cada uno a través deice4j
.
Un cliente escucha y el otro envía alguna cadena.
Me gustaría ver que esto suceda a través de la perforación de agujeros UPD:
Let A be the client requesting the connection
Let B be the client that is responding to the request
Let S be the ice4j STUN server that they contact to initiate the connection
--
A sends a connection request to S
S responds with B's IP and port info, and sends A's IP and port info to B
A sends a UDP packet to B, which B's router firewall drops but it still
punches a hole in A's own firewall where B can connect
B sends a UDP packet to A, that both punches a hole in their own firewall,
and reaches A through the hole that they punched in their own firewall
A and B can now communicate through their established connection without
the help of S
¿Podría alguien publicar pseudo ejemplos de cómo hacer perforaciones a través de NAT simétrica? Suponiendo que habrá un servidor S que ayudará a adivinar los números de puerto y establecer la conexión entre el cliente A y B.Sería bueno si también representaras el doble NAT.
NOTAPuede usar STUN para descubrir la IP y el Puerto, pero debe escribir su propio código que enviaría la IP: Puerto a su servidor a través dekeepalive
técnica.
na vez que un cliente identifica al otro a través de una identificación única en el servidor, se le proporcionará la IP del cliente del otro: la información del puerto a UDP perforará los datos que necesita enviar y recibir.
Pequeña actualización: Hay una biblioteca que está apareciendo en el horizonte para Java. Compruébalo:
https: //github.com/htwg/UCE#readm