¿Cómo describirías la arquitectura cliente-servidor en términos simples?

Para comprender realmente a los clientes y servidores, necesita saber qué es un socket y cómo funciona.

Básicamente, un cliente envía solicitudes a los servidores, y un servidor responde proporcionando un servicio deseado. El servicio puede ser cualquier cosa: proporcionar datos, proporcionar el tiempo de CPU, proporcionar archivos y más.

Tanto el servidor como los clientes contienen un socket. Un socket es un punto final que se ejecuta en la red (y la existencia de un socket significa que hay una conexión de dos dispositivos que se comunican entre sí). Un socket se indica mediante su dirección IP y su número de puerto. Un socket no es la conexión, sino el ENDPOINT de la conexión entre dispositivos.

¿Cuál es la diferencia entre una dirección IP y un puerto? Esta fuente es buena: ¿Diferencia entre el número de puerto y la dirección IP? Básicamente, una dirección IP identifica un dispositivo o computadora específico, pero un número de puerto identifica un programa específico que se ejecuta en ese dispositivo.

Ahora, para describir la arquitectura general del modelo cliente-servidor: TCP es el principal medio de conexión entre servidores y clientes. Inicialmente, un servidor solo espera, escuchando su socket para que un cliente haga una solicitud de conexión.

Un cliente es el que inicia la conexión consultando con un servidor. Si el servidor lo aprueba, se forma una conexión, desde la cual un cliente puede solicitar servicios, y luego el servidor puede proporcionar ese servicio.

Si está más interesado, aquí hay otra gran fuente sobre sockets y redes: http://docs.oracle.com/javase/tu…

Otra gran fuente se basa en la programación de Android: codepath / android_guides

Una arquitectura cliente-servidor es como pedir una pizza para la entrega. El cliente llama al servidor, solicita algo y el servidor lo entrega.