entre si a través de el, ya que el actuaría como tracker.
La idea no se si funcionaría pero sería que los 2 ordenadores se conectasen a un servidor HTTP y que le manden su puerto, ip pública, e ip privada. Entonces lanzarían peticiones HTTP el uno al otro para comunicarse, también podría utilizar otros protocolos estáticos usando HTTP tunnel.
El único incomveniente que veo de primeras es que el puerto no sabremos cual sería el del cliente, pues en cada petición HTTP el puerto es distinto y va subiendo de uno en uno, sin embargo al ser otra IP cambiará y no se me ocurre manera de predecir el puerto.
Pero necesito saber si es viable, y si funcionaría.
Si es que ambos ordenadores al lanzar connect y usar recv mutuamente sean capaces de conectarse el uno con el otro, la única diferencia con otros tracker sería que utilizarían el protocolo HTTP lo que permitiría pasar sobre el firewall y el router.
También quisiera saber si esto es gracias a una vulnerabilidad de la NAT como ocurre con un tracker TCP orientado a conexión, y a pesar de que he buscado no encuentro la diferencia entre un tracker TCP y UDP, aunque seguiré indagando en ello.
Pues me gustaría crear una P2P que use HTTP como protocolo de encapsulamiento. Por las ventajas que ofrece, ahora el problema es engañar al que sería el servidor, porque ambos ordenadores actuarían como cliente y servidor, ¿pero que puerto abro en el servidor?, y si lo abro tengo que hacer port fordwarding con el router, luego para engañarlo debe de actuar como cliente también.
La única manera que se me ocurre es que ambos lanzarán la peticion a la vez y que recibieran un ACK y que piensen que procede de un servidor y que ese servidor está respondiendo a su petición anterior, entonces este mandaría un ACK al otro diciendo que lo ha recibido el mensaje del otro:
Citar
A-SYN-B ---------------- B-SYN-A
A-ACK-B ---------------- B-ACK-A
A-REQUEST-B ---------------- B-RESPONSE-A
A-RESPONSE-B ---------------- B-REQUEST-A
A-ACK-B ---------------- B-ACK-A
A-REQUEST-B ---------------- B-RESPONSE-A
A-RESPONSE-B ---------------- B-REQUEST-A
No se si será posible, pero en la primera interacción cuando mandan los SYN ningún router dejaría pasar el paquete lo cortaría (la menos eso hacen la mayoría de las redes), sin embargo, si en el tracker ponemos una hora minuto y segundo concreta para que manden el SYN y el ACK a la vez, quizás pueda producirse la conexión, lo veo muy dificil, pero me gustaría escuchar más ideas y ver si sería viable.
Un saludo!
Edito: Bueno me pregunto si simplemente A conociendo la IP publica y privada de B, y B teniendo un puerto abierto escuchando que A conoce, si sería capaz A de conectar con B sin necesidad de que le llegue un ACK..