Ir al contenido principal

Sitemas distribuidos: Socket Stream

Sistemas Distribuidos


Introducción
En los sistemas operativos computacionales, existen varias formas de comunicarse de computadora a computadora, y una de ellas es por medio del Socket Stream. Esta herramienta es usualmente implementada sobre el modelo TCP y así las aplicaciones se pueden ejecutaren cualquier red. En el desarrollo hablaremos con mas profundidad acerca del API de Socket Stream.
Desarrollo
Diferencias entre Socket Datagrama y Socket Stream
En el API de Socket Datagrama se basa en el intercambio de unidades discretas de datos, es decir, datagramas, para poder recibir y enviar infomación de una computadora a otra. El Socket Datagrama utilizaba UDP, y pueden o no estár orientados a conexión
Por otro lado, el Socket en modo Stream no utiliza Datgramas para poder comunicarese, sino que proporciona un modelo de transferencia de datos basado en la E/S en modo stream, es decir, proporciona sólo comunicaciones orientadas a conexión.

¿Cómo funciona el Socket Stream?
En un Socket Stream los datos se transfieren utilizando el concepto de un flujo de datos continuo que fluye desde una fuente a un destino (también llamado sumidero). Los datos se insertan, o escriben, dentro de un flujo por un proceso que controla la fuente y los datos se extraen, o leen, del flujo por un proceso asociado al destino.

Pora poder mandar mensajes, las unidades de datos escritas y leídas no necesitan coincidir. Por ejemplo, 100 bytes de datos escritos utilizando una operación pueden leerse usando una operación de lectura de 20 bytes, seguida por otra operación read de 80 bytes.

API de Socket Stream
El API de sockets en modo stream es una extensión del modelo de E/S en modo stream. Usando el API, cada uno de los dos procesos crea individualmente un socket en modo stream. A continuación, se forma una conexión entre los sockets. Los datos se escriben, como un flujo de caracteres, dentro del socket del emisor y, a continuación, el receptor puede leerlos a través de su socket.

Clases utilizadas en Java
En Java, las clases ServerSocket y Socket proporcionan el API de sockets en modo stream. La sintaxis del API está estrechamente vinculada con el paradigma cliente-servidor. Hay dos tipos de sockets en el API en modo stream los cuales son:
-Clase ServerSocket:
Esta clase se encarga de proporcionar el primer tipo de socket y sirve para aceptar conexiones.
Metodos principales y constructores
ServerSocket(int puerto): Crea un socket de servidor en un puerto especificado.
Socket accept() throws IOException: Espera que se solicite una conexión a este socket y la acepta. El método bloquea hasta que se haga una conexión.
void close() throws IOException: Cierra este socket.
void setSoTimeont(int plazo) throws SocketException: Fija un plazo máximo de tiempo de espera (en milisegundos), de manera que una llamada accept() sobre este socket bloquee durante sólo esta cantidad de tiempo. Si el plazo expira, se activa una excepcion java.io.interruptedlOException

-Clase Socket:
Se encarga de proporcionar el otro tipo de socket que permite intercambiar datos.
Metodos principales y constructores
Socket(InetAddress dirección, int puerto): Crea un socket stream y lo conecta al número de puerto y la direcdón IP especificados.
void close() throws IOException: Cierra este socket.
InputStream getlnputStream() throws IOException: Devuelve un flujo de entrada para que se puedan leer los datos de este socket.
OutputStream getOutputStream() throws IOException: Devuelve un flujo de salida para que se puedan escribir los datos en este socket.
Void setSoTimeout(int plazo) throws SocketException: Fija un periodo máximo de bloqueo de manera que una llamada read() en el InputStream asociado con este socket bloquee sólo durante esta cantidad de tiempo. Si el plazo de tiempo expira, se activa una excepcion Java.io.InterruptedIOException().
Proceso Servidor
Para llevar a cabo el proceso servidor, se establece un ServerSocket y después se queda a la espera de las peticiones de conexión de otros procesos. Las peticiones de conexión se aceptan de una en una. A través del Socket, el proceso servidor puede leer y/o escribir del flujo de datos. Cuando se termina la sesión de comunicación entre los dos procesos, se cierra el Socket, y el servidor está preparado para aceptar la próxima petición de conexión a través del ServerSocket.
Proceso Cliente
Para llevar a cabo este proceso un cliente debe de crea un Socket , a continuación, a través del socket del servidor, solicita una conexión al servidor. Una vez que se acepta la petición, el socket del cliente se conecta al Socket del servidor de manera que el cliente pueda pasar a leer y/o escribir del flujo de datos. Cuando se completa la sesión de comunicación entre los dos procesos, se cierran los sockets de datos.

Conclusión
En conclusión, los sockets stream ofrecen un servicio orientado a conexión, donde los datos se transfieren como un flujo continuo, sin encuadrarlos en registros o bloques. Este tipo de socket se basa en el protocolo TCP, que es un protocolo orientado a conexión. Esto implica que antes de transmitir información hay que establecer una conexión entre los dos sockets. Mientras uno de los sockets atiende peticiones de conexión (servidor), el otro solicita la conexión (cliente). Una vez que los dos sockets están conectados, ya se puede transmitir datos en ambas direcciones. El protocolo incorpora de forma transparente al programador la corrección de errores. Es decir, si detecta que parte de la información no llegó a su destino correctamente, esta volverá a ser trasmitida. Además, no limita el tamaño máximo de información a transmitir.

Referencias bibliográficas:
1. Liu. M. (2004). Computación Distribuida: Fundamentos y Aplicaciones. Madrid: PEARSON EDUCACIÓN.

Comentarios

Entradas más populares de este blog

Conclusiones: Soporte de Software, Mantenimiento de Software y Soporte Técnico

  Conclusiones El software es parte indispensable de nuestra vida cotidiana, ya que lo utilizamos en todas partes y es indispensable para todos. Empresas y Organizaciones suelen utilizar software para poder automatizar y mejorar la producción. En la actualidad es habitual que el software de soporte avanzado permita a los técnicos la motorización continua de todos los dispositivos de la organización, la verificación remota del correcto funcionamiento, la obtención de parámetros de funcionamiento que permiten adelantarse a posibles errores así como la posibilidad de tomar el control remoto de ordenadores y servidores sin la necesidad de desplazarse para solucionar el problema. Otro aspecto a tomar en cuenta es el servicio de mantenimiento de software, que es el proceso de mejorar y optimizar el software desplegado, así como también remediar los defectos. Y por ultimo el soporte técnico es un rango de servicios por medio del cual se proporciona asistencia a los usuarios al tener ...

RMI

  Introducción RMI ("Remote Method Invocation") es un mecanismo para invocar/ejecutar procedimientos remotos en computadoras o servidores distribuidos. La gran mayoría de los sistemas empresariales hoy en día requieren de esta funcionalidad , esto se debe tanto a distancias geográficas como a requerimientos de computo, ya que seria iluso pensar que las necesidades de computo de TODA una empresa fueran satisfechas por una sola computadora y/o servidor. A continuacion hablaremos mas a detalle sobre lo que ofrece RMI. . Desarrollo ¿Qué es RMI? RMI ("Remote Method Invocation") es el mecanismo ofrecido en Java que permite a un procedimiento poder ser invocado remotamente. Una de las ventajas al diseñar un procedimiento con RMI es interoperabilidad , ya que RMI forma parte de todo JDK , por ende, cualquier plataforma que tenga acceso a un JDK también tendrá acceso a estos procedimientos. RMI se caracteriza por la facilidad de su uso en la programación por estar...

Seguridad: Kerberos

Seguridad web y aplicaciones Introducción La seguridad e integridad de sistemas dentro de una red puede ser complicada. Puede ocupar el tiempo de varios administradores de sistemas sólo para mantener la pista de cuáles servicios se estan ejecutando en una red y la manera en que estos servicios son usados. Más aún, la autenticación de los usuarios a los servicios de red puede mostrarse peligrosa cuando el método utilizado por el protocolo es inseguro, como se evidencia por la transferencia de contraseñas sin encriptar sobre la red bajo los protocolos FTP y Telnet. Kerberos es una forma eliminar la necesidad deaquellos protocolos que permiten métodos de autenticación inseguros, y de esta forma mejorar la seguridad general de la red. . Desarrollo ¿Qué es Kerberos? El servicio Kerberos es una arquitectura cliente-servidor que proporciona seguridad a las transacciones en las redes. El servicio ofrece una sólida autenticación de usuario y también integridad y privacidad. La auten...