Internet-Software, Browser, FTP, SSH 4.707 Themen, 38.979 Beiträge

Download über 'erlaubte' Zeitgrenzen hinweg...

Mdl / 9 Antworten / Baumansicht Nickles

Manchmal ist man auf einer Seite, auf der man eine Datei, z.B. Video, bis zu einem bestimmten Zeitpunkt downloaden kann.

Und wirklich: Versucht man darauf nach diesem Zeitpunkt zuzugreifen, klappt dies nicht mehr. (Vermutlich wird sie automatisch verschoben).

Wenn der Download aber länger dauert und dann mittendrin dieser Zeitpunkt erreicht wird, funktioniert der Download i.d.R. trotzdem bis zum Ende der Datei (, ein neu gestarteter aber nicht mehr).

Wie funktioniert denn das intern?

Hat das downloadende Programm (Browser oder auch Kommandozeilenprg (z.B. wget) dann auch Zugriff auf die neue Adresse, mit der die Datei auch später noch downgeloadet werden kann?

Wenn ich dasselbe rein lokal auf dem PC simuliere (d.h. ein Prg. greift lesend auf eine Datei zu, wird ein verschieben/umbenennen/löschen  i.d.R. ja nicht erlaubt). Auf dem Server aber vermutlich schon. Warum greift das downloadende Prg. denn dann nicht 'ins Leere'?

Gruß,
Mdl

bei Antwort benachrichtigen
Borlander Mdl „Download über 'erlaubte' Zeitgrenzen hinweg...“
Optionen
Wie funktioniert denn das intern?

Hängt vom Webserver und der Implementierung ab.

Man kann da an unterschiedlichen Stellen im Prozess die Berechtigung zum Download prüfen. Die sauberste Lösung ist ein initiales Prüfen der aktuellen Download-Berechtigung und falls diese vorhanden ist wird im besten Fall eine Datei (die selbst nicht über URL abrufbar wäre!) direkt an den Client gesendet.

Ob Abhängig von Zeit oder anderen Kriterien wie Login und ggf. Rolle, Gruppenmitgliedschaft oder individuellen Berechtigungen ist da eigentlich eher nebensächlich. Ob eine wiederholte Prüfung der Berechtigung sinnvoll ist muss man - basierend auf dem konkreten Anwendungsfall - genau abwägen. Mit einer solchen Prüfung kann ein signifikant höherer Ressourcenbedarf auf Serverseite entstehen.

Gruß
Borlander

bei Antwort benachrichtigen
Mdl Borlander „Hängt vom Webserver und der Implementierung ab. Man kann da an unterschiedlichen Stellen im Prozess die Berechtigung zum ...“
Optionen

Hi Borlander,

sehe schon, da gibt es wohl  mehrere Möglichkeiten:

 

...wird im besten Fall eine Datei (die selbst nicht über URL abrufbar wäre!) direkt an den Client gesendet

im von mir beschriebenen Fall wäre da der Server also entweder kulant oder dieser Fall träfe nicht zu, da wenn die Datei expliit an den Client gesendet wird, kann doch der Server jederzeit das Senden zeitgenau einstellen...

Aber die Dateien sind über eine (gut versteckte) URL downzuloaden....

Gruß,
Mdl

bei Antwort benachrichtigen
Borlander Mdl „Hi Borlander, sehe schon, da gibt es wohl mehrere Möglichkeiten: im von mir beschriebenen Fall wäre da der Server also ...“
Optionen
wenn die Datei expliit an den Client gesendet wird, kann doch der Server jederzeit das Senden zeitgenau einstellen...

Das musst Du mal genauer erklären wie Du Dir das genau vorstellst.

Es gibt verschiedene Möglichkeiten wie eine Datei die auf der Festplatte des Webservers liegt zum Client gelangt.

Aber die Dateien sind über eine (gut versteckte) URL downzuloaden

Eine URL kann vollkommen unabhängig von der Dateisystemstruktur bzw. dem Inhalt des Webroot-Verzeichnisses sein.

bei Antwort benachrichtigen
Mdl Borlander „Das musst Du mal genauer erklären wie Du Dir das genau vorstellst. Es gibt verschiedene Möglichkeiten wie eine Datei die ...“
Optionen
Das musst Du mal genauer erklären wie Du Dir das genau vorstellst.

Wie ich mir das Senden/Empfangen vorstelle?

Nun ja, nachdem sich die beiden verständigt haben, dass sie eine bestimmte Datei senden/empfangen, schickt der Server die Datei blockweise an den Client. Jedesmal, wenn der einen Block empfangen hat, bestätigt er den Empfang (evtl. mit Zurücksenden einer Checksumme, sodass der Server sieht, dass der Inhalt korrekt war) und dann wird der nächste Block gesendet.

Wenn dem so ist, kann doch der Server auch jederzeit das Schicken der Blöcke einstellen.

Eine URL kann vollkommen unabhängig von der Dateisystemstruktur bzw. dem Inhalt des Webroot-Verzeichnisses sein.

Aha. Wenn ich auf die Dateien zugreifen will, die ich in meinem Webspace gespeichert habe, z.B. dir1\abc.txt dann greif ich via URL www.xxxxx.com/..../dir1/abc.txt darauf zu. Kann mir aber auch gut vorstellen, dass es eine Art Link gibt, die dann aber (evtl. via anderer Links) letztendlich aber auch wieder auf www.xxxxx.com/..../dir1/abc.txt zugreifen muss..

Btw: Wie kann ich das machen? Insbesondere wenn ich meine Site www.xxxxx.com nicht in dieser URL verwenden will?

Gruß,
Mdl

bei Antwort benachrichtigen
Borlander Mdl „Wie ich mir das Senden/Empfangen vorstelle? Nun ja, nachdem sich die beiden verständigt haben, dass sie eine bestimmte ...“
Optionen

Also wenn Dich das ganze näher interessiert, dann lohnt sich sicherlich mal ein Blick auf die Protokolle HTTP und TCP/IP die dabei beteiligt sind, sowie auch auf das ISO/OSI-Schichtenmodell.

nachdem sich die beiden verständigt haben, dass sie eine bestimmte Datei senden/empfangen

Eine großartige Verständigung gibt es an dieser Stelle gar nicht. Der Client (Browser) sendet einen HTTP-Request an den Server und definiert dabei über den URL-Pfad welcher Ressource er abrufen will. Im Erfolgsfall (HTTP Status-Code 200) beginn der Server direkt mit dem Senden der Inhalt, oder liefert eine Fehlermeldung zurück.

schickt der Server die Datei blockweise an den Client. Jedesmal, wenn der einen Block empfangen hat, bestätigt er den Empfang (evtl. mit Zurücksenden einer Checksumme, sodass der Server sieht, dass der Inhalt korrekt war) und dann wird der nächste Block gesendet.

Der Webserver schreibt einfach nur einen Datenstrom raus. An der Stelle könnte man tatsächlich unterbrechen, wenn man es als erforderlich ansieht. Um die paketorientierte Datenübertragung incl. Fehlerkorrektur kümmert sich eine darunter liegende Schicht (TCP), von der der Webserver im Zweifelsfall nichts mitbekommt und normalerweise auch nichts mitbekommen muss. Nach jedem Paket auf die Bestätigung zu warten würde die Übertragung  übrigens extrem ausbremsen.

Wenn dem so ist, kann doch der Server auch jederzeit das Schicken der Blöcke einstellen.

Das sollte man allerdings keinesfalls von irgendwelchen teuren Prüfungen abhängig machen.

Wenn ich auf die Dateien zugreifen will, die ich in meinem Webspace gespeichert habe, z.B. dir1\abc.txt dann greif ich via URL www.xxxxx.com/..../dir1/abc.txt darauf zu.

Das ist der gängige Fall, wenn Du einfach statische Inhalts ausliefern willst. Häufig will man aber z.B. Inhalte aus einer Datenbank bereitstellen, oder z.B. von zeit oder Login abhängig machen.

Btw: Wie kann ich das machen? Insbesondere wenn ich meine Site www.xxxxx.com nicht in dieser URL verwenden will?

Mod_Rewrite, Serverseitiges Scripting, ein Anwendungsserver, oder notfalls auch die komplette Eigenimplementation. So ganz genau habe ich nun allerdings noch nicht verstanden was Du eigentlich vorhast.

Gruß
Borlander

bei Antwort benachrichtigen
gelöscht_323936 Mdl „Download über 'erlaubte' Zeitgrenzen hinweg...“
Optionen
Wenn ich dasselbe rein lokal auf dem PC simuliere (d.h. ein Prg. greift lesend auf eine Datei zu, wird ein verschieben/umbenennen/löschen  i.d.R. ja nicht erlaubt). Auf dem Server aber vermutlich schon. Warum greift das downloadende Prg. denn dann nicht 'ins Leere'?

Wieso sollte die Datei auf dem Server grade während des Downloads verschoben werden?

Und auch zum Ende der festgelegten Zeit, die die Datei vefügbar ist, wird sie doch nicht sofort gelöscht. Es ist einfach kein Download oder anderer Zugriff von außen mehr möglich.
Borlander hat das weiter oben so beschrieben.

Im HPI ist grade ein Kurs "Wie funktioniert das Internet?" (6 Wochen) zuende gegangen. Dort wird halt etwas theoretisch dargestellt, wie das Internet funktioniert, also auch die Protokolle TCP/IP und HTTP funktionieren usw.  So wie Borlander das hier   empfiehlt. (Allerdings nehmen die nicht das OSI-Schichtenmodell sondern nur 5 Schichten genannt  TCP/IP Protokollstapel)
Das ist aber kein Programmierkurs. Aber so zur Information ganz interessant.

Die meisten Kurse im openHPI können auch nachträglich noch angesehen werden, dann allerdings ohne Auswertung der Hausaufgaben und ohne Abschlussprüfung.

Das war nur eine Zwischenbemerkung zu den Ausführungen von Borlander und weil mir gleich zu Beginn die Idee so seltsam vorkam, dass die Datei zu einem festen Moment verschoben wird.

Anne

bei Antwort benachrichtigen
Borlander Mdl „Download über 'erlaubte' Zeitgrenzen hinweg...“
Optionen
Wenn ich dasselbe rein lokal auf dem PC simuliere (d.h. ein Prg. greift lesend auf eine Datei zu, wird ein verschieben/umbenennen/löschen  i.d.R. ja nicht erlaubt). Auf dem Server aber vermutlich schon. Warum greift das downloadende Prg. denn dann nicht 'ins Leere'?

Das hängt übrigens vom Betriebssystem, Art des Dateizugriffs und ggf. Dateisystem ab.

Technisch erforderlich ist der Dateiname nur beim Öffnen der Datei zum Auswählen des richtigen Dateisystemobjekts. Wenn der sich dann während des weiteren Zugriffs ändert muss das nicht stören…

bei Antwort benachrichtigen
Mdl Borlander „Das hängt übrigens vom Betriebssystem, Art des Dateizugriffs und ggf. Dateisystem ab. Technisch erforderlich ist der ...“
Optionen

Ja, stimmt. Ist mir auch schon passiert, dass ich eine Datei löschen konnte, obwohl sie noch von einem anderen Prg. benutzt wurde. Da hat wohl das BS aufgepasst und deren Speicher erst wirklich dann freigegeben, wenn sie gar nicht mehr referenziert wurde. Das ist aber nicht wirklich die Regel: Meistens wird entsprechender Zugriff verweigert. Da ich mittlerweile für alle Partitionen NTFS nutze, wird es wohl an der Art des Dateizugriffs liegen!?

bei Antwort benachrichtigen
Borlander Mdl „Ja, stimmt. Ist mir auch schon passiert, dass ich eine Datei löschen konnte, obwohl sie noch von einem anderen Prg. ...“
Optionen

Das hängt von der Anwendung ab. Die muss schon einen File-Lock anfordern, damit die Datei gesperrt wird. Und das ist nicht immer notwendig, sondern hängt im Zweifelsfall von Art der Nutzung und auch von der individuelle Implementierung ab.

bei Antwort benachrichtigen