Como o título diz, eu gostaria de escrever um servidor HTTP. Minha pergunta é esta, como faço isso? Eu sei que isso soa muito geral e muito "alto nível", mas existe um método para a minha loucura. Uma resposta a essa pergunta deve ser, acredito, independente da linguagem; significando, não importa qual idioma eu use (por exemplo, C, C ++, Java etc.), a resposta deve ser a mesma. Eu tenho uma idéia geral de como isso deve funcionar:
- Abra um soquete na porta 80.
- Aguarde um cliente fazer uma solicitação.
- Leia a solicitação (ou seja, essa pessoa deseja a página "contact-us.html").
- Encontre e leia "contact-us.html".
- Envie um cabeçalho html e envie o conteúdo de "contact-us.html"
- Feito
Como eu disse, acredito que esse seja o processo, mas não tenho 100% de certeza. Isso me leva ao cerne da minha pergunta. Como ou onde uma pessoa encontra essas informações?
E se eu não quisesse escrever apenas um servidor HTTP, e se eu quisesse escrever um servidor FTP, um servidor de bate-papo, um visualizador de imagens etc.? Como uma pessoa descobre as etapas / processos exatos necessários para criar um servidor HTTP funcional?
Um colega de trabalho me contou sobre o cabeçalho html, então eu nunca saberia disso sem ele. Ele também disse algo sobre entregar cada solicitação a um novo tópico. Existe algum grande livro de como as coisas funcionam? Existe algum manual do que é necessário para ser um servidor HTTP?
Tentei pesquisar no Google "como funciona um servidor HTTP", mas as únicas respostas que pude encontrar foram voltadas para o Joe médio, e não para uma pessoa que deseja programar um servidor HTTP.