Gnutella and JXTA
Based on Ivkovic’s paper “Improving Gnutella Protocol”.
Also based on Docs and Tutorials at
http://www.jxta.org/

Gnutella
Peer-to-peer indexing and searching service.
Peer-to-peer point-to-point file downloading using HTTP.
A gnutella node needs a server (or a set of servers) to “start-up”… gnutellahosts.com provides a service with reliable initial connection points

The Gnutella protocol (v0.4)
PING – Notify a peer of your existence
PONG – Reply to a PING request
QUERY – Find a file in the network
RESPONSE – Give the location of a file
PUSHREQUEST – Request a server behind a firewall to push a file out to a client.

Gnutella Decentralized Model

Gnutella Descriptor Header
Descriptor ID uniquely identifies descriptor on the network
Payload Descriptor is 0x00 = Ping, 0x01 = Pong, 0x40 = Push, 0x80 = Query, 0x81 = Response
TTL(0) = TTL(i)+Hops(i)

Gnutella Ping
No payload (i.e., payload length = 0)
Used for probing the network and establishing connections after reception of “Pong”.

Gnutella Pong Descriptor Payload
Responding to “Ping” descriptors.
Enough information to establish connection.
File sharing meta-data.

Gnutella Query Descriptor Payload
For querying the network for a particular file or files  (usually substring of file name).
Quality of Service parameter (minimum speed).

Gnutella Response Descriptor Payload
For positive “File Found” replies to a query.

Gnutella Push Descriptor Payload
For getting files from firewall-protected servents.
Request pushing a file from an internal node to an outside servent.

Gnutella Research Directions
Download failures
Scalability
Fragmented development
Encouragement of content sharing
Reducing browsing downtime
Reducing unnecessary network traffic
Creating and maintaining a healthy network structure –rebalancing, different TTL strategies, priorities
Addressing security concerns.

JXTA
For “juxtapose”, from Bill Joy at Sun.
Connecting devices and applications by providing common P2P services to heterogeneous devices, operating systems, programming languages, and applications.

JXTA Overview
Material from “Web Services Edge” XML Conference, San Jose, CA, October 2002, by Juan Carlos Soto, Sun Microsystems: