LOS SOCKETS

Introducción
En el siguiente ensayo estudiaremos una de las herramientas que son vitales a la hora de poder comunicarnos entre ordenadores. Sabemos que para tener una conectividad, por lo menos del lado físico tenemos que tener un medio para poder tener la conexión, ya sea cableado, inalámbricamente, etc. Sin embargo, para llegar a tener la comunicación, necesitamos conectarla de una manera lógica que nos garantice el intercambio de datos entre ordenadores, y como ayuda tenemos lo que se le llaman Sockets.

Resultado de imagen para sockets conexion

¿Qué es un Socket?
Un Socket de red es un punto final en un flujo de comunicación entre dos programas que se ejecutan en una red, en otras palabras, un socket es el canal de comunicación por el que fluyen los datos.

Los Sockets son creados y usados con un conjunto de solicitudes de programación o “Llamadas de función” algunas veces llamadas sockets de interfaz de programación de aplicaciones (API). (TechTarget, 2017)

Los Sockets también se pueden usar para la comunicación entre procesos dentro de la misma computadora.

Cuando se declaran los sockets los destinos de los mensajes se especifican como direcciones de socket; cada dirección de socket es un identificador de comunicación que consta de un número de puerto y una dirección de Internet.

Las operaciones de IPC (comunicación entre procesos) se basan en pares de socket, cada uno perteneciente a un proceso de comunicación, ya sea de emisor o de receptor. El IPC se realiza intercambiando algunos datos mediante la transmisión de esos datos en un mensaje entre un socket en un proceso y otro socket en otro proceso. Cuando se envían mensajes, los mensajes se ponen en cola en el socket emisor hasta que el protocolo de red subyacente los haya transmitido. Cuando llegan, los mensajes se ponen en cola en el socket receptor hasta que el proceso de recepción realiza las llamadas necesarias para recibirlos.

Resultado de imagen para sockets java

Hay dos protocolos de comunicación que uno puede usar para la programación de sockets: Datagram Communication (comunicación de datagramas) y (Stream Communication) comunicación de flujo.

Comunicación de Datagramas:

Antes de explicar esta conexión veamos que es un datagrama:

Datagrama: Un datagrama es una unidad de transferencia asociada con redes en donde los datos se transmiten de la fuente al destino sin garantía de entrega y estos se dividen con frecuencia en fragmentos más pequeños y se transmiten sin una ruta definida o un pedido de entrega garantizado. (Techopedia Inc., 2017)

El protocolo de comunicación de datagramas, conocido como UDP (protocolo de datagramas de usuario), es un protocolo sin conexión, lo que significa que cada vez que envía datagramas, también debe enviar el descriptor de socket local y la dirección de la toma receptora. Como puede ver, se deben enviar datos adicionales cada vez que se realiza una comunicación.

Comunicación de flujo: 

El protocolo de comunicación de flujo se conoce como TCP (protocolo de control de transferencia). A diferencia de UDP, TCP es un protocolo orientado a la conexión. Para hacer la comunicación sobre el protocolo TCP, primero debe establecerse una conexión entre el par de sockets. Mientras uno de los sockets escucha una solicitud de conexión (servidor), el otro solicita una conexión (cliente). Una vez que se han conectado dos sockets, se pueden usar para transmitir datos en ambas direcciones (o en cualquiera de las dos). (Mahmoud, 2017)

Ventajas de UDP
  • Paquetes más pequeños, por ejemplo el header de UDP es de 8.
  • No necesita crear una conexión antes de enviar datos.
  • Más control sobre cuándo se envían los datos.

Desventajas de UDP
  • Tiene una primitiva detección de errores, ya que este solo hace una suma de comprobación de los 16 bits que muchas veces no es de confianza.
  • Cuando hay un segmento corrupto, UDP no tratara de recuperarlo, sino solo lo eliminara y solo manda un error a la aplicación para que este lo trate de alguna manera.
  • Si un paquete se pierde, no lo reenvía.
  • No garantiza que los paquetes lleguen al mismo orden con el que fueron enviados
  • No hay control cuando llega a ver congestión, ya que si llega a ver congestión, este aún intenta mandar todos los paquetes

Ventajas TCP/IP
  • Cuando se envía un paquete, el receptor confirma que se le entregó el paquete.
  • Si se pierde un paquete, este lo reenvía.
  • Como los segmentos están numerados, estos llegan en el mismo orden con el que fueron enviados.
  • Si hay congestión, retrasa los demás paquetes para evitar la pérdida de paquetes.

Desventajas TCP/IP
  • Su header es más grande ya que tiene 20 bytes.
  • Muchas veces los datos no llegan inmediatamente o tardan demasiado.
  • Tiende a tener una gran sobrecarga, efecto colateral de la retransmisión de paquetes. (PieterExplainsTech, 2013)

Conclusión
Podemos ver que tenemos que elegir alguna de las dos formas de comunicarse, y normalmente la pregunta que todos se hacen es “¿Cuál es mejor?”. La respuesta es que todo depende de qué tipo de aplicación se esté construyendo, ya que para unos les convendrá usar sockets datagrama y a otros usar sockets stream. Por ejemplo para hacer una comunicación de texto, en stream no habrá problema, pero con datagramas, puede que la información no esté en orden o simplemente es más fácil que algo se corrompa. Sin embargo en servicios de streaming los desarrolladores prefieren usar datagramas, ya que se evita la sobrecarga, es inmediato y se puede enmascarar la perdida de paquetes. Por ello debemos de ser inteligentes y utilizar el que más nos convenga.

Bibliografía

Mahmoud, Q. H. (15 de 10 de 2017). IDG Communications Inc. Obtenido de Java World: https://www.javaworld.com
Techopedia Inc. (14 de 10 de 2017). Datagram. Obtenido de Technopedia: https://www.techopedia.com
TechTarget. (14 de 10 de 2017). Network Socket. Obtenido de TechTarget | WhatIs.com: http://whatis.techtarget.com

PieterExplainsTech (25 de 07 de 2013). UDP and TCP: Comparison of Transport Protocols [Archivo de video]. Obtenido de https://www.youtube.com/watch?v=Vdc8TCESIg8

Comentarios

Entradas populares