Miki TFC - http://www.miki.cat
 

Memòria del TFC

Creació del nucli d'un servidor Web

XicHttpd

Miquel Fontanals Rofes

  David Carrera Pérez

  9 de Desembre del 2003


Dedicatòria

Dedico aquest projecte a la meva família per el seu suport incondicional.

Sumari
Estructura i contingut de la memòria
1. Conceptes teòrics.
1.1. Introducció
1.2. Una mica d'història
1.2.1. HTTP
1.2.2. Servidors web (Apache)
1.2.3. Panorama actual
1.3. El protocol HTTP
1.3.1. Introducció
1.3.2. Etapes d'una transacció HTTP
1.3.3. Estructura dels missatges HTTP
1.3.4. Descripció de les comandes
1.3.5. Les Capçaleres
1.3.6. Codis d'estat del servidor
1.3.7. Notes sobre la cau de pàgines i els servidors Proxy
2. Anàlisi i Disseny del servidor Web
2.1. Anàlisi de requisits
2.1.1. Requisits del servidor
2.1.2. Funcionalitats addicionals
2.1.3. Anàlisi
2.2. Disseny del servidor Web
2.2.1. Tecnologies
2.2.2. Mòduls
3. Implementació
3.1. Introducció
3.2. Fases de la implementació
3.2.1. Fase 1
3.2.2. Fase 2
3.2.3. Fase 3
3.3. Jocs de Proves i anàlisi de rendiment
3.3.1. Entorn de treball
3.3.2. Proves bàsiques
3.3.3. Proves de rendiment
4. Conclusions
4.1. Conclusions
4.2. Agraiments
Bibliografia
A. Instruccions de compilació i instal·lació del XicHttpd
B. Llistat de Servidors Web
C. Descàrregues
Índex de taules
1-1. Codis d'estat del servidor HTTP
3-1. Errors possibles del XicHttpd (errors.h)
3-2. XicHttpd: 5 threads estàtics, 30 segons de timeout
3-3. XicHttpd: 50 threads estàtics, 15 segons de timeout
3-4. XicHttpd: 50 threads estàtics, 200 clients a 56 Kbps
Índex de figures
1-1. Exemple client/servidor
1-2. Ús dels servidors web
2-1. Diagrama de flux del servidor Web
2-2. Diagrama de flux de cada fil d'execució
3-1. Procés CGI
3-2. Captura del JMeter
3-3. Captura del Web Stress
3-4. Exemple del GKrellM en plena prova "TOT"
Índex d'exemples
1-1. Exemple de transacció HTTP
3-1. Exemple d'ús de la crida stat()
3-2. Exemple de creació d'un thread
3-3. Exemple d'algunes comandes bàsiques del gdb
3-4. Exemple d'ús simple de l'strace
3-5. Exemple de sortida de l'strace
3-6. Ignorar el signal SIGPIPE en les crides recv i send
3-7. Exemple de creació, bloqueig i activació de threads
3-8. Exemple de compressió i enviament en gzip utilitzant les llibreries zlib
3-9. Pseudo-codi de l'execució de CGI
3-10. Exemple de log d'accessos
3-11. Exemple de redirecció de l'stderr a un fitxer
3-12. Exemple de log d'errors
3-13. Exemple de canvi del nivell de privilegis[5]
3-14. Exemple de com convertir un procés en daemon
3-15. Exemple del top en plena prova "TOT"
3-16. Exemple d'ús del ps per comptar el nombre de threads
3-17. Exemple del vmstat en plena prova "TOT"