¿Qué recursos puedo usar para aprender a construir desde cero un servidor web multiproceso?

Antes que nada, no hagas esto a menos que sea un ejercicio de aprendizaje. Por favor. Los servidores web (y las bibliotecas HTTP) tienen tanto trabajo puesto que no va a mejorar a partir de cero.

Dicho esto, si debe hacerlo, necesitará:

  • Un lenguaje de programación (duh).
  • La API de socket del idioma de elección, generalmente, pero no siempre, basada en sockets de Berkeley.
  • La API de subprocesos del lenguaje de elección, generalmente basada en subprocesos POSIX.
  • El protocolo de transferencia de hipertexto: especificación HTTP / 1.1. O el Protocolo de transferencia de hipertexto versión 2 (HTTP / 2), si eso es lo tuyo.

Realmente, eso es todo. Tendrá que decidir sobre su propio modelo de subprocesos (por solicitud sería obvio, pero no necesario), y descubrir cómo implementar todas las partes importantes (para usted) de HTTP, pero esas son las cosas que necesita saber.

Suponiendo que es solo un ejercicio, debería ser capaz de construir algo razonablemente funcional en el transcurso de un día, pero no espere desafiar a Apache o proyectos similares sin años de arduo trabajo y una comunidad dedicada que sería mucho mejor empleada para mejorar un proyecto existente.

Construir un servidor web multiproceso es una excelente manera de aprender acerca de la API básica de subprocesos. Para tener una gran experiencia de aprendizaje, le recomendaría implementarlo en C usando la programación de hilos Posix.
Recursos relevantes:
Programación de hilos POSIX
Tutorial de Linux: hilos POSIX
Página en wisc.edu
El último enlace es una asignación de servidor web multiproceso. Proporciona información para implementar un servidor web básico multiproceso.

Implemente un servicio oculto Tor (ya sabe, el servidor web apunta a localhost, y no pierde ninguna información que pueda revelar una dirección IP u otras configuraciones). Silkroad tuvo un pequeño error de configuración y el resto es historia

More Interesting

¿Cuáles son algunos consejos o trucos que ayudan a lograr un equipo de desarrollo de software remoto o distribuido altamente productivo?

¿Cuáles son los problemas comunes o el comportamiento impredecible que enfrentan los desarrolladores al desarrollar o entregar códigos de software multiproceso o concurrentes?

Soy un desarrollador de software aspirante! ¿Cuáles son las cosas que te tomaron un tiempo en resolver pero que son fundamentales para el éxito de un programador?

¿Cuáles son las horas y días de trabajo habituales para un desarrollador de software en el Área de la Bahía?

¿Por qué todavía trabajas como desarrollador de software si puedes hacer mucho más intercambiando bitcoins y criptomonedas?

Como desarrollador de software que no es bueno en programación, ¿cómo me escondo en una empresa de tecnología y no me atrapan?

¿Cuáles son algunos consejos para estudiantes de primer año que están comenzando sus carreras en el desarrollo de software?

¿Qué se debe esperar con una carrera en desarrollo de software?

¿Cuáles son las mejores compañías de las que un desarrollador de Java debería comenzar como nuevo?

¿Por qué se considera bueno ser un desarrollador de software obstinado?

¿Cuáles son algunos de los chistes interesantes relacionados con el desarrollo de software y las pruebas de software?

Cuando las grandes compañías como HP, Wipro, TCS, etc., contratan a un desarrollador o probador de software, ¿ponen a los alumnos directamente en el proyecto después de la capacitación? ¿Harán todos ellos exactamente el trabajo de desarrollo, prueba o soporte?

Cómo comenzar a convertirse en un desarrollador de aplicaciones o software exitoso

¿Qué te hará salir de una entrevista de desarrollo de software?

Programadores o desarrolladores de software de Quora, ¿le resultó fácil o difícil aprender su primer idioma?