Programación de sockets para redes informáticas
Un socket es una de las tecnologías más fundamentales de la programación de redes informáticas. Los sockets permiten que las aplicaciones de software de red se comuniquen mediante mecanismos estándar integrados en el hardware y los sistemas operativos de la red.
Aunque suena como otra característica del desarrollo de software de Internet, la tecnología de socket existía antes de la web. Muchas aplicaciones de software de red populares se basan en sockets.
Qué puede hacer la tecnología de socket por su red
Un socket representa una única conexión entre exactamente dos piezas de software (una conexión punto a punto). Más de dos piezas de software pueden comunicarse con Servidor de cliente o sistemas distribuidos mediante el uso de múltiples sockets. Por ejemplo, muchos navegadores web pueden comunicarse simultáneamente con un solo servidor web utilizando un grupo de sockets creados en el servidor.
El software basado en sockets generalmente se ejecuta en dos computadoras separadas en la red, pero los sockets también se pueden usar para comunicarse localmente (entre procesos) en una sola computadora. Los sockets son bidireccionales, lo que significa que cualquier lado de la conexión es capaz de enviar y recibir datos.
A veces, la aplicación que inicia la comunicación se denomina cliente y la otra aplicación es el servidor, pero esta terminología genera confusión en de igual a igual la creación de redes y, en general, debe evitarse.
Bibliotecas y API de socket
Varias bibliotecas que implementan estándar interfaces de programación de aplicaciones (API) existen en Internet. El primer paquete principal, Berkeley Socket Library, se usa ampliamente en sistemas UNIX.
Otra API común es la biblioteca Windows Sockets (WinSock) para los sistemas operativos de Microsoft. En comparación con otras tecnologías informáticas, las API de socket están maduras. WinSock se ha utilizado desde 1993 y los enchufes de Berkeley desde 1982.
Las API 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, como leer(), escribir(), y cerrar(). Las llamadas de función reales a utilizar dependen del lenguaje de programación y la biblioteca de conectores elegidos.
Tipos de interfaz de socket
Las interfaces de socket se pueden dividir en tres categorías:
- Tomas de corriente: Este es el tipo más común. Las dos partes que se comunican primero establecen una conexión de socket, después de lo cual cualquier dato pasa a través de ese Se garantiza que la conexión llegue en el mismo orden en que se envió (utilizando una programación orientada a la conexión). modelo).
- Zócalos de datagramas: Ofrece 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 envía datagramas según sea necesario y espera que la otra responda. Los mensajes pueden perderse durante la transmisión o recibirse fuera de servicio; la aplicación trata estos problemas, no los sockets. La implementación de sockets de datagramas puede dar a algunas aplicaciones un aumento de rendimiento y flexibilidad adicional en comparación con el uso de sockets de flujo.
- Zócalos crudos: Omita el soporte integrado de la biblioteca para protocolos estándar como TCP y UDP. Los sockets sin procesar se utilizan para el desarrollo de protocolos personalizados de bajo nivel.
Soporte de socket en protocolos de red
Los enchufes 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 transmisiones, UDP para datagramas e IP para sockets sin formato.
Para comunicarse a través de Internet, las bibliotecas de sockets IP utilizan el dirección IP para identificar equipos específicos. Muchas partes de Internet funcionan con servicios de nombres, de modo que los usuarios y los programadores de sockets pueden trabajar con computadoras por nombre (por ejemplo, thiscomputer.wireless.lifewire.com) en lugar de por dirección (por ejemplo, 208.185.127.40).
Los enchufes de flujo y datagramas también usan IP números de puerto para distinguir varias aplicaciones entre sí. Por ejemplo, los navegadores web en Internet saben que utilizan el puerto 80 como predeterminado para las comunicaciones de socket con servidores web.