Sockest

  • 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
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
dandark2000 (2011) Desarrollo aplicaciones distribuidas sockets
Recuperado el 15/10/17, de
https://es.slideshare.net/dandark2000/desarrollo-aplicaciones-distribuidas-sockets


Comentarios