¿Cuál es la diferencia entre un zócalo y una conexión en la red informática?

  • Enchufe

Imagine un teléfono de intercomunicación en un edificio de oficinas. Todos los teléfonos de intercomunicación son asignados por la oficina central a cada empleado. Cada teléfono de intercomunicación se conectará primero a la centralita cuando llame. Si desea llamar a alguien fuera del edificio, primero debe levantar el teléfono y decirle a la centralita el número de teléfono al que desea llamar. Switchboard hace la llamada y transfiere la línea a su intercomunicador para que pueda chatear.

En el escenario anterior, “centralita” es el sistema operativo, “zócalo” es el teléfono de intercomunicación, “conectar” es el proceso por el cual la centralita marca el número de teléfono y “conexión” es la línea que finalmente se asignó a su teléfono de intercomunicación.

La aplicación del usuario no puede controlar directamente la tarjeta de red para enviar paquetes IP. El sistema operativo maneja todas las actividades que se requieren para iniciar y mantener una conexión TCP. Sin embargo, una vez establecida la conexión, el acceso a los datos será manejado por la aplicación del usuario, no por el SO. Por eso necesitamos “zócalo”.

Un socket es en realidad un “recurso” de comunicación de datos en el sistema operativo. La aplicación del usuario primero solicita dicho recurso del sistema operativo; El sistema operativo asigna un marco básico para la comunicación de datos y devuelve la ID de ese recurso a la aplicación del usuario. La aplicación del usuario luego usaría esta ID para realizar una configuración detallada: cómo debería funcionar y cuál es el destino de la conexión. Una vez establecida la conexión, la aplicación de usuario puede usar esta ID para leer y escribir datos.

El concepto general es algo así como que el operador de la centralita conecte un enchufe de línea telefónica al enchufe de su intercomunicador. Por eso se llama “socket”.

  • Punto final

“Punto final” se refiere básicamente al lado del receptor. Puede verlo como la “extensión” de un número de teléfono. Cuando realiza una llamada telefónica a una empresa, el sistema de centralita telefónica responde a su llamada, marca el número de extensión y luego la centralita reasigna esta línea a un teléfono de intercomunicación específico.

En la red informática, un “punto final” es un servicio registrado previamente. Y el “número de extensión” de un punto final es el número de puerto de los paquetes TCP / UDP. Es un número de 16 bits, por lo que puede haber 65536 puntos finales al mismo tiempo en una sola computadora (por supuesto, hay varios números de puerto reservados).

La aplicación del usuario se registrará primero en un puerto TCP / UDP para el sistema operativo a través de llamadas API; como bind() y listen() API en sistemas POSIX. Cuando una conexión entrante especifica un puerto, el sistema operativo asignará esta conexión para que la aplicación dedicada la maneje.

El punto final también se puede usar en el lado de la persona que llama, lo que significa el puerto TCP para la conexión saliente. El lado de la persona que llama también debe especificar esto para que sepa cómo manejar los paquetes de respuesta enviados desde el lado del receptor. Sin embargo, este punto final está vinculado a la aplicación de llamada automáticamente por el sistema operativo, durante el proceso de conexión. La aplicación de usuario no necesita registrarse previamente para un número de puerto saliente.