Gnutella Forums

Gnutella Forums (https://www.gnutellaforums.com/)
-   General Gnutella / Gnutella Network Discussion (https://www.gnutellaforums.com/general-gnutella-gnutella-network-discussion/)
-   -   Gnutella Technology Help! (https://www.gnutellaforums.com/general-gnutella-gnutella-network-discussion/3161-gnutella-technology-help.html)

freak August 23rd, 2001 09:15 AM

Gnutella Technology Help!
 
I'm interested in figuring out how the Gnutella servents actually work (interacting with each other). I've surfed through a zillion pages (well, not exactly...) and I still can't quite grasp the ideas. I'm hoping someone can shed some light.

1. TCP/IP communication occurs between all the servents?

2. Is there a high occurence or chance of cyclic discovery or cyclic searches? (ie. I am new user A, and I connect to existing Gnutella servent B who is already connected to C and D. So i connect to B and discover C and D and they point me back at B)

3. How does the whole firewall interaction work? A sends a pull request to B (B is behind a firewall). It fails so A sends a push request to B. How does this request GET to B? Through the open ports (the message is disguised) or through an alternate means (A sends a request to C who somehow sends it to B)?

4. HTTP requests only occur for file requests and the rest (searches/discoveries) are done by TCP/IP?

These are the main issues I'm trying to resolve... thanks for ALL your help! (If these questions make no sense... please bare with me)

stan

michas August 23rd, 2001 12:16 PM

well, in the internet everything works by tcp/ip, including http and gnutella.
http usually works by sending a single request for a specific file, and the following answer will be the required file.
gnutella works by constantly sending packages (for queries, replys, pings, pongs and pushes).

when you are using a servent(like limewire, bearshare & co) all querys and answers are made on the gnutella net (i.e. all the people running a gnutella servant), the actual download occurs by http (like if you want do download a www-page.)

for more information, ask google for "gnutella spec" or "gnutella specification".
this will probably answer all your questions :)

hth
michas

freak August 23rd, 2001 02:04 PM

My main question is the communcation through a firewall. How does servent A communicate with servent B (behind a firewall)?

How does a discovery query work?
How does a search query work?
How does a file request work?
(From servent A to servent B)

Is a TCP/IP connection made through an open firewall port? I have a feeling it's quite simple, but I just keep missing the point. Please, if someone could just point it out to me... I'd REALLY appreciate it! Thanks.

stan

michas August 23rd, 2001 02:40 PM

Quote:

Originally posted by freak
My main question is the communcation through a firewall. How does servent A communicate with servent B (behind a firewall)?

servent A cannot open a conection to servent B, but servent B can open a connection to servent A.
so if you are behind a firewall, you will probably only have outgoing conections. and others cannot take your files (http get), they have to ask you to giving the files to them.(gnutella push)

Quote:

How does a discovery query work?
How does a search query work?
How does a file request work?
(From servent A to servent B)

did you read the mentioned page(es)?

freak August 23rd, 2001 02:49 PM

I understand how it THEORETICALLY works and I've read throug the Protocol Specifications v0.4 along with other documents. However, nothing I've come across addresses this in detail. Which is why I'm posting here.

Ok, so servent B (behind the firewall) has only outgoing capabilities... now how does a discovery work with servent A? I join servent A and in return servent A sends me a list of the servents it is connected to and a list of the files it has. How is this RETURN done? Does servent B send out an HTTP request to servent A for the above mentioned information?

I think i'm getting the idea of things though... just a big more! :)
THANKS!

Ahri August 23rd, 2001 03:03 PM

i'm not an expert on this stuff, but i'll tell ya what i know

we have servant A

Servant A connects to another servant in one of 2 ways.

1)Servant A opens a port and listens for incoming connections. Another servant sends a connection request and servant A accepts. (Servant A has to wait to be discovered)

2) Servant A sends a connection request to another servant waiting for incoming connection. (Servant A has to discover another servant)

If a firewall prevents servant A from opening a port and listening for connections, senerio number 1 is impossible, which means the servant can only conncet to others by making the connection itself. Once a connection is made, servant A can communitcate with its host freely with or without a firewall. This means it can send and receive queries and query hits with the servants it is connected too.

Then we have downloading files. When servant A receives a query hit, and wants to download the file, servant A must first open a new connection with the comptuer that has the file. So, servant A sends a connection request to servant B. Then B will send the file to A. If servant B wants to download a file from servant A, and servant A is firewalled and can't accept connections, then instead of sending a conncetion request to A, B sends a Push request. A gets the push request and tries to connect to B, once the connection is established, A sends the file to B.

http://dss.clip2.com/GnutellaProtocol04.pdf
that is the Gnutella protocol specs, it explains everything


All times are GMT -7. The time now is 03:18 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.

Copyright © 2020 Gnutella Forums.
All Rights Reserved.