Saltar al contenido

¿Cambia el puerto cuando un servidor acepta una conexión TCP?

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 serveraquí 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *