Servidores
Tipos de servidores
Un servidor es un sistema que proporciona información y servicios a otros dispositivos denominados clientes. Dependiendo de los datos que se quieran ofrecer, un servidor se comunica a través de distintos métodos y protocolos. Las formas más comunes son:
- A través de una Página Web (HTTP/HTTPS). Un servidor web (como Apache, Nginx o Flask) responde a las solicitudes de los usuarios con archivos HTML, CSS y JavaScript. Los usuarios acceden al contenido a través de un navegador web. Los clientes (navegadores por lo gneeral) realizan peticiones mediante métodos HTTP como GET, POST, PUT, DELETE.
- Mediante una API (REST, GraphQL, SOAP). Un servidor expone una API que devuelve datos en formatos como JSON o XML. Los clientes (apps, navegadores, otros servidores) realizan peticiones mediante métodos HTTP como GET, POST, PUT, DELETE.
- Con WebSockets para Comunicación en Tiempo Real. A diferencia de HTTP, WebSockets permite una conexión bidireccional persistente. Se usa en aplicaciones como chats o juegos online.
- Por Archivos Descargables (FTP, SFTP, HTTP). Un servidor de archivos permite que los usuarios descarguen contenido como documentos, imágenes o software. FTP y SFTP son protocolos comunes para la transferencia de archivos.
- Streaming de Datos (RTSP, HLS, WebRTC). Para la transmisión de vídeo y audio en tiempo real, se usan protocolos como RTSP, HLS y WebRTC. RTSP se utiliza en cámaras de seguridad en vivo. HLS se emplea en plataformas como YouTube y Twitch. WebRTC permite videollamadas en el navegador sin necesidad de plugins.
- Correos Electrónicos (SMTP, IMAP, POP3). Los servidores de correo como Postfix o Exim permiten el envío y recepción de correos electrónicos. SMTP se usa para el envío de correos, mientras que IMAP/POP3 se usan para recibirlos.
- Por Bases de Datos Remotas (SQL, NoSQL). Servidores como MySQL, PostgreSQL o MongoDB permiten consultas de datos desde clientes remotos. Se utiliza en aplicaciones web que necesitan almacenar y recuperar datos estructurados o no estructurados.
- Por Redes Peer-to-Peer (P2P, Torrent, Blockchain). En lugar de depender de un único servidor, los datos se distribuyen entre múltiples nodos. Torrent permiten descargas descentralizadas. Blockchain se usa para almacenamiento de datos en criptomonedas y contratos inteligentes.
En esta asignatura desarrollaremos un servidor web que utilizará el protocolo HTTP para servir páginas. Además, este servidor gestionará la entrega de archivos estáticos, como imágenes, a través del mismo protocolo. También estableceremos una conexión con un servidor de bases de datos, empleando los protocolos adecuados para la comunicación. Para ello usaremos un framework de Python llamado Flask.