Tema 4. Programación en red

Hasta ahora hemos visto como varias aplicaciones pueden colaborar entre sí para realizar una tarea de forma conjunta (multiproceso) o bien cómo un mismo programa puede dividir una tarea en partes que se ejecuten de forma concurrente y simultánea (multihilo). Todo esto ocurre dentro de una máquina, bien sea en monoprocesador o multiprocesador, controlados por un mismo SO y compartiendo habitualmente parte de la memoria y de la E/S.

En este tema vamos a ir un paso más allá, vamos a crear aplicaciones que funcionen en entornos distribuidos. Volvemos a tener múltiples procesos en ejecución, pero a diferencia de lo que vimos en el tema 2, en el que los procesos tenían una relación padre-hijo (lanzador-lanzado), ahora los procesos se van a ejecutar en sistemas independientes y se comunicarán a través de la red usando protocolos de comunicación.

Podemos encontrar básicamente dos modelos de sistemas distribuidos:

  • Cliente / Servidor: un proceso, denominado servidor, ofrece servicios a uno o más procesos, denominados clientes.
  • Entre iguales (P2P): todos los procesos colaboran de forma similar y con un mismo fin, no existiendo una especialización ni diferenciación entre ellos..

Procesos e Hilos

Para realizar un programa distribuido en el que se pueda realizar una conexión y una comunicación a través de una red de ordenadores no partimos de cero.

La programación en red está fuertemente ligada a la programación multiproceso. Principalmente en la forma de comunicación que ya vimos entre procesos.

Por otro lado, la especialización y el servicio que ofrece un servidor, de forma simultánea a varios clientes, está basada en la división del trabajo en hilos.

Por todo lo comentado, todos los conceptos y conocimientos adquiridos hasta ahora nos sirven de base para avanzar en los contenidos de este tema.

Objetivos

Objetivos de esta unidad:

  • Conocer el protocolo TCP/IP, las direcciones usadas en cada capa y y los protocolos asociados.
  • Conocer las clases que permiten trabajar con direcciones y nombres de servidores.
  • Aprender las características básicas de los protocolos TCP y UDP.
  • Desarrollar aplicaciones básicas que se comuniquen usando el protocolo TCP.
  • Desarrollar aplicaciones básicas que se comuniquen usando el protocolo UDP.
  • Diseñar y programar protocolos para la comunicación entre aplicaciones distribuidas.
  • Coordinar la ejecución de múltiples clientes en servidores multihilo.
Última actualización:
Editores: Vicente Martínez