Repositorio para el control de versiones de la Tarea 3 del curso Principios de Sistemas Operativos.
Autor: René Sánchez Torres y Jose Andrés Vargas Serrano
Carné: 2020051805 y 2019211290
Institución: Tecnológico de Costa Rica
En la actualidad, los servidores web enfrentan importantes retos relacionados con la escalabilidad y la administración eficiente de sus recursos. A pesar de que muchos de estos servidores están subutilizados durante la mayor parte del tiempo, existen momentos de alta demanda como la venta de entradas para eventos masivos donde estos sistemas colapsan al no poder gestionar múltiples conexiones simultáneamente.
La tarea propuesta busca simular este escenario mediante la construcción de un WebServer que utilice el protocolo HTTP 1.1 y sea capaz de responder a solicitudes utilizando: pre-threaded. Estos modelos permiten manejar múltiples conexiones mediante la creación anticipada de hilos. Además, se desarrollará un cliente HTTP capaz de interactuar con este servidor, y una herramienta de stress testing con el fin de saturarlo y evaluar su comportamiento bajo carga extrema, simulando un ataque.
WEB SERVER
gcc prethreaded.c -o prethread-webserver -lpthreadHTTP CLIENT
gcc httpclient.c -o httpclient -lcurlWEB SERVER
-n 100: Define el número de hilos pre cargados
./prethread-webserver -n 60 -w ./www -p 8080METODOS DE HTTP
GET
curl -v http://localhost:8080/index.htmlcurl -v http://localhost:8080/api/data.jsoncurl -v http://localhost:8080/directorio_sin_indexHEAD
curl -I http://localhost:8080/index.htmlPOST
curl -X POST -H "Content-Length: 23" -d "Contenido inicial del archivo" http://localhost:8080/miarchivo.txt -vPUT
echo "Contenido de prueba" > prueba.txtcurl PUT prueba.txt http://localhost:8080/prueba.txt -vDELETE
curl -X DELETE http://localhost:8080/imagen.jpg -vHTTP CLIENT
./httpclient -u http://localhost:8080/imagen.jpg -o imagenDescargada.jpg./httpclient -u http://localhost:8080STRESS CLIENT
-n 100: Define el número de hilos
./httpclient: Ruta al ejecutable del cliente en C
El resto son parámetros para el cliente
python3 stressclient.py -n 10 -u http://localhost:8080```