¿Por que darle libertad al usuario de elegir el puerto origen, y si no es especificado, elegir automaticamente uno aleatorio?
Concretamente,
¿Por que no equivaler automaticamente el puerto origen al puerto destino? ¿No tendria mas sentido que fuera asi?
Vamos a ver, al menos en sistemas BSD en otros será completamente igual asumo, si no especificas un puerto en el bind() en el cliente este equivale a 0 si el puerto equivale a 0 el sistema tiene que escoger uno aleatorio, donde esta el problema? Se escoje uno aleatorio por que el usuario así lo pide o el cliente no es capaz de tener esa opción como netcat por ejemplo.
Para mi no tiene más sentido, asi es correcto.
De cualquier forma, asi podrias tambien evitarte la tarea de asegurarte de que el mismo no genere colisiones.
Seria mas limpio ¿No?
No va a ocasionar colisiones el propio SO tiene en cuenta los puertos usados, para generar uno que no lo este.
Por otra parte lo que tu dices si que ocasionaría colisiones por ejemplo: me estas comentando que te gustaría que el cliente obtuviere el mismo puerto que el server, por ejemplo con el puerto 443.
Bien que pasa si quiero tener más de una conexión con otro servidor por el puerto 443? Mi table de conexiones ahora mismo.
TCP 192.168.1.56:53476 52.16.XX.XX:443 ESTABLISHED
TCP 192.168.1.56:53477 108.177.XX.XX:443 ESTABLISHED
TCP 192.168.1.56:53479 52.98.XX.XX:443 ESTABLISHED
TCP 192.168.1.56:53480 23.58.XX.XX:443 ESTABLISHED
Se puede ver que en el origen tengo unos puertos random conectando a los 443 de servers externos, pero que pasaría si en origen estuviera en 443? eso no ocasionaría colisión? Puedes responderme eso?