[JDEV] File transfer ideas
David Sutton
dsutton at legend.co.uk
Fri Feb 15 16:49:32 CST 2002
Hi Dave,
On Fri, 2002-02-15 at 22:09, Dave wrote:
> It sounds quite cool, but I just have a few quick questions:
> Can you please define "server?"
A machine which provides a service, such as a http server provices web
pages on request
> Can you please define "client?"
A person or machine which requests a service from the server .. such as
your email client requesting this email from the email server.
> Can you please define "sender?"
Person or script who has a file they want to send
> Can you please define "receiver?"
Person or script which is to receive the file
> Can you please define "user?"
You, for example :)
>
> I was having a little trouble following the specifics, and I suspect that
> a more concrete definition for each term will probably help me out a bit.
>
I can try and make that clearer tho, if there is still grey areas.
David
---
jid: peregrine at jabber.sys.legend.net.uk
-- rest of included message --
> Sorry,
> Dave Cohen <dave at dave.tj>
>
>
> David Sutton wrote:
> >
> > Hi all,
> >
> > I'm just doing my 2 hour journey back to the house, and have got thinking
> > about file transfer. I'm basically sending this email for thoughts on
> > the idea i'm working on. It takes some of the existing views, just
> > expanding on a few ideas, concepts and concerns I have.
> >
> > Protocol:
> >
> > HTTP is fine for this purpose. It was designed as a protocol to
> > transfer files from a server to a client, which is all that we want.
> > I would, however, suggest a slightly modified http server, which can
> > basically measure how much of a file has been transfered to and from
> > the server. I'll explain this later. HTTP v1.1 has partial file
> > transfer in the specification, useful to resume connections which
> > have failed. It also would make it easy to have requests served by
> > multiple servers, simply by returning a redirection message to the
> > requesting client.
> >
> > Client-side:
> >
> > All that is required is a client able of talking the HTTP protocol.
> >
> > Server-side:
> >
> > As previously stated, this is just a http server, able to determine
> > the amount of data transfered. Every file stored on the server would
> > have a record associated with it, containing the following pieces of
> > information:
> >
> > Filename
> > Size
> > MD5 checksum
> > List of users able to access the file, along with expiry details
> > (ACL)
> >
> > Transaction:
> >
> > - Upload -
> > The sender first sends a 'request to transfer', which consists of
> > the filename, size and md5. The server checks against the database
> > to see if any file already exists which matches those details.
> >
> > If the file already exists, there is no need to upload the file again,
> > the user is simply added to the ACL, and given an expiry time. This
> > value basically controls the amount of time the user is allowed to
> > collect the file before it is deleted. Once all the users listed on
> > the record had either timed out or been deleted, the file would
> > then be removed automatically. The sender is also informed that
> > there is no need to upload.
> >
> > If the file doesn't already exist, the server checks that the size
> > value does not exceed the limit placed on the server. This value is
> > not trusted, only used as a guideline. The user then starts to
> > upload the file. The server monitors this, and will terminate and
> > destroy the partial upload if its exceeds the size it reported.
> >
> > If the transfer is interrupted, one of two actions could be taken:
> > either remove the partial upload, or keep it for a short amount of
> > time, allowing the sender to resume the upload and complete it.
> >
> > In either case, a message is send to the receiver with the details
> > needed to retrieve the file: filename, size and md5.
> >
> > - Download -
> > The receiver sends a 'request to download', consisting of the
> > filename, size and md5. This, along with the ACL stored in the
> > files database record, help form a basic protection against files
> > being downloaded by the wrong person. Its not perfect, but it is
> > functional without requiring unstandard extensions.
> >
> > The server would then respond either with a 'file not found', 'ok',
> > or 'redirection'. A 'not authorised' would also be a possible
> > option, however this could be used to try and find files in a
> > bruteforce attack, so I personally would settle for simply a 'file
> > not found' response.
> >
> > Once the client is requesting from the right server and passes the
> > tests, the file is available for download. The server would monitor
> > the download, and would remove the user from the ACL once the
> > download was successful. If the download was not successful, this
> > allows the receiver to resume, or the file will simply timeout.
> >
> > - Housekeeping -
> > This is simply a case of going through every record and counting
> > down every user until they expire, and removing files once there is
> > no user left on the database record for the file.
> >
> > Notes:
> >
> > The above solution is easily possible using a standard http server
> > and CGI scripts, the only problems are controlling the size of
> > uploads and detecting if a file transfer failed before completion.
> >
> > This is all based previous discussions and idea, all i've tried to do
> > is bring them together into one reference. File transfer seems to be
> > becoming an increasingly requested feature, especially in regards to
> > transports. My personal belief is that peer-to-peer connections open up
> > a whole world of problems, such as firewalls and interconnectivity
> > between different clients. The HTTP protocol works, its documented, and
> > implemented in all major OS's (and quite a few others too) I understand
> > that this increases the bandwidth required by a hosting service, but
> > such load could be distributed by clusters of file stores. Any thoughts?
> >
> > Regards,
> >
> > David
> >
> > ---
> > David Sutton
> > jid: peregrine at jabber.sys.legend.net.uk
> >
> >
> >
> >
> > _______________________________________________
> > jdev mailing list
> > jdev at jabber.org
> > http://mailman.jabber.org/listinfo/jdev
> >
>
> _______________________________________________
> jdev mailing list
> jdev at jabber.org
> http://mailman.jabber.org/listinfo/jdev
More information about the JDev
mailing list