Wie der Titel schon sagt, möchte ich einen HTTP-Server schreiben. Meine Frage ist, wie mache ich das? Ich weiß, das klingt SEHR allgemein und zu "hoch", aber mein Wahnsinn hat eine Methode. Eine Antwort auf diese Frage sollte meines Erachtens sprachunabhängig sein. Das heißt, egal welche Sprache ich verwende (z. B. C, C ++, Java usw.), die Antwort sollte dieselbe sein. Ich habe eine allgemeine Vorstellung davon, wie das funktionieren soll:
- Öffnen Sie eine Steckdose an Port 80.
- Warten Sie, bis ein Client eine Anfrage gestellt hat.
- Lesen Sie die Anfrage (dh diese Person möchte die Seite "contact-us.html").
- Suchen und lesen Sie "contact-us.html".
- Sende einen HTML-Header und sende dann den Inhalt von "contact-us.html"
- Erledigt
Wie gesagt, ich glaube, das ist der Prozess, aber ich bin nicht 100% sicher. Dies führt mich zum Kern meiner Frage. Wie oder wo findet eine Person diese Informationen heraus?
Was wäre, wenn ich nicht nur einen HTTP-Server schreiben wollte, sondern einen FTP-Server, einen Chat-Server, einen Bildbetrachter usw.? Wie findet eine Person die genauen Schritte / Prozesse heraus, die zum Erstellen eines funktionierenden HTTP-Servers erforderlich sind?
Ein Mitarbeiter erzählte mir von dem HTML-Header, daher hätte ich das NIE ohne ihn gewusst. Er sagte auch etwas über die Übergabe jeder Anfrage an einen neuen Thread. Gibt es ein großes Buch darüber, wie die Dinge funktionieren? Gibt es ein Handbuch darüber, was es braucht, um ein HTTP-Server zu sein?
Ich habe versucht zu googeln, wie ein HTTP-Server funktioniert, aber die einzigen Antworten, die ich finden konnte, richteten sich gegen Ihren durchschnittlichen Joe und nicht gegen eine Person, die einen HTTP-Server programmieren möchte.
quelle
Antworten:
Verwenden Sie den RFC2616 , Luke!
Sie lesen den RFC 2616 unter HTTP / 1.1 und greifen zu.
Das war eigentlich ein Projekt in meinem dritten Jahr an der Ingenieurschule, und das ist so ziemlich die Projektbeschreibung.
Werkzeuge
Ihre Werkzeuge sind:
Überlegungen zum Spaß
Dinge, die für zusätzlichen Spaß zu beachten sind:
Habe Spaß. Es ist eine sehr coole Sache zu sehen.
Andere (einfachere) Vorschläge
Sie sind viel einfacher anzufassen und ihre RFCs sind viel einfacher zu verdauen (nun, der IRC hat einige seltsame Teile, aber der FTP ist ziemlich klar).
Sprachauswahl
Natürlich hängen einige Implementierungsdetails stark von der Sprache und dem Stack ab, die Sie zur Implementierung verwenden. Ich habe das alles in C angegangen, aber ich bin sicher, es kann genauso gut in anderen Sprachen Spaß machen (ok, vielleicht nicht so viel Spaß, aber immer noch Spaß).
quelle
You still have lots of room for your architecture design, but it's a pretty good and directive spec.
Sie:yes and no
. Ich denke, wir haben uns bereits eingegrenzt, als der RFC nicht alles war. Und ich denke, es liegt an der OP, diese Dinge zu entdecken, anstatt sie direkt darauf hinzuweisen, mehr als das, was ich bereits in den Abschnitten "Zusätzliche Überlegungen" und anderen Dingen getan habe. Es ist ein Teil des Spaßes.Jedes im Internet verwendete Protokoll ist in einem oder mehreren öffentlichen Dokumenten angegeben, die als RFCs bezeichnet werden. Alle aktuellen RFCs finden Sie unter http://www.rfc-editor.org/ , die auch über eine anständige Suchfunktion verfügen.
Das HTTP-Protokoll (Version 1.1) ist beispielsweise in RFC2616 und das FTP-Protokoll in RFC959 angegeben .
Die RFCs sind meiner Meinung nach sehr gut lesbar.
quelle
In 2014, RFC2616 was replaced by multiple RFCs (7230-7237).
. So finden Sie die aktualisierten RFCs, wenn sie vorhanden sind? Soll ich nach einerObsoleted by
Liste suchen?