Una toma de corriente es una de las tecnologías más fundamentales de la programación de redes de computadoras. Los sockets permiten que las aplicaciones de software de red se comuniquen mediante mecanismos estándar integrados en el hardware de red y los sistemas operativos.
Aunque puede parecer una característica más del desarrollo de software de Internet, la tecnología de socket existía mucho antes de la Web. Y, muchas de las aplicaciones de software de red más populares de la actualidad dependen de sockets.
¿Qué pueden hacer los sockets para su red?
Un zócalo representa una conexión única entre exactamente dos piezas de software (una llamada punto a punto conexión). Más de dos piezas de software pueden comunicarse con el cliente / servidor o los sistemas distribuidos mediante el uso de múltiples sockets. Por ejemplo, muchos navegadores web pueden comunicarse simultáneamente con un solo servidor web a través de 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 ( interproceso ) en una sola computadora. Sockets son bidireccional , lo que significa que cualquier 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 aplicación "servidor", pero esta terminología genera confusión en las redes entre pares y, por lo general, debe evitarse.
APIs y bibliotecas de socket
Existen varias bibliotecas que implementan interfaces de programación de aplicaciones (API) estándar en Internet. El primer paquete principal: la biblioteca Berkeley Socket todavía se usa ampliamente en los sistemas UNIX. Otra API muy común es la biblioteca de Windows Sockets (WinSock) para los 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 sockets de Berkeley desde 1982.
Las API de socket son relativamente pequeñas y simples. Muchas de las funciones son similares a las utilizadas en las rutinas de entrada / salida de archivos, como leer(), escribir()y cerrar(). La función real llamada a utilizar depende del lenguaje de programación y la biblioteca de socket elegida.
Tipos de interfaz de socket
Las interfaces de socket se pueden dividir en tres categorías:
- Corriente Los sockets, 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 se garantizará que los datos que pasan a través de esa conexión lleguen en el mismo orden en que se enviaron, el llamado modelo de programación orientado a conexión. .
- Datagrama Los sockets ofrecen una semántica "sin conexión". Con los datagramas, las conexiones son implícitas en lugar de explícitas como con las secuencias. Cualquiera de las partes simplemente envía los datagramas según sea necesario y espera a que la otra 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 enchufes resolver estos problemas. 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 transmisión, lo que justifica su uso en algunas situaciones.
- El tercer tipo de zócalo - el crudo socket: pasa por alto 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 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 usan TCP para transmisiones, UDP para datagramas e IP para sockets sin formato.
Para comunicarse a través de Internet, las bibliotecas de socket IP usan la dirección IP para identificar computadoras específicas. Muchas partes de Internet trabajan con servicios de nombres, de modo que los usuarios y los programadores de socket pueden trabajar con las computadoras por nombre ( p.ej. , "thiscomputer.wireless.about.com") en lugar de por dirección ( p.ej. , 208.185.127.40). Los sockets de corriente y datagrama también usan números de puerto IP para distinguir múltiples aplicaciones entre sí. Por ejemplo, los navegadores web en Internet saben que usar el puerto 80 como predeterminado para las comunicaciones de socket con los servidores web.