Autor Thema: HTTP - Standard  (Gelesen 2962 mal)

tiger717

  • Beiträge: 84
    • Profil anzeigen
Gespeichert
« am: 18. June 2011, 11:07 »
Hallo,

ich habe mich in letzter Zeit mal etwas mit Netzwerk und Servern etc beschäftigt, und bin nun mal auf die Idee gekommen, einen kleinen Proxy selber zu programmieren (natürlich nicht in Asm  :-D )

Aber leider ist mir die Kommunikation doch etwas fraglich erschienen:
Zitat
HTTP/1.1 200 OK
Server: Apache/1.3.29 (Unix) PHP/4.3.4
Content-Length: (Größe von infotext.html in Byte)
Content-Language: de (nach RFC 3282 sowie RFC 1766)
Connection: close
Content-Type: text/html
(Beispiel von der HTTP-Seite auf Wikipedia)

a) Wird das alles wirklich so übertragen? Wenn ja, wo sind dann die eigentlichen Daten?
b) Welche (Text-)Kodierung wird hier benutzt? UNIX- oder Windows-Zeilenumbrüche?

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 18. June 2011, 11:48 »
Vielleicht hättest du einfach das komplette Beispiel kopieren sollen...

Zitat
HTTP/1.1 200 OK
Server: Apache/1.3.29 (Unix) PHP/4.3.4
Content-Length: (Größe von infotext.html in Byte)
Content-Language: de (nach RFC 3282 sowie RFC 1766)
Connection: close
Content-Type: text/html

(Inhalt von infotext.html)

Und als Zeilenumbruch wird CRLF (\r\n) benutzt.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

tiger717

  • Beiträge: 84
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 18. June 2011, 12:03 »
Danke! Da hätte ich auch selber draufkommen können.

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 20. June 2011, 11:12 »
Hallo,


der entscheidende Punkt ist das zwischen dem Header und dem Content zwei mal direkt hintereinander ein CRLF kommt, also eine Leerzeile. Das bedeutet daher auch das im Header selber keine Leerzeile vorhanden sein darf. Unmittelbar nach dem doppelten CRLF dürfen beliebige Bytes kommen welche alle zum Content gehören, also wenn dort 2 Leerzeilen sind dann enthält die übertragene Datei am Anfang eine Leerzeile. Im Header selber sollten auch nur reine ASCII-Zeichen benutzt werden.

Schau Dir einfach mal mit Wireshark o.ä. ein komplettes Beispiel an, HTTP ist eigentlich ziemlich simpel.


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

 

Einloggen