Gnutella, Freenet and Peer to Peer Networks
Download
Report
Transcript Gnutella, Freenet and Peer to Peer Networks
Gnutella, Freenet and
Peer to Peer Networks
By
Norman Eng
Steven Hnatko
George Papadopoulos
Peer to Peer
Fundamentals
No dedicated servers or hierarchy among the
computers
All of the computers are equal
Each computer functions as a client and a server with
no administrator
User on each computer decides what data on their
computer will be shared on the network.
Gnutella and Freenet
Freenet and Gnutella are two leading
protocols for Peer to Peer networking
They both create a decentralized network
of computers, but do so with different
implementations
They handle and distribute data differently
according to their own project goals
Freenet and Gnutella
Freenet and Gnutella are two leading protocols for
peer to peer networking
Both create a decentralized network of computers, but do so
with different implementations
They handle and distribute data differently according to their
own project goals
Gnutella has a much broader user base than Freenet at this
time, due to its easier implementation
Gnutella Basics
Gnutella works by “viral propagation”
Each node of the network simultaneously acts
as a client and server, conducting searches
while listening for incoming queries
Gnutella defines these heterogeneous nodes as
“servents”
Gnutella Basics (cont.)
Properties of the Gnutella Network:
Every node is equal
Every node is both a server as well as a
client
Problems with the Gnutella Network:
The Network cannot be described as a
tree, because there is no hierarchy
The Network can be cyclical, this causes
excessive traffic
Standard Interactions
Connecting to a Server(node)
A node connecting to the network must first connect to a
know node
Client Says: GNUTELLA CONNECT
Server Responds: GNUTELLA OK
Downloading from a Server(node)
HTTP Downloading
Client Request String:
GET /get/1234/bob.mp3 HTTP/1.0
Connection: Keep-Alive
Server Response:
HTTP 200 OK
Server:Gnutella
Content-type:application/binary
Content-length:3289
Gnutella Descriptor
Information
Ping
Used to actively discover hosts on the network
Pong
The response to a Ping
Query
The primary mechanism for searching the distributed
network
Query Hit
The response to a Query
Push/Get
A mechanism that allows a “servent” to contribute/receive
file-based data to the network
HTTP Message Format
3 Major Fields of Information:
Initial line signaling Request/Response
Headers (not mandatory)
Additional Data (not mandatory)
Protocol
To discover nodes, a servent will send out a Ping
descriptor
A servent receiving a Ping is expected to respond
with a Pong and forward the Ping to all other
nodes it is connected to, decreasing the TTL
before forwarding
Pongs may only be sent along the same path as
the incoming Ping
A search is propagated using a Query descriptor
which is also routed to nodes and other nodes
connected to them
Protocol Diagram
3) Routed Ping
2) Outgoing Pong
node
1) Incoming Ping
Discovery
Protocol Diagram
1) Query
2) QueryHit
1) File Transfer
Search
Transfer
How Gnutella Retrieves
Information
Freenet Overview
Objectives of Freenet Protocol
Anonymity for both producers and
consumers of information
Deniability for storers of information
Resistance to attempts by third parties to
deny access to information
Efficient dynamic storage and routing of
information
Decentralization of all network function
Freenet Basics
Network of equal nodes, each acting as
client and server
Information stored on hosts under
searchable keys
Total anonymity of users
Owner of node has no knowledge of information in
node’s datastore
Data stored within nodes is encrypted
Freenet Interactions
Connection to Freenet network
Node connecting to network must obtain existing
node’s address though out-of-band means
Once connected, a new node message is
propagated to randomly selected, connected
nodes so existing nodes learn of new node’s
existence
Freenet Interactions
File Searches
Node’s search string is hashed to key and own datastore
checked on key
If failure, key is sent to one connected node which searches
it’s datastore and if fails, propagates search to one of it’s
connected nodes, HTL decreased
When file is found, search terminates and data is sent back
to searching node, each node along path to searching node
copies data to its own datastore as well
Freenet Searches
Freenet Details
Datastore Key Types
Keyword Signed Key (KSK)
Content Hash Key (CHK) Most Common
Signature Verified Key (SVK)
Name defined by data itself
Provide a “private” key for use with SSK
SubSpace Key (SSK)
Allow users to insert data “under” an SVK
Can create hierarchical data structure under SVK
Freenet Details
Common Message Header Information
UniqueID: 64bit value assigned to generated
message, used to prevent loops
HopsToLive: Number of times a message may be
forwarded before destroyed
Depth: Distance in hops a message has traveled
from its creator
Source: Address identifying sender of message
Freenet Details
Message Types
HandshakeRequest
HandshakeReply
Initiate connection to a node, ensures that node
is connected and protocol versions match
Response to HandshakeRequest
DataRequest
Request from node for data transmission, must
provide key for data as well
Freenet Details
Message Types (cont)
DataReply
DataInsert
Reply of requested data, must provide data to be stored
Request from a node for data to be stored onto network,
requesting node includes data and key
RequestFailed
Signals to sending node that data request failed
Major Differences
Manner in which data is stored
Level of Anonymity
Developer’s Project Design Goals