Como dice el título, me gustaría escribir un servidor HTTP. Mi pregunta es esta, ¿cómo hago esto? Sé que esto suena MUY general y demasiado "alto nivel", pero hay un método para mi locura. Una respuesta a esta pregunta debería ser, creo, agnóstico del lenguaje; es decir, no importa qué lenguaje use (p. ej., C, C ++, Java, etc.) la respuesta debe ser la misma. Tengo una idea general de cómo se supone que esto funciona:
- Abra un zócalo en el puerto 80.
- Espere a que un cliente haga una solicitud.
- Lea la solicitud (es decir, esta persona quiere la página "contact-us.html").
- Busque y lea "contact-us.html".
- Envíe un encabezado html, luego envíe el contenido de "contact-us.html"
- Hecho
Como dije, creo que este es el proceso, pero no estoy 100% seguro. Esto me lleva al corazón de mi pregunta. ¿Cómo o dónde encuentra una persona esta información?
¿Qué sucede si no quisiera escribir solo un servidor HTTP, y si quisiera escribir un servidor FTP, un servidor de chat, un visor de imágenes, etc.? ¿Cómo descubre una persona los pasos / procesos exactos necesarios para crear un servidor HTTP que funcione?
Un compañero de trabajo me habló del encabezado html, por lo que NUNCA habría sabido esto sin él. También dijo algo sobre entregar cada solicitud a un nuevo hilo. ¿Hay algún gran libro sobre cómo funcionan las cosas? ¿Hay algún manual de lo que se necesita para ser un servidor HTTP?
Traté de buscar en Google "cómo funciona un servidor HTTP", pero las únicas respuestas que pude encontrar estaban orientadas a su Joe promedio, y no a una persona que desea programar un servidor HTTP.