File downloading

"rik_saunderson" <[email protected]> Wed, 12 Aug 2009 13:39:19 -0000
Newsgroups gmane.network.gnutella.devel
Message-ID <[email protected]>
I am trying to understand modern implementations of the gnutella protocol, and I'm having problems understanding newer methods of file downloading.

I have been able to find specs on the following methods:

Standard file downloading:
The downloader sends an HTTP GET request in the form GET /get/fileindex/filename.  The file sharer then sends the file.

Push file downloading:
The downloader is behind a firewall and can't receive files normally.  The downloader sends the file sharer a PUSH gnutella message, advertising an available port and ip address.  The file sharer sends a message to establish the TCP connection in the format GIV fileindex:serventid/filename

HUGE:
Instead of a filename, either a Namespace-id hash or a sha1 hash is sent, in the format GET /uri-res/N2R?urn:sha1:hash

Magnet:
Files are downloaded through websites in the format GET magnet:… with various options such as xt for exact topic, kt for keyword search and so on an so forth.

Partial file download:
The downloader only requests part of the file in the format GET /partials/filename or hash or whatever.

Observing file transfer in Wireshark, I sometimes don't see any of the above.  I do see:
GET /client_startup, which is presumably a message sent by the client on startup.
GET /p.xml where p.xml is an xml file 

My question is, have I interpreted the last two correctly, and are there other ways of downloading files that I haven't been able to find?
Thanks,
Rik