- Socket
Introducción:
Dentro
de lo que es la conexión entre las aplicaciones existen lo que se llaman sockets,
que estos generan la fácil conexión y existen dentro de estos los diferentes
tipos y dominós que tendrán diferentes cosas por hacer.
Desarrollo:
Los
sockets no son más que puntos o mecanismos de comunicación entre procesos que permiten
que un proceso hable (emita o reciba información) con otro proceso incluso
estando estos procesos en distintas máquinas. Esta característica de
interconectividad entre máquinas hace que el concepto de socket nos sirva de
gran utilidad. Esta interfaz de comunicaciones es una de las distribuciones de
Berkeley al sistema UNIX, implementándose las utilidades de interconectividad
de este Sistema Operativo (telnet, …) usando sockets.
La forma de referenciar un
socket por los procesos implicados es mediante un descriptor del mismo tipo que
el utilizado para referenciar ficheros. Debido a esta característica, se podrá
realizar redirecciones de los archivos de E/S estándar (descriptores 0,1 y 2) a
los sockets y así combinar entre ellos aplicaciones de la red. Todo nuevo
proceso creado heredará, por tanto, los descriptores de sockets de su padre.
La
comunicación entre procesos a través de sockets se basa en la filosofía
CLIENTE-SERVIDOR: un proceso en esta comunicación actuará de proceso servidor
creando un socket cuyo nombre conocerá el proceso cliente, el cual podrá
"hablar" con el proceso servidor a través de la conexión con dicho
socket nombrado.
Una
vez abierto se pueden escribir y leer datos de él con las funciones de read() y
write().
La
forma de referenciar un socket por los procesos implicados es mediante un
descriptor del mismo tipo que el utilizado para referenciar ficheros.
El
mecanismo de comunicación vía sockets tiene los siguientes pasos:
- El proceso servidor crea un socket con nombre y espera la conexión.
- El proceso cliente crea un socket sin nombre.
- El proceso cliente realiza una petición de conexión al socket servidor.
- El cliente realiza la conexión a través de su socket mientras el proceso servidor mantiene el socket servidor original con nombre.
Un
socket se caracteriza por tres atributos:
- Dominio: Especifica el medio de comunicación de la red que el socket utilizará.
- Protocolo: Especifica que protocolo se va a usar
- Tipo: Los protocolos de internet proveen dos niveles distintos de servicio: flujo y datagramas.
Dominio
Un
dominio representa una familia de protocolos, un socket está asociado a un
dominio desde su creación.
Una
familia, o dominio de la conexión, agrupa todos aquellos sockets que comparten
características comunes. Especifica el formato de las direcciones que se podrán
dar al socket y los diferentes protocolos soportados por las comunicaciones vía
los sockets de este dominio.
Cada
protocolo, a la hora de referirse a un nodo de la red, implementa un mecanismo
de direccionamiento. La dirección distingue de forma inequívoca a cada nodo u
ordenador, y es utilizada para encaminar los datos desde el nodo origen hasta el
nodo destino. Hay muchas llamadas al sistema que necesitan un puntero a una
estructura de dirección de socket para trabajar. La siguiente estructura
genérica, se utiliza para describir las diferente primitivas.
Tipos
de dominios
- AF_UNIX: Sockets internos de UNIX (Sockets del sistema de archivos).
- AF_INET: Protocolos de internet ARPA (Sockets de redes de UNIX).
- AF_ISO: Protocolos estándar ISO.
- AF_NS: Protocolos de redes Xerox
Protocolo
Se
usa donde el mecanismo de transporte permite más de un protocolo a ser usado.
En
las redes de UNIX y en los sockets de sistema de archivos no necesitamos
seleccionar otro protocolo diferente al default.
Tipo
- SOCK_STREAM: (Para flujo) Son implementados en el dominio AF_INET por conexiones TCP/IP. Son el tipo usual en el dominio AF_UNIX.
- SOCK_DGRAM: (Para datagramas) No establecen ni mantienen una conexión. También existe un límite en el tamaño del datagrama que se puede enviar. Se transmite como un solo mensaje en la red que se puede perder, duplicar o llegar fuera de secuencia.Pueden dar soporte tanto a una comunicación sin conexión como a una orientada a conexión en el nivel de aplicación. Esto se debe a que, aunque los datagramas se envían o reciben sin la noción de conexiones en el nivel de transporte, el soporte en tiempo de ejecución del API de sockets puede crear y mantener conexiones lógicas para los datagramas intercambiados entre dos procesos, como se mostrará en la próxima sección.
Tipos de sockets
Hay dos tipos de socket:
- Orientado a conexión: Establece un camino virtual entre servidor y cliente, fiable, sin pérdidas de información ni duplicados, la información llega en el mismo orden que se envía. El cliente abre una sesión en el servidor y este guarda un estado del cliente.
- No Orientado a conexión: El programa de aplicación da la fiabilidad, es el llamado protocolo UDP, se usa el protocolo TCP del protocolo TCP/IP, para gestionar la conexión.
Arquitectura de Conexión
Cliente – Servidor:
- Servidor: es el programa que permanece pasivo a la espera de que alguien solicite conexión con él, está ejecutándose y esperando a que otro quiera conectarse a él, nunca da "el primer paso" en la conexión, es el que "sirve" información al que se la pida.
- Cliente: es el programa que solicita la conexión para pedir datos al servidor, es el programa que da el “primer paso” en la conexión, en el momento de ejecutarlo o cuando lo necesite, intenta conectarse al servidor, es el que solicita información al servidor.
Ejemplo
Los
sockets orientados a conexion (TCP)
- Sockets están orientado a ristras (stream).
- Permite la conexión por Circuito Virtual.
- Full Duplex.
Los
sockets no orientados a conexión (UDP).
- Las comunicaciones correspondientes tienen la propiedad de conservar los límites de los mensajes enviados.
- En el dominio Internet, el protocolo subyacente es el UDP.
- La transmisión es a nivel de paquetes, donde cada paquete puede seguir una ruta distinta, no garantizándose una recepción secuencial de la información.
Conclusión:
Después
de este trabajo se puede concluir que dentro de todos los protocolos que se habían
aprendido antes (TCP/IP) se pueden crear las conexiones entre ordenadores y que
sin este no se logrará satisfactoriamente. Los sockets son lo más parecido a lo
que se puede decir como una válvula que regula el paso de datos y que gracias a
estos podemos hacer conexiones.
Referencias:
Miguel Rueda Barranco (1996) SOCKETS: COMUNICACIÓN ENTRE
PROCESOS DISTRIBUIDOS
Recuperado el 15/10/17, de
http://www.pablin.com.ar/computer/info/sockets/index.htm
Recuperado el 15/10/17, de
http://www.pablin.com.ar/computer/info/sockets/index.htm
Martín Santana, A. David,Martínez Santana, Luis Ignacio
(2007/2008) COMUNICACIÓN ENTRE PROCESOS SOCKETS
Recuperado el 15/10/17, de
http://sopa.dis.ulpgc.es/ii-dso/leclinux/ipc/sockets/sockets.pdf
Recuperado el 15/10/17, de
http://sopa.dis.ulpgc.es/ii-dso/leclinux/ipc/sockets/sockets.pdf
dandark2000 (2011) Desarrollo aplicaciones distribuidas
sockets
Recuperado el 15/10/17, de
https://es.slideshare.net/dandark2000/desarrollo-aplicaciones-distribuidas-sockets
Recuperado el 15/10/17, de
https://es.slideshare.net/dandark2000/desarrollo-aplicaciones-distribuidas-sockets
Comentarios
Publicar un comentario