Comme le titre l'indique, je voudrais écrire un serveur HTTP. Ma question est la suivante, comment dois-je procéder? Je sais que cela semble TRÈS général et trop "de haut niveau", mais il y a une méthode à ma folie. Une réponse à cette question devrait être, je crois, indépendante du langage; ce qui signifie, quel que soit le langage que j'utilise (par exemple, C, C ++, Java, etc.), la réponse doit être la même. J'ai une idée générale de la façon dont cela est censé fonctionner:
- Ouvrez une prise sur le port 80.
- Attendez qu'un client fasse une demande.
- Lisez la demande (c.-à-d., Cette personne veut la page "contactez-nous.html").
- Recherchez et lisez "contact-us.html".
- Envoyez un en-tête html, puis envoyez le contenu de "contact-us.html"
- Terminé
Comme je l'ai dit, je crois que c'est le processus, mais je ne suis pas sûr à 100%. Cela m'amène au cœur de ma question. Comment ou où une personne trouve-t-elle ces informations?
Et si je ne voulais pas écrire uniquement un serveur HTTP, et si je voulais écrire un serveur FTP, un serveur de chat, une visionneuse d'images, etc.? Comment une personne découvre-t-elle les étapes / processus exacts nécessaires pour créer un serveur HTTP fonctionnel?
Un collègue m'a parlé de l'en-tête html, donc je n'aurais JAMAIS su cela sans lui. Il a également dit quelque chose sur la remise de chaque demande à un nouveau fil. Y a-t-il un gros livre sur la façon dont les choses fonctionnent? Existe-t-il un manuel de ce qu'il faut pour être un serveur HTTP?
J'ai essayé de googler "comment fonctionne un serveur HTTP", mais les seules réponses que j'ai pu trouver étaient destinées à votre Joe moyen, et non à une personne souhaitant programmer un serveur HTTP.
la source
Réponses:
Utilisez le RFC2616 , Luke!
Vous lisez le RFC 2616 sur HTTP / 1.1 , et c'est parti.
C'était en fait un projet en 3ème année d'école d'ingénieur, et c'est à peu près la description du projet.
Outils
Vos outils sont:
Considérations amusantes
Choses à considérer pour plus de plaisir:
S'amuser. C'est une chose très cool à regarder.
Autres suggestions (plus simples)
Ils sont beaucoup plus faciles à aborder en premier, et leurs RFC sont beaucoup plus faciles à digérer (eh bien, celui de l'IRC a quelques parties étranges, mais le FTP est assez clair).
Choix de la langue
Bien sûr, certains détails d'implémentation dépendront fortement de la langue et de la pile que vous utilisez pour l'implémenter. J'ai abordé tout cela en C, mais je suis sûr que cela peut être amusant aussi bien dans d'autres langues (ok, peut-être pas aussi amusant, mais toujours amusant).
la source
You still have lots of room for your architecture design, but it's a pretty good and directive spec.
vous:yes and no
. Je pense que nous avons déjà rétréci que le RFC n'était pas tout. Et je pense que c'est au PO de découvrir ensuite ces choses plutôt que de les signaler directement plus que ce que j'ai déjà fait dans les sections "considérations supplémentaires" et d'autres choses. Cela fait partie du plaisir.Chacun des protocoles utilisés sur Internet est spécifié dans un ou plusieurs documents publics appelés RFC. Tous les RFC actuels peuvent être trouvés sur http://www.rfc-editor.org/ , qui a également une fonction de recherche décente.
Le protocole HTTP (version 1.1), par exemple, est spécifié dans RFC2616 et le protocole FTP est spécifié dans RFC959 .
Selon les spécifications, les RFC sont, à mon avis, très lisibles.
la source
In 2014, RFC2616 was replaced by multiple RFCs (7230-7237).
. Alors, comment trouver les RFC mis à jour s'ils sont présents? Dois-je vérifier laObsoleted by
liste?