Un socket es una de las tecnologías más fundamentales de la programación de redes informáticas. Los zócalos permiten que las aplicaciones de software de red se comuniquen utilizando mecanismos estándar incorporados en el hardware y los sistemas operativos de la red.
Aunque pueda sonar como una característica más del desarrollo de software de Internet, la tecnología de sockets existía mucho antes de la Web. Además, muchas de las aplicaciones de software de red más populares de la actualidad dependen de los sockets.
Índice de contenidos
Qué pueden hacer los enchufes para su red
Un zócalo representa una única conexión entre exactamente dos piezas de software (la llamada conexión punto a punto). Más de dos piezas de software pueden comunicarse con sistemas cliente/servidor o distribuidos utilizando múltiples sockets. Por ejemplo, muchos navegadores web pueden comunicarse simultáneamente con un único servidor web a través de un grupo de sockets creados en el servidor.
El software basado en sockets suele funcionar en dos ordenadores distintos de la red, pero también se pueden utilizar para comunicarse localmente ( interprocess) en un único ordenador. Los zócalos son bidireccionales, lo que significa que cada lado de la conexión es capaz de enviar y recibir datos. A veces, una aplicación que inicia la comunicación se denomina «cliente» y la otra «servidor», pero esta terminología conduce a la confusión en las redes peer to peer y, por lo general, debe evitarse.
APIs y bibliotecas de sockets
En Internet existen varias bibliotecas que implementan interfaces de programación de aplicaciones (API) estándar. El primer paquete principal – la Berkeley Socket Library – sigue siendo ampliamente utilizado en los sistemas UNIX. Otra API muy común es la biblioteca Windows Sockets (WinSock) para sistemas operativos de Microsoft. En relación con otras tecnologías informáticas, las API de socket son bastante maduras: WinSock ha estado en uso desde 1993 y los zócalos Berkeley desde 1982.
Las APIs de socket son relativamente pequeñas y sencillas. Muchas de las funciones son similares a las que se utilizan en las rutinas de entrada/salida de archivos, tales como read(), write(;>/tt>, y close(;>/tt>. Las llamadas de función a utilizar dependen del lenguaje de programación y de la biblioteca de zócalos elegidos.
Tipos de interfaz de socket
Las interfaces de socket se pueden dividir en tres categorías:
- Los sockets Stream, el tipo más común, requieren que las dos partes que se comunican primero establezcan una conexión de socket, después de lo cual cualquier dato que pase a través de esa conexión será garantizado para llegar en el mismo orden en el que fue enviado – el llamado modelo de programación orientado a la conexión.
- Los sockets Datagram ofrecen semántica «sin conexión». Con los datagramas, las conexiones son implícitas en lugar de explícitas como con los flujos. Cualquiera de las partes simplemente envía los datagramas según sea necesario y espera a que el otro responda; los mensajes pueden perderse en la transmisión o recibirse fuera de orden, pero es responsabilidad de la aplicación y no de los sockets para tratar estos problemas. La implementación de sockets de datagramas puede dar a algunas aplicaciones un aumento de rendimiento y una flexibilidad adicional en comparación con el uso de sockets de secuencia, lo que justifica su uso en algunas situaciones.
- El tercer tipo de socket — el socket raw — elude el soporte incorporado de la librería para protocolos estándar como TCP y UDP. Los zócalos sin procesar se utilizan para el desarrollo de protocolos personalizados de bajo nivel.
Soporte de sockets en protocolos de red
Los sockets de red modernos se utilizan normalmente junto con los protocolos de Internet: IP, TCP y UDP. Las bibliotecas que implementan sockets para el Protocolo de Internet utilizan TCP para los flujos, UDP para los datagramas e IP para los sockets sin procesar.
Para comunicarse a través de Internet, las bibliotecas de tomas IP utilizan la dirección IP para identificar ordenadores específicos. Muchas partes de Internet funcionan con servicios de denominación, de modo que los usuarios y los programadores de zócalos pueden trabajar con ordenadores por nombre ( e.g., «thiscomputer.wireless.about.com») en lugar de por dirección ( e.g., 208.185.127.40). Los sockets de streaming y datagramas también utilizan números de puerto IP para distinguir múltiples aplicaciones entre sí. Por ejemplo, los navegadores de Internet saben que el puerto 80 es el puerto por defecto para las comunicaciones de socket con los servidores Web.