Cómo hacer un sistema TCP / IP mediante el cual cualquiera de las partes pueda iniciar una conexión

La forma más sencilla es asegurarse de que ambas partes tengan direcciones IP únicas reales, tanto IPv4 como IPv6, y que los ISP intermedios realmente brinden un servicio de Internet transparente y de extremo a extremo.

Si hay un NAT intermedio, necesitará un tercer dispositivo, que está en Internet real, para realizar un servicio transversal de NAT para usted, que es considerablemente más complicado y con estado.

Ahora necesita una forma de encontrarse, que podría ser a través de un registro conocido (como el uso de correo electrónico y VoIP, una combinación del DNS y la confederación), o alguna otra forma de descubrimiento de servicios.

Por último, necesita saber con qué puerto hablar en el lado remoto. Ese podría ser un puerto conocido asignado estáticamente, o podría asignarse y registrarse dinámicamente en el registro conocido mencionado anteriormente.