Los enchufes permiten la comunicación entre dos procesos diferentes en la misma o diferentes máquinas. Para ser más precisos, es una forma de hablar con otros ordenadores usando descriptores de archivos estándar de Unix. En Unix, cada acción de E/S se realiza escribiendo o leyendo un descriptor de archivo. Un descriptor de archivo es sólo un entero asociado a un archivo abierto y puede ser una conexión de red, un archivo de texto, una terminal o algo más.
Para un programador, un socket se ve y se comporta de manera muy parecida a un descriptor de archivo de bajo nivel. Esto se debe a que comandos como read() y write() funcionan con los sockets de la misma manera que lo hacen con los archivos y las tuberías.
Los sockets fueron introducidos por primera vez en 2.1BSD y posteriormente refinados en su forma actual con 4.2BSD. La característica de los sockets está ahora disponible en la mayoría de las versiones actuales del sistema UNIX.
¿Para qué se utiliza el socket?
Un socket Unix se utiliza en un marco de aplicación cliente-servidor. Un servidor es un proceso que realiza algunas funciones a petición de un cliente. La mayoría de los protocolos de nivel de aplicación, como FTP, SMTP y POP3, utilizan los sockets para establecer la conexión entre el cliente y el servidor y luego para intercambiar datos.
Tipos de sockets
Hay cuatro tipos de enchufes disponibles para los usuarios. Los dos primeros se usan más comúnmente y los dos últimos se usan raramente.
Se supone que los procesos se comunican sólo entre sockets del mismo tipo, pero no hay ninguna restricción que impida la comunicación entre sockets de diferentes tipos.
- Stream Sockets: Se garantiza la entrega en un entorno de red. Si envía a través del socket de flujo tres artículos «A, B, C», llegarán en el mismo orden – «A, B, C». Estos sockets utilizan el protocolo TCP (Transmission Control Protocol) para la transmisión de datos. Si la entrega es imposible, el remitente recibe un indicador de error. Los registros de datos no tienen límites.
- Sockets de Datagrama: La entrega en un entorno de red no está garantizada. No tienen conexión porque no es necesario tener una conexión abierta como en los Stream Sockets, se construye un paquete con la información de destino y se envía. Utilizan UDP (Protocolo de Datagrama de Usuario).
- Sockets crudos:Estos proveen a los usuarios acceso a los protocolos de comunicación subyacentes, que soportan abstracciones de sockets. Estos sockets están normalmente orientados a los datagramas, aunque sus características exactas dependen de la interfaz proporcionada por el protocolo. Los zócalos sin procesar no están destinados al usuario en general; se han facilitado principalmente a los interesados en desarrollar nuevos protocolos de comunicación o en obtener acceso a algunas de las instalaciones más crípticas de un protocolo existente.
- Sockets de paquetes secuenciados:Son similares a un socket de flujo, con la excepción de que se conservan los límites del registro. Esta interfaz se proporciona sólo como parte de la abstracción de sockets de sistemas de red (NS), y es muy importante en la mayoría de las aplicaciones NS serias. Los sockets de paquetes secuenciales permiten al usuario manipular los encabezamientos del Protocolo de Paquetes Secuenciales (SPP) o del Protocolo de Datagramas de Internet (IDP) en un paquete o grupo de paquetes, ya sea escribiendo un encabezamiento prototipo junto con los datos que se van a enviar, o especificando un encabezamiento predeterminado que se utilizará con todos los datos salientes, y permite al usuario recibir los encabezamientos en los paquetes entrantes.
Cómo se crean los enchufes
Un socket se crea concatenando el número IP de un sistema y un número de puerto de software (no un número de puerto de hardware). Esto permite al proceso conocer la dirección del sistema (la dirección IP) y la dirección a la que debe enviarse la información (el número de puerto). El número IP y el número de puerto están separados por un :.
Se crea un socket sin nombre. Un proceso remoto no tiene forma de referirse a un socket hasta que una dirección está vinculada al socket. Los procesos que se comunican están conectados a través de direcciones. En la familia de Internet, una conexión se compone de direcciones locales y remotas y puertos locales y remotos. Duplicar conjuntos ordenados, tales como: protocolo , dirección local , puerto local , dirección en el extranjero , puerto extranjero no puede existir. En la mayoría de las familias, las conexiones deben ser únicas.
Contenido