
Entonces... tuve esta discusión con mi profesor de redes. Dijo que algunas personas se quejan de fallas del enrutador debido a muchas entradas en las tablas NAT del enrutador.
No entendí y pregunté: "Si la aplicación usa el mismo puerto, ¿por qué falla el enrutador? Debería tener solo una entrada (pc-ip,pcport;public-ip,public-port)". Y dijo: "no importa que use el mismo puerto".
Se me ocurrió la idea de que NAT crea una entrada para cada paquete que pasa por él. Supongo que NAT con sobrecarga, como habrás adivinado.
Entonces las preguntas son:
¿Cómo se crean las entradas nat? ¿Por paquetes o por conexión? Quiero decir: supongamos que envío un paquete udp... ¿el enrutador crea una entrada?
Cuando inicio una conexión TCP, ¿el enrutador crea una entrada nat persistente hasta que se cierra la conexión?
¿Mi maestro tenía razón? ¿La tabla NAT se puede sobrecargar asumiendo una aplicación en el mismo puerto enviando paquetes?
Gracias de antemano.
Respuesta1
- Por conexión (o por flujo UDP)
- Sí
- Sí. Por ejemplo, su navegador web en una PC interna puede tener múltiples conexiones TCP simultáneas abiertas simultáneamente a cada uno de varios servidores web externos diferentes. Para cada conexión, el puerto de origen variará (se elige al azar), pero el puerto de destino y la dirección IP de destino pueden ser idénticos para varias conexiones. Un enrutador diseñado para satisfacer las necesidades de dos o tres computadoras en un hogar podría no ser capaz de hacer frente al número de conexiones simultáneas necesarias en (por ejemplo) una escuela con quizás cientos de computadoras muy ocupadas. Los enrutadores deben dimensionarse para la carga esperada.
Si mirasejemplo de fuente C para cliente TCPdescrito enCómo, verá que la API de "sockets" no proporciona ningún medio para que el cliente que inicia una conexión especifique un puerto de origen.