Sockets

 SOCKETS 
Resultado de imagen para socket java


Introducción

La programación y las telecomunicaciones están ligadas en algunos aspectos, si, aunque no lo puedas creer, pero hay un fundamento principal que hace que estas dos áreas tengan algo en particular y son los sockets, para que se pueda entender el porqué de lo anterior, a lo largo de esta documentación se justificara, ya que más que nada es importante saber la aplicación de los sockets, debido a la importancia que tiene en las aplicaciones finales (por ejemplo: juegos) que utiliza un usuario, ya que es de gran importancia saber todo sobre los sockets relacionados a java, modelo tcp/ip y el modelo cliente servidor.

Desarrollo


El origen de los socket tuvo lugar en una variante del sistema operativo Unix conocida como BSD Unix. En la Universidad de Berkeley, en los inicios del Internet, pronto se hizo evidente que los programadores necesitarían un medio sencillo y eficaz para escribir programas capaces de intercomunicarse entre sí. Esta necesidad dio origen a la primera especificación e implementación de sockets.

Los sockets (zócalos, referido a los enchufes de conexión de cables) son mecanismos de comunicación entre programas a través de una red TCP/IP donde dos programas (posiblemente situados en computadoras distintas) pueden intercambiarse cualquier flujo de datos, generalmente de manera fiable y ordenada.

Los sockets proporcionan una comunicación de dos vías, punto a punto entre dos procesos. Los sockets son muy versátiles y son un componente básico de comunicación entre interprocesos e intersistemas.

Un socket es un punto final de comunicación al cual se puede asociar un nombre, de hecho, al establecer una conexión vía Internet estamos utilizando sockets: los sockets realizan la interface entre la aplicación y el protocolo TCP/IP.


Dichos mecanismos pueden tener lugar dentro de la misma máquina o a través de una red. Se usan en forma cliente-servidor: cuando un cliente y un servidor establecen una conexión, lo hacen a través de un socket. Los sockets residen en la capa de sesión.

La capa de sesión se encuentra entre las capas de aplicación y las de comunicación de datos de bajo nivel.
La capa de sesión provee servicios de manejo y control del flujo de datos entre dos ordenadores. Podemos realizar un símil con una llamada telefónica. El teléfono es un interfaz de red y el usuario no requiere conocer los detalles de cómo la voz es transportada.

La capa de aplicacion provee de un servicio ya implementado, es donde el cliente manda sus datos y son enviados a la capa de sesion.

DATAGRAM SOCKETS

Las redes actuales utilizan el packet switching para la transferencia de datos. Los datos se envuelven en paquetes que se transfieren desde un origen a un destino, donde se extraen de uno en uno los datos de uno o más paquetes para reconstruir el mensaje original.

Los nodos que se comunican a través de Internet utilizan principalmente dos protocolos:


  • TCP - Transsmision Control Protocol
  • UDP - (Universal User) Datagram Protocol


El protocolo UDP - (User Universal) Datagram Protocol - se utiliza para comunicaciones en la que no se garantiza una transmisión fiable (reliable). UDP no está orientado a conexión, por lo tanto no garantiza la entrega. UDP envía paquetes de datos independientes, denominados datagramas, desde una aplicación a otra.

El envío de datagramas es similar a enviar una carta a través del servicio postal: El orden de salida no es importante y no está garantizado, y cada mensaje es independiente de cualquier otro.


El API Java para UDP proporciona una abstración del ``paso de mensajes", esto es, la forma más simple de comunicación entre ordenadores. Esto hace posible a un proceso emisor transmitir un único mensaje a un proceso receptor. Los paquetes independientes que contienen esos mensajes se denominan datagramas. En Java, el emisor especifica el destino usando un socket (una referencia indirecta a un puerto particular usada por el proceso receptor en la máquina receptora).

Un datagrama enviado mediante UDP es trasmitido desde un proceso emisor a un proceso receptor sin reconocimiento o recomprobaciones. Si tiene lugar un fallo, el mensaje puede no llegar.
Un datagrama es transmitido entre procesos cuando un proceso lo envía y otro proceso lo recibe.
Cualquier proceso que necesite enviar o recibir mensajes debe en primer lugar crear un socket a un dirección de Internet y a un puerto local. Un servidor enlazará ese socket a un puerto servidor - uno que se hace conocido a los clientes de manera que puedan enviar mensajes al mismo. Un cliente enlaza su socket a cualquier puerto local libre. El método receptor devuelve la dirección de Internet y el puerto del emisor, además del mensaje, permitiendo a los receptores enviar una respuesta.

Las clases Java para establecer comunicaciones mediante datagramas son: DatagramPacket y DatagramSocket.


Conclusión:


Los sockets son básicamente formas en las que podemos interconectar 2 (o mas) programas mediante el uso de la internet. En java se utilizan para poder crear conexiones utilizando basicamente una IP/hostname y un puerto para establecer la conexión. Para aprender podemos utilizarla para conectar 2 programas por medio de Internet.
Son de las mejores formas de crear un sistema distribuido eficazmente. Y aun mejor, los sockets datagrama permiten un envio de datos más rapido, que puede ser utlizado por ejemplo en transmisiones en vivo, donde no importa si el cliente recibe el dato.
Sin, duda los sockets son una buena herramienta de comunicación.


Comentarios

Entradas populares de este blog

Sistemas Distribuidos