Estoy aprendiendo sobre la programación de socket TCP / IP y (Berkeley / UNIX). Digamos que tengo dos escenarios:
1) Escribo dos programas en C, un cliente y un servidor, y los vinculo a un puerto no muy conocido en el mismo host (Linux), y experimento con el intercambio de datos usando mis habilidades de C (principiante) .
2) Ejecuto el servidor en Linux y ejecuto el cliente desde una Windows que está en la misma LAN (detrás de NAT). Creo que esto significa que el puerto en Windows está "activo abierto"? (Tenga en cuenta que todavía no sé nada acerca de WinSock o de cómo evitar NAT.)
En cada uno de estos casos, ¿es posible que algún robot pueda buscar puertos abiertos mientras uno o ambos programas se ejecutan detrás de NAT? Si es así, ¿hay una manera para que un atacante vea la fuente de los programas personalizados que estoy ejecutando y explote los punteros mal utilizados, haga sobrecargas de búfer, etc.? Esta es una red doméstica, y no hay razón para que alguien la apunte específicamente.