HTTP-Response extrem fragmentiert

Status
Nicht offen für weitere Antworten.

Murray

Top Contributor
Hi,

ich sehe hier ein seltsames Phänomen, welches ich mir nicht erklären; leider soll muss ich es trotzdem abstellen.

Ich habe einen einfachen Web-Server, der bestimmte HTTP-Requests versteht und dann einfach über den OutputStream des Sockets die passenden Responses schreibt. Das funktioniert auch alles soweit: man kann (z.B.) mit einem Browser Requests an den Server schicken und sieht dann vernünftige Resultate (z.B. HTML-Seiten). Analysiert man den Traffic auf der Ebene des HTTP-Protokolls, sieht man keine Besonderheiten (ist ja auch nicht zu erwarten, denn es funktioniert ja). Wenn ich aber den Traffic "weiter unten" analysiere, dann sehe ich, dass der Response-Header auf sehr viele Frames verteilt wird; diese Frames enthalten nur wenige Bytes.

Das wäre ja jetzt eigentlich kein Problem (normalerweise hätte ich das nicht einmal bemerkt); allerdings gibt es jetzt Schwierigkeiten mit einem Traffic-Management-Gerät, welches offenbar (nix genaues weiß man nicht; alles ganz geheim) eine Stateful-Inspection betreibt und IP-Pakete abhängig von der Art des Traffic quasi sortiert: die von meinem Server gelieferten Responses fallen da jetzt irgendwie durch das Raster und werden nicht richtig als das erkannt, was sie sind (nämlich HTTP-Verkehr mit einem bestimmten content-type).

Zuerst dachte ich, da wäre vielleicht aus Versehen irgendwo die TCP_NODELAY-Option gesetzt; Socket.getTcpNoDelay liefert aber false.

Ist zufällig schon mal jemand über so ein Problem gestolpert?
 
T

tuxedo

Gast
Naja, da die Pakete vom Webserver kommen würde ich drauf tippen dass der Webserver an der Misere schuld ist. Oder hat du den Webserver auch selbst geschrieben? Du könntest auch mal nach dem Puffer auf dem Socket schauen. Der ist aber glaub ich per default 8k groß. Bin mir aber nicht sicher.

- Alex
 

Murray

Top Contributor
alex0801 hat gesagt.:
Naja, da die Pakete vom Webserver kommen würde ich drauf tippen dass der Webserver an der Misere schuld ist. Oder hat du den Webserver auch selbst geschrieben?
Ja, genau. Ich bin mir da allerdings keiner Schuld bewusst ;-)

alex0801 hat gesagt.:
Du könntest auch mal nach dem Puffer auf dem Socket schauen. Der ist aber glaub ich per default 8k groß. Bin mir aber nicht sicher.
Stimmt, der Send-Buffer ist 8K groß; das habe ich schon geprüft. Insofern dürfte eine Vergrößerung wohl nichts bringen.

Es wird beim Schreiben des Headers auch nicht etwa mal der OutputStream geflushed (zumindest nicht explizit).
 

Murray

Top Contributor
Falls jemand mal ein ähnliches Problem hat: ich umgehe das jetzt, indem ich den Header erstmal in einen Puffer (einen ByteArrayOutputStream) schreibe und erst am Ende den komplett fertigen Puffer in den SocketOutputStream schreibe. Das ist zwar a) nicht so schön, weil man Speicher verschwendet und b) immer noch keine Garantie dafür, dass der SocketOutputStream die Daten nicht trotzdem auf mehrere Frames verteilt, aber so funktioniert es wenigstens.
 

kaesebrot

Mitglied
Hi,

du könntest alternativ auch den SocketOutputStream in einen BufferedOutputStream verpacken.


viele Grüße,
Käse
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M http request and response Netzwerkprogrammierung 0
K HTTP Eigener Http Response für Datei-Download Netzwerkprogrammierung 4
D Server Client Verbindung - Unexpected End of File - Invalid HTTP Response Netzwerkprogrammierung 4
K Ende eines HTTP Response/Request Netzwerkprogrammierung 6
M HTTP response code: 401 ; ?aber im browser ist es abrufbar? Netzwerkprogrammierung 5
M HTTP Requests verarbeiten und Response senden mit Java Netzwerkprogrammierung 14
G HTTP Response mit Transfer-Encoding:chunked einlesen Netzwerkprogrammierung 4
bummerland Google liefert HTTP response code 403 Netzwerkprogrammierung 2
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
H Datei mit Anhang via http "hochladen" Netzwerkprogrammierung 16
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
O HTTP Wer hilft mit meinem UTF-8 http Request ? Netzwerkprogrammierung 1
G localhost im Backend https vs. http Netzwerkprogrammierung 9
J Simple HTTP Framework (basierend auf expressjs) Netzwerkprogrammierung 1
M HTTP Http requests aufzeichnen Netzwerkprogrammierung 2
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
J HTTP Befehl via HTTP senden ohne Browser öffnen Netzwerkprogrammierung 3
F HTTP HTTP Rest Client mit TLS1.2 und selbst signiertem Zertifikat Netzwerkprogrammierung 2
M Verbindungszeit berechnen (TCP, HTTP/1.0, HTTP/1.1) Netzwerkprogrammierung 2
P HTTP Bild von einem Server per http kopieren Netzwerkprogrammierung 1
U HTTP XML vom Server abholen oder http Abfragen, Entscheidung treffen Netzwerkprogrammierung 0
P HTTP Server / Client Netzwerkprogrammierung 1
S HTTP-Requeste von Browser mit Java sniffen? Netzwerkprogrammierung 9
E HTTP java.lang.IllegalArgumentException: protocol = http host = null Netzwerkprogrammierung 1
M Server mit HTTP Netzwerkprogrammierung 9
H Sockets oder HTTP- Methoden? Netzwerkprogrammierung 3
B Socket HTTP-Request führt zu Endlosschleife Netzwerkprogrammierung 5
D HTTP nochne frage zu http requests Netzwerkprogrammierung 6
D HTTP Bräuchte hilfe mit Http Requests Netzwerkprogrammierung 6
F HTTP HTTP-Download: Dateien in einem Verzeichnis ermitteln Netzwerkprogrammierung 8
T HTTP Einen HTTP Server erstellen Netzwerkprogrammierung 20
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
Dit_ HTTP Einfache HTTP-Anfrage Netzwerkprogrammierung 6
nrg FileUpload HTTP POST Netzwerkprogrammierung 5
T Socket Java HTTP-Proxy Netzwerkprogrammierung 3
A HTTP Zugriff auf http-Server - Error 400 Netzwerkprogrammierung 11
B HTTP JSESSIONID in Http(s)URLConnection loswerden! Netzwerkprogrammierung 13
E Socket HTTP-Server Netzwerkprogrammierung 6
C HTTP POST Connect Netzwerkprogrammierung 9
D HTTP Java HTTP Kommunikation Netzwerkprogrammierung 9
R HTTP Apache HTTP Client: Request mit angehängter Datei Netzwerkprogrammierung 2
O Http request Netzwerkprogrammierung 7
Tobse HTTP ServerSocket HTTP Netzwerkprogrammierung 4
I HTTP Datei Uploaden mit http und Sprache anpassen Netzwerkprogrammierung 7
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
N Http Client Netzwerkprogrammierung 3
W Asynchroner HTTP Client / non-blocking I/O Netzwerkprogrammierung 2
R HTTP Problem bei Authentifizierung über (Http)UrlConnection Netzwerkprogrammierung 2
L Body eines http Request auslesen Netzwerkprogrammierung 2
T HTTP Encoding von Http-Streams Netzwerkprogrammierung 2
D http request Netzwerkprogrammierung 11
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
Kr0e Simpler HTTP Stream server Test Netzwerkprogrammierung 3
K HTTP-Anfrage an einen Server wird nicht beantwortet Netzwerkprogrammierung 3
J org.apache.http.auth.NTCredentials Netzwerkprogrammierung 2
W Problem mit HTTP-Dateiübertragung Netzwerkprogrammierung 6
A org.apache.commons http client in Netbeans einbinden Netzwerkprogrammierung 3
G Http Client mit Redirect Enabled Netzwerkprogrammierung 2
M Http POST liefert kryptischen Content Netzwerkprogrammierung 4
G Sockets und HTTP: Ende des Datenempfangs erkennen Netzwerkprogrammierung 3
B Wie HTTP GET/POST Anfrage versenden? Netzwerkprogrammierung 7
R HTTP Server Memory Leak? Netzwerkprogrammierung 6
G HTTP-Request InputStream-Problem Netzwerkprogrammierung 5
K optimale HTTP Downloads Netzwerkprogrammierung 15
G auf http-request antworten. Netzwerkprogrammierung 3
I http sniffer gesucht Netzwerkprogrammierung 10
G Socket + HTTP Header Netzwerkprogrammierung 2
R HTTP ServerThread Netzwerkprogrammierung 4
J HTTP GET? Netzwerkprogrammierung 6
C FTP vs HTTP Netzwerkprogrammierung 10
W HTTP-Upload Netzwerkprogrammierung 2
L Java HTTP Request Netzwerkprogrammierung 3
O Axis2 erstellt HTTP/1.1 anstatt HTTP/1.0 Netzwerkprogrammierung 3
B Fehler 401 bei http GET Netzwerkprogrammierung 2
S HTTP Request erstellen Netzwerkprogrammierung 2
E upload progress bei einem http file post Netzwerkprogrammierung 5
B lange Strings in http-Request? Netzwerkprogrammierung 3
K http-download Netzwerkprogrammierung 12
M erst POST dann Http-Request über URLConnection Netzwerkprogrammierung 3
I Apache http-client: Problem beim Proxyaufruf Netzwerkprogrammierung 2
m@nu Ende von Stream bei HTTP-Request Netzwerkprogrammierung 3
M RMI over HTTP Netzwerkprogrammierung 5
D HTTP Request erstellen (Form Name übergeben!) Netzwerkprogrammierung 3
J Java Programm für Upload von Dateien per HTTP Netzwerkprogrammierung 7
L http kommunikation mit und ohne multipart Netzwerkprogrammierung 4
L file upload / download über http Netzwerkprogrammierung 5
G HTTP Client :: Komme nicht über den Proxy Netzwerkprogrammierung 7
P Easy Http Request Netzwerkprogrammierung 9
B non US-ASCII Dateinamen über HTTP? Netzwerkprogrammierung 2
N Dateigröße einer Datei auf einem HTTP-/Web-Server. Netzwerkprogrammierung 9
P File von http-Server kopieren Netzwerkprogrammierung 5
G unvollständige Daten: Http Client-Server-Kommunikation Netzwerkprogrammierung 2
G http 1.1 socket? Netzwerkprogrammierung 3
J HTTP-POST-Request mit Anhang über Socket Netzwerkprogrammierung 2
S http Server selber schreiben Netzwerkprogrammierung 5
S Suche API für einfachen HTTP-Zugriff. Netzwerkprogrammierung 17
Z HTTP Request Netzwerkprogrammierung 3
A http request per socket an apache server Netzwerkprogrammierung 5
M Ein HTTP-request aus Java heraus senden Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben