mrandersson
Goto Top

Verständnisfragen zur Funktionsweise eines Proxys

Guten Morgen,

ich habe mich in den letzten Tagen mit dem Thema Linux(Ubuntu) und Proxy beschäftigt, habe schon im squid-handbuch gelesen,
aber noch eine Verständnisfragen, die ihr mir hoffentlich beantworten könnt.

Erstmal meine Vorstellung vom Kommunikationsablauf:

1.) Client 1 möchte auf die Seite www.xyz.com und fragt den Proxy, ob er diese Webseite im Cache hat.
2.) Proxy antwortet "NEIN" und holt sich die Objekte von der Seite www.xyz.com.
3.) Proxy speichert alle heruntergeladenen Objekte von www.xyz.com in seinem Cache ab.
4.) Client 1 holt sich die im Cache gespeicherten Objekte vom Proxy und stellt diese im Browser dar.

So, nun haben wir die Seite www.xyz.com im Cache und Client 2 will nun auch auf die Seite:

5.) Client 2 möchte auf die Seite www.xyz.com und fragt den Webserver, ob er diese Webseite im Cache hat.
6.) Proxy hat die Objekte im Cache und schaut, ob eine Änderung der Webseite vorgenommen wurde.
7.) Proxy gibt Client 2 die Antwort, dass keine Änderung vorgenommen wurde
8.) Client 2 holt sich die im Cache gespeicherten Objekte vom Proxy und stellt diese im Browser dar.


So habe ich nun das Funktionsschema eines (Cache-)Proxys aufgefasst.
Ist das so korrekt, oder habe ich noch einen Denkfehler drin?

Mir ist aufgefallen, dass in den Anleitungen immer von "Objekten" geredet wird, sind das in dem Fall die Dateien eines Webservers,
also z.B. die versch. Dateien wenn man im I.E. oder Firefox auf "Datei -> Seite speichern unter (Website komplett)" geht? Also in dem Fall z.B.
*.jpg, *.html, *.js ??

Muss der Proxy eigentlich jedes Mal den Webserver fragen, ob eine aktuellere Version vorhanden ist (auch wenn die Webseite im Cache ist)?
Das bedeutet quasi, dass eig. immer ein wenig Netzwerklast vorhanden ist (durch Request/Response), aber ein erhöhter Traffic natürlich nur beim
herunterladen der Webseite besteht, oder?

Und noch zu guter Letzt eine Frage: Wenn ein Client eine Anfrage nach der Webseite www.xyz.com stellt, lädt dann der Proxy in diesem Fall
zum Beispiel nur die Seite www.xyz.com/index.html? Und wenn der Client nun auch den Hyperlink abc auf www.xyz.com klickt, würde wieder eine Anfrage
an den Proxy gestellt werden und die Objekte der verlinkten Seite abc abgerufen werden?

Content-ID: 113767

Url: https://administrator.de/contentid/113767

Ausgedruckt am: 26.11.2024 um 12:11 Uhr

dog
dog 14.04.2009 um 12:22:05 Uhr
Goto Top
Ist das so korrekt, oder habe ich noch einen Denkfehler drin?

Ja. Dem Client ist es nämlich vollkommen Schnuppe ob der Proxy cacht oder nicht.
Das muss ein Proxyserver mit sich selbst ausmachen. Der Client bekommt immer nur eine Antwort.
Proxy antwortet "NEIN"
Stimmt also so nicht.

Mir ist aufgefallen, dass in den Anleitungen immer von "Objekten" geredet wird, sind das in dem Fall die Dateien eines Webservers,

Objekte oder Ressourcen, ja. Bei HTTP wird jede Ressource über eine URL eindeutig identifiziert. Das es nachher bei dir auf der Festplatte Dateien sind liegt nur an der Art und Weise wie Ressourcen auf ein Dateisystem gemappt werden.

Muss der Proxy eigentlich jedes Mal den Webserver fragen, ob eine aktuellere Version vorhanden ist (auch wenn die Webseite im Cache ist)?

Nein. HTTP kann exakte Cache-Regeln für Proxys und Clients vorgeben.
Diese können auch besagen, dass eine Seite bis zu einem bestimmten Zeitpunkt sicher gecacht werden kann ohne es zu kontrollieren. Die meisten Websites machen allerdings wenig Nutzen von solchen HTTP-Features (wahrscheinlich aus Unwissen), was heute dazu führt, dass Proxys kaum noch Seiten cachen können, sondern das meiste an den Client durchreichen müssen.

Wenn ein Client eine Anfrage nach der Webseite www.xyz.com stellt,

Dann ist das equiv. zu http://www.xyz.com/ und genau das wird angefragt.

Und wenn der Client nun auch den Hyperlink abc auf www.xyz.com klickt, würde wieder eine Anfrage an den Proxy gestellt werden

Natürlich. Stell dir mal vor die Seite wäre ein Forum und der Link "abc" ein Löschen-Button.
Was würde wohl passieren, wenn der Proxy einfach schon mal alles vorladen würde? face-smile

Grüße

Max
MrAndersson
MrAndersson 14.04.2009 um 14:31:54 Uhr
Goto Top
Hallo Max,

Ja. Dem Client ist es nämlich vollkommen Schnuppe ob der Proxy cacht oder nicht.
Das muss ein Proxyserver mit sich selbst ausmachen. Der Client bekommt immer nur eine Antwort.
Gut, dann ist das ja schonmal klar.

Nein. HTTP kann exakte Cache-Regeln für Proxys und Clients vorgeben.
Diese können auch besagen, dass eine Seite bis zu einem bestimmten Zeitpunkt sicher gecacht werden kann >ohne es zu kontrollieren. Die meisten Websites machen allerdings wenig Nutzen von solchen HTTP-Features >(wahrscheinlich aus Unwissen), was heute dazu führt, dass Proxys kaum noch Seiten cachen können, sondern >das meiste an den Client durchreichen müssen.
Wo werden denn diese Cache-Regeln festgelegt? In den Objekten selbst oder im Header der Webseite?
Wenn laut deiner Aussage kaum noch Seiten gecacht werden können wird doch auch der Proxy unnötig, oder?

Natürlich. Stell dir mal vor die Seite wäre ein Forum und der Link "abc" ein Löschen-Button.
Was würde wohl passieren, wenn der Proxy einfach schon mal alles vorladen würde?
Gut, das habe ich mir nun vorgestellt, aber ich weiss trotzdem nicht, was dann passieren würde.
Wenn dies z.B. ein Lösch-Button für einen geschrieben Beitrag ist, heisst das doch nicht, dass wenn Client 2 diese Seite betritt zwingend auf den Button klicken muss.
Wäre nett, wenn du mir dies noch einmal genauer erklären könntest.

Gruß
dog
dog 14.04.2009 um 22:28:21 Uhr
Goto Top
In den Objekten selbst oder im Header der Webseite?

Diese Regeln werden im HTTP-Header festgelegt.

Wenn laut deiner Aussage kaum noch Seiten gecacht werden können wird doch auch der Proxy unnötig, oder?

Einen großartigen Geschwindigkeitssprung sollte man heute mit Proxys nicht mehr erwarten, Nein.
Lediglich bei statischen Seiten und Bildern kann es einen kleinen Vorteil geben.
Der Hauptnutzen für Proxys heute ist aber auch viel mehr die Filterung und Überwachung.

Und noch zu guter Letzt eine Frage: Wenn ein Client eine Anfrage nach der Webseite www.xyz.com stellt, lädt dann der Proxy in diesem Fall zum Beispiel nur die Seite www.xyz.com/index.html? Und wenn der Client nun auch den Hyperlink abc auf www.xyz.com klickt, würde wieder eine Anfrage an den Proxy gestellt werden und die Objekte der verlinkten Seite abc abgerufen werden?

Das ist richtig.
Was ich mit meinem Beispiel ausdrücken wollte ist, dass es auch gar keinen Sinn machen würde/ gefährlich ist, wenn ein Proxy Seiten vorlädt...

Grüße

Max