Socket designa un concepto abstracto por el cual dos programas (posiblemente situados en computadoras distintas) pueden intercambiarse cualquier flujo de datos, generalmente de manera fiable y ordenada.
Un socket queda definido por una dirección IP, un protocolo y un número de puerto.
Para que dos programas puedan comunicarse entre sí es necesario que se cumplan ciertos requisitos:
Para ello son necesarios los tres recursos que originan el concepto de socket:
Los sockets permiten implementar una arquitectura cliente-servidor. La comunicación ha de ser iniciada por uno de los programas, por este motivo se denomina programa cliente. El segundo programa espera a que otro inicie la comunicación, por este motivo se denomina programa servidor.
Las propiedades de un socket dependen de las características del protocolo en el que se implementan. El protocolo más utilizado es TCP, aunque también es posible utilizar UDP o IPX. Gracias al protocolo TCP, los sockets tienen las siguientes propiedades:
Estas propiedades son muy importantes para garantizar la corrección de los programas que tratan la información. Mediante el protocolo UDP, estas propiedades desaparecen, motivo por el que no es muy frecuente su uso.
En los origenes de Internet, las primeras computadoras en implementar sus protocolos fueron aquellas de la universidad de Berkeley. Dicha implementación tuvo lugar en una variante del sistema operativo Unix conocida como BSD Unix. Pronto se hizo evidente que los programadores necesitarían un medio sencillo y eficaz para escribir programas capaces de intercomunicarse entre sí. Esta necesidad dio origen a la primera especificación e implementación de sockets, también en Unix. Hoy día, los sockets están implementados como bibliotecas de programación para multitud de sistemas operativos, simplificando la tarea de los programadores.
Existe una variante de los sockets denominada Unix domain sockets, o bien, Interprocess communication sockets (IPC sockets). Éstos se encuentran especificados en la norma POSIX y tienen como propósito la intercomunicación entre programas dentro de la misma computadora, facilitando así la optimización de recursos para este caso en concreto.
Socket | Socket | Socket | Elektros lizdas | Gniazdo (telekomunikacja) | Socket | Сокет | Soket