Sesion5: Cliente Servidor - mariaPaula0618/Redes---Comunicaciones GitHub Wiki

Arquitectura Cliente/Servidor

Cliente--> pc con interfaz grafica

Servidor --> Bases de datos y/o aplicaciones

Cliente y Servidor --> conexion a traves de red --> Canal de comunicación.

Proceso cliente:

  • Cliente: Equipos livianos. --> Realiza solicitudes (Solicita servicios). Este proceso es activo ya que de aquí parte toda la interacción. (inicia ejecución) actuando como front-end

Proceso Servidor:

  • Servidor (Nodo): Es visto como la maquina poderosa con mayores recursos de hardware. --> Responde solicitudes (Provee servicios).

Este proceso es pasivo ya que solo se encarga de responder a la solicitud hecha por el cliente ademas se ejecuta en background (sin establecer interfaz). Actuando como back-end.

--> (Front-end y Back-end son términos utilizados para indicar cual es el usuario inicial de las interfaces)

Algunos sistemas Cliente/Servidor:

  • Servidores de impresion (impresoras)
  • Servidores de archivos (discos duros)
  • Servidores de bases de datos (bases de datos)
  • Servidores groupware (trabajo en grupo simultaneo)

TIPOS ARQUITECTURA CLIENTE/SERVIDOR

Dos niveles

Comunicaciones directa entre cliente y servidor --> consta de dos computadores. Usada en ambientes pequeños sin proyección a crecer.

Tres niveles

Existe un agente entre cliente y servidor el cual esta dividido en 3 capas

El agente actua como un Monitor de transacciones y se encarga de no permitir la saturación del servidor ademas de proveer respuesta a la solicitudes. Tiene como ventajas en no afectar al cliente con cambios como el idioma del servidor o con el Back-end pero se debe tener en constante administración el trafico de datos y tolerancia a fallas.

N-niveles

Básicamente los servicios son prestados por diferentes servidores, lo cual hace que al cliente hacer el llamado empieza la interacción entre diferentes servidores hasta el cliente nuevamente. Cuenta con muchos servidores pero el cliente solo se comunica con un servidor.

VENTAJAS Y DESVENTAJAS CLIENTE/SERVIDOR

Ventajas

  • Sistema abierto--> Manejar datos a través de la red.
  • Heterogeneidad-->
  • Interoperabilidad--> habilidad de dos o más sistemas o componentes para intercambiar información y utilizar la información intercambiada (cliente/servidor).
  • Escalabilidad--> La transformación de elementos no afecta otros.
  • Adaptabilidad--> Compatible con nuevas tecnologías.

Desventajas

  • No es correcto para algunas aplicaciones.
  • En algunas ocasiones es mas costoso que otros sistemas.

MECANISMOS INVOLUCRADOS CLIENTE/SERVIDOR

  • Dirección IP: para conocer origen y destino de los mensajes.
  • El proceso especifico al cual va dirigido el mensaje (Se necesita conocer el numero puerto).
  • Confiabilidad de la comunicación (Selección de protocolo de transporte).
  • Establecer canal de comunicación basándose en los protocolos de transporte.
  • Comunicación bi o multidireccional. (concurrencia).

PUERTO

Es un numero entre 0 y 65.536, el cual permite identificar un proceso en un computador.

  • Asignación de puertos universal --> Numero específicos a procesos frecuentemente utilizados, estos puertos se conocen como "puertos buen conocidos" (wel known ports). Ejemplo:

  • Asignación de puertos dinámica --> el emisor solicita al receptor el puerto por el cual se puede comunicar, donde hay una autoridad central que asigna dicho numero de puerto al proceso requerido.

SOCKET

Es un conector de red. Dos programas (posiblemente situados en computadoras distintas) pueden intercambiar cualquier flujo de datos, generalmente de manera fiable y ordenada.

las aplicaciones defininen el socket identificando:

  • Que un programa sea capaz de localizar al otro. Dirección IP.
  • Numero de Puerto en uso, que identifican a un programa dentro de cada computadora
  • Tipo de protocolo usado por la aplicación (TCP ó UDP).

Nota: Un socket es un proceso o hilo existente en la máquina cliente por tanto el proceso servidor debe ser un proceso miltihilo, para poder responderle a múltiples clientes.

Socket en el lado del servidor Espera en linea hasta que el cliente realice alguna petición. (Socket enlazado a un puerto especifico).

Socket en el lado del cliente Se conoce el host y numero de puerto del servidor. para establecer una conexión, El cliente se reúne con el servidor mediante el nombre del computador donde se esta ejecutando y el numero de puerto.

Implementanción en JAVA

Socket --> Conexión de red TCP

Clases tipo Socket:

  • Socket --> para clientes
  • ServerSocket --> para servidores

Constructores -->

  • Socket (String equipo, int numeroPuerto) throws IOException
  • Socket (InetAddress direccion, int numeroPuerto) throws IOException
  • Socket (String equipo, int numeroPuerto, InetAddress direccionLocal, int puerto local) throws IOException
  • Socket (InetAddress direccion, int puerto, InetAddress direccionLocal, int puerto local) throws IOException

Metodos de instancia -->

Crear un Socket es estar en el punto inicial de la comunicación. --> Métodos para establecer flujos de datos C/S.

  • InputStream getInputStream()throws IOException --> flujo de datos (TCP)
  • OutputStream getOutputStream() throws IOException --> flujo de datos (TCP)
  • void close() --> cierra el Socket y libera los recursos de la red.
  • InetAddress getInetAddress() --> obetener ip del equipo al cual esta conectado el Socket
  • int getPort() --> Numero del puerto al cual esta conectado el socket
  • InetAddress getLocalAddress()--> direccion local a la cual esta unida el socket