Según tengo entendido, esto es lo que sucede cuando un cliente realiza una solicitud de conexión:
- El servidor estará vinculado a un número de puerto en particular. El número de puerto siempre está vinculado a un proceso de escucha. Como solo el servidor está escuchando las conexiones entrantes, no necesitamos vincularnos del lado del cliente
- El servidor seguirá escuchando ese número de puerto.
- El cliente enviará una
connect()
solicitud. - El servidor aceptará la solicitud usando
accept()
. Tan pronto como el servidor acepta la solicitud del cliente, el kernel asigna un número de puerto aleatorio para el servidorsend()
yreceive()
, dado que el mismo número de puerto en el servidor no se puede usar para enviar y escuchar, y el puerto anterior todavía está escuchando nuevas conexiones
Dado todo eso, ¿cómo descubre el servidor en qué puerto está recibiendo el cliente? Sé que el cliente enviará segmentos TCP con un puerto de origen y un puerto de destino, por lo que el servidor utilizará el puerto de origen de ese segmento como su puerto de destino, pero ¿qué función llama el servidor para averiguar sobre ese puerto? Es accept()
?