Reverse HTTP

David Schueler david.schueler at tel-billig.de
Di Okt 26 18:04:57 CEST 2010


Hallo Leute.

Ich hab heute mal eine spezielle Frage bezüglich folgendem Sachverhalt:

Ein Client verbindet per TCP mit einem Server (sagen wir port 80/HTTP) und 
setzt eine HTTP-GET Anfrage ab. Dann wartet er auf eine Antwort.
Soweit ist alles normal.
Nun trennt der Client aber dier TCP Verbindung nicht, sondern setzt eine 
zweite Anfrage ab und erwartet nun als Antwort selbst eine HTTP-GET 
Anfrage.

Ein Beispiel zur Verdeutlichung:

Client --> Server
GET /test.php HTTP/1.1
Connection: Keep-Alive

Antwort vom Server
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 2
OK

2te Anfrage Client --> Server
GET /test2.php HTTP/1.1
Connection: Keep-Alive

Antwort vom Server an den Client
GET /Set?Enable=1 HTTP/1.1
User-Agent: Mozilla/5.0

Antwort vom Client
HTTP/1.0 200 OK
Content-type: text/plain

Return:0

Ihr seht also, daß diese Kommunikation sich ab dem 3ten Teil umkehrt.
Mein problem ist nun, daß ich mittels script keine möglichkeit sehe auf 
der bereits bestehenden TCP-Verbindung einen HTTP-GET Request absetzen 
kann. Der Apache (als auch lighttpd) erwarten ja daß auf eine Anfrage eine 
Antwort erfolgt. Ich kann also die Header welche als Response gesendet 
werden nicht in einen Request umbiegen.
Nun könnte man meinen, ich brauch doch nur mittels curl die Anfrage an den 
Client zu stellen. Das Problem dabei ist, daß diese 
Server-->Client-Anfragen über die gleiche TCP-Verbindung erfolgen müssen, 
die der Client aufgebaut hat, da dieser hinter einem NAT Router steht und 
kein Portforward auf dem Router eingerichtet ist.

Hat jemand eine Idee wie ich dies ohne großen Aufwand realisiert bekomme? 
Kann man z.B. CGI/FastCGI so umbiegen daß es auf den Port, welcher 
momentan mit dem Webserver kommuniziert, frei schreiben und lesen kann? 
Oder kann man Apache (respektive lighttpd) beibringen, auf einen HTTP-GET 
keinen HTTP/1.1 200 OK sondern wieder einen HTTP-GET zu senden?
Evtl. gibt es auch schon entsprechende Plugins/Codebeispiele?
Tante Guckl hat mir bisher noch nicht weiter geholfen, da dies wohl eher 
selten gebraucht wird, bzw. auch absolut nicht dem HTTP RFC entspricht.

Danke für alle produktiven Vorschläge.

David
-- 
MFK Geraberg
Department of Research and Development
Ohrdrufer Strasse 14
98716 Geraberg / Germany

Tel.: +49 3677 791073
Fax.: +49 3677 791942
Mail: david.schueler at tel-billig.de