Socket

Un socket es conocido como un tipo de software que actúa como un punto final que funciona estableciendo un enlace de comunicación de red bidireccional entre el extremo del servidor y el programa receptor del cliente.[1] También se le conoce como un punto final en un canal de comunicación bidireccional. Estos sockets se realizan y movilizan junto con un conjunto de peticiones de programación que se identifican como llamadas de función, lo que técnicamente se denomina interfaz de programación de aplicaciones (API). Un socket es capaz de simplificar el funcionamiento de un programa porque los programadores ahora sólo tienen que preocuparse de manipular las funciones del socket y esto les permite confiar en el sistema operativo para transportar los mensajes a través de la red correctamente.[2]

Funcionalidad

Típicamente, un zócalo se rige por un flujo específico de eventos para que funcione. Para un modelo cliente-servidor orientado a la conexión, el socket en el proceso del servidor espera la petición de un cliente. Para hacer esto, el servidor necesita principalmente establecer una dirección que los clientes puedan usar para encontrar y conectarse al servidor. Cuando se establece una conexión con éxito, el servidor esperará a que los clientes soliciten un servicio. El intercambio de datos cliente-servidor tendrá lugar si el cliente se conecta al servidor a través del socket. El servidor responderá a la solicitud del cliente y enviará una respuesta.[3]

La mayoría de las veces, las URL y sus conexiones se utilizan para acceder a Internet. Los programas requerirán un simple enlace de comunicación entre el cliente del programa y el servidor. Esta función está asociada a un socket que ayuda a vincular los extremos del cliente y del servidor del programa. Si un cliente comienza a establecer comunicación con el servidor, se realizará una conexión fiable entre el servidor y el cliente a través del canal de comunicación TCP. Con este tipo de comunicación, tanto el cliente como el servidor pueden leer o escribir en sockets que están conectados a un canal de comunicación específico.[^04]

Tipos de enchufes

Los siguientes son diferentes tipos de enchufes:

Enchufes de datagramas

Este es un tipo de zócalo de red que proporciona un punto sin conexión para enviar y recibir paquetes de datos. Cada paquete que se envía desde un socket de datagrama es enrutado y entregado individualmente. También se puede utilizar para enviar y recibir mensajes de difusión.

Tomas de corriente crudas

Esta toma permite el acceso al proveedor de transporte subyacente. Estos son capaces de proporcionar a los usuarios acceso a los protocolos de comunicación subyacentes que soportan abstracciones de sockets. Normalmente, están orientados a los datagramas, aunque sus características exactas dependen de la interfaz proporcionada por el protocolo. No están destinados al uso general, pero se han proporcionado principalmente para aquellos que están interesados en desarrollar nuevos protocolos de comunicación o para acceder a algunas instalaciones crípticas de protocolos ya existentes.

Enchufes de paquetes secuenciados

Sin embargo, esto es similar a una toma de corriente, con la excepción de que se conservan los límites de los registros. Este tipo de socket permite a los usuarios manipular las cabeceras del protocolo de paquetes de secuencia (SPP) o del protocolo de datagramas de Internet (IDP) en un paquete o incluso en un grupo de paquetes. Este zócalo también permite al usuario recibir cabeceras para los paquetes entrantes.

Tomas de corriente

Este tipo de zócalo se basa en TCP para la transmisión de datos. Si la entrega de datos es imposible, el remitente recibirá un indicador de que la conexión ha provocado un error. Los registros de datos no tienen límites.[4] Esta toma proporciona un flujo de datos único, secuenciado y orientado a la conexión, sin límites de registro, con mecanismos bien definidos para crear y/o destruir conexiones y para detectar errores. Transmite datos fiables, en orden y sin capacidades fuera de banda. Se supone que los procesos sólo se comunican entre tomas del mismo tipo, pero no hay ninguna restricción que impida la comunicación entre estas tomas de diferentes tipos.

Enchufe activo

Se trata de una conexión de socket con los sockets activos remotos a través de una conexión de datos abierta. Si esta conexión se cierra, las tomas activas en cada punto también se destruirán. Es utilizado por los clientes que desean iniciar solicitudes de conexión para conectarse. Sin embargo, este zócalo activo también puede transformarse en un zócalo pasivo vinculando un nombre al zócalo con el bind-macro e indicando la voluntad de aceptar conexiones con el listen-macro.

Enchufe pasivo

Esta toma no está conectada, sino que espera una conexión entrante que generará una nueva toma activa. Esto es usado por los servidores para aceptar peticiones de conexión con el connect-macro. Esta toma pasiva no se puede utilizar para iniciar solicitudes de conexión. Los conceptos de sockets activos y pasivos para sockets streaming no se aplican a los otros tipos de sockets, como el socket datagrama.[5]

Puertos y tomas

Un socket es una interfaz para enviar y recibir datos en un puerto específico, mientras que un puerto es un valor numérico asignado a un proceso específico o a una aplicación en el dispositivo.[6] Aunque existe una estrecha relación entre un socket y un puerto, el socket no es realmente un puerto. Cada puerto puede tener una sola toma pasiva esperando las conexiones entrantes y varias tomas activas, cada una de las cuales corresponde a una conexión abierta en el puerto.[1:1] Hoy en día, el zócalo facilita y hace más eficiente la comunicación. Permite establecer una conexión entre dos procesos diferentes en la misma o diferentes máquinas. En pocas palabras, es una forma de hablar con otra computadora.

Historia

El uso del término "Socket" comenzó en 1971, donde se utilizó durante el desarrollo de ARPANET. La mayoría de las tomas implementadas hoy en día se basan en las tomas Berkerley, que fueron desarrolladas en 1983. Sin embargo, los zócalos utilizados para establecer una conexión a Internet se inspiran en los modelos de Winsock que se fabricaron en 1991. Los conectores Berkerley también se conocen como conectores BSD. En 1989, Berkerley publicó versiones de su sistema operativo y de su biblioteca de red como libres de restricciones de licencia. Otras implementaciones tempranas fueron escritas para TOPS-20, MVS, VM, e IBM-DOS.


  1. https://www.techopedia.com/definition/16208/socket ↩︎ ↩︎

  2. https://www.webopedia.com/TERM/S/socket.html ↩︎

  3. https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzab6/howdosockets.htm ↩︎

  4. https://www.tutorialspoint.com/unix_sockets/what_is_socket.htm ↩︎

  5. https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.hala001/astream.htm ↩︎

  6. http://pediaa.com/difference-between-socket-and-port/ ↩︎