Esta duda se puede tratar de diversas maneras, sin embargo te damos la que para nosotros es la solución más completa.
Solución:
El nuevo socket es un concepto de nivel de aplicación introducido porque cada conexión establecida necesita un descriptor de archivo único (también distinto del descriptor de archivo de escucha), que se asigna a una sesión TCP, pero no es lo mismo que ella. La sesión en sí se identifica por la combinación de dirección y puerto de origen y destino. El puerto de origen (cliente) generalmente se elige al azar, mientras que el puerto de destino (servidor) es el puerto de escucha. No se asigna ningún puerto adicional.
El servidor utiliza el mismo puerto para escuchar y aceptar una nueva conexión y comunicarse con el cliente remoto.
Déjame darte un ejemplo, (en el sistema Linux):
Primero, inicia un http server
por pitón:
[email protected]:~$ sudo python -m SimpleHTTPServer 500
Serving HTTP on 0.0.0.0 port 500 ...
segundo uso nc
Comando para conectarse a la http server
aquí comenzamos dos clientes por:
[email protected]:~$ nc 0.0.0.0 500
Usar netstat
para ver el netstate del puerto 500:
[email protected]:~$ netstat -natp |grep ':500'
tcp 0 0 0.0.0.0:500 0.0.0.0:* LISTEN 54661/python
tcp 0 0 127.0.0.1:51586 127.0.0.1:500 ESTABLISHED 57078/nc
tcp 0 0 127.0.0.1:51584 127.0.0.1:500 ESTABLISHED 54542/nc
tcp 0 0 127.0.0.1:500 127.0.0.1:51586 ESTABLISHED -
tcp 0 0 127.0.0.1:500 127.0.0.1:51584 ESTABLISHED 54661/python
Puede ver, el servidor http usa el puerto 500 para LISTEN
para el cliente, después de que un nuevo cliente se conecte al servidor, todavía usa el puerto 500 para comunicarse con el cliente, pero con un nuevo descriptor de archivo.
El socket asociado con el nuevo descriptor devuelto por accept
en el servidor utilizará el mismo puerto en el lado del servidor de la conexión que el socket original (asumiendo definiciones “normales” donde el cliente inicia la conexión). El nuevo socket tendrá un número de puerto de cliente diferente (el puerto remoto desde el punto de vista del servidor).
Si te mola la idea, puedes dejar un escrito acerca de qué le añadirías a esta división.