Christian Seiler: CGI falsch programmiert??

Beitrag lesen

Hallo,

mit ist etwas sehr komisches aufgefallen. Ich setze ein httprequest ab auf meinen apache ( bla/cgi-bin/bla) Dieses (in c++) gibt mir eine Datenarray per json zurück. Content-type ist auch ok. Daten werden per js auch abgearbeitet. Jetzt das Verückte!!! In Wireshark sehe ich immer nach meine antwort (passt in ein tpc paket) eine zweites Paket mit 5 bytes!!! Als Info Text gubt WS "Continuation or non-HTTP traffic" - Was ist das, was soll mir das sagen???

Netzwerkprotokolle arbeiten mit Paketen. Mehrere TCP-Pakete bilden einen zusammenhängenden Datenstrom. Wie bzw. ob der Datenstrom nun auf mehrere TCP-Pakete aufgeteilt wird hängt von mehreren Faktoren ab. Der wichtigste Faktor ist die größe der Daten: Passen die Daten noch in ein Paket (wie groß das maximal sein darf hängt von der zu Grunde liegenden Netzwerkhardware ab, bei Ethernet sind das 1500 Bytes, die jedoch schon den TCP/IP-Header beinhalten müssen), so wird in der Regel nur ein Paket verschickt. Passen die Daten nicht mehr in ein einziges Paket, werden sie aufgeteilt.

Du hast hier also 2 Pakete für Deinen Datenstrom: Das erste Paket mit dem Anfang der Antwort und dann noch 5 Bytes, die entweder nicht in das erste Paket hineingepasst haben oder aus irgend einem anderen Grund separat verschickt wurden. Dafür steht das "Continuation". Das "or non-HTTP traffic" ist nur ein Hinweis dass weil Wireshark mit den Daten nichts anfangen kann und es Dir damit nicht mit letztendlicher Sicherheit sagen kann, dass es wirklich nur eine Fortsetzung des vorigen Datenstroms ist oder irgend etwas komplett anderes.

Wenn Du die Gesamtantwort sehen willst, kannst Du bei einem beliebigen TCP/IP-Paket das Kontextmenü öffnen und auf "Follow TCP Stream" gehen - dann siehst Du dort den Inhalt des kompletten Datenstroms und kannst die komplette Antwort schön für Dich zusammengesetzt sehen.

(Beachte aber, dass "Follow TCP Stream" im Paketfenster automatisch auch einen Filter auf den spezifischen TCP-Stream setzt, den Du hinterher löschen solltest, wenn Du später auch noch andere Pakete inspizieren willst.)

Viele Grüße,
Christian