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, denominadosclientes
. - 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.