RE: Re: PUSH packet !!

"Philippe Verdy" <[email protected]>
Newsgroups gmane.network.gnutella.devel
Organization Ordinateur Personnel
Message-ID <[email protected]>
A PUSH packet is a standard Gnutella packet that can be transmitted using
any appropriate connection methods: it will work through UDP according to
UDP usage policy on Gnutella, but if you use TCP, it still requires a valid
TCP Gnutella session, so you'll need the standard Gnutella handshakes...

Actually, PUSH messages are normally sent by a proxy to which a leaf node is
already connected, because the leaf is inaccessible directly from a remote
connection (this leaf node uses a firewall or a NAT router not configured
for port forwarding)

The PUSH message is not actually carrying lot of information, it is an
indication sent by remote node that it is asking to the leaf node to connect
in order to be able to send data or requests to that leaf node. Then the
leaf node just performs the requested outgoing TCP connection to the PUSH
sender, but as soon as it is connected with the GIV command, the connection
stays live, and the PUSH sender will then perform its request to the leaf
node. Once the GIV command has been accepted, the PUSH sender can then send
a HTTP request, or can initiate a Gnutella session, or a chat session
request, as if it was the effective initiator of an outgoing TCP connection.

How to request to that leaf node an incoming connection if you can't reach
it directly? You use one of its existing proxies, and what you have to do is
to reach that proxy.

The PUSH message can then be a UDP message sent to that proxy: the proxy
will forward the PUSH message through its existing TCP connection with the
leaf node (as the connection already exists, no additional handshakes are
needed between the proxy and the leaf node).

You may reach that proxy directly with a UDP message instead of creating an
explicit connection to it: it will be more efficient than trying to connect
to it just to send it a single PUSH message, but this will only work if the
proxy supports the UDP-based protocol extension). But if the proxy does not
support the UDP protocol, the only way to reach the intended proxy is by
using the Gnutella routing with the GUID, using your existing TCP
connection...

In other words: nobody should need to perform a new Gnutella session
handshaking just to send a PUSH message.

> -----Message d'origine-----
> De : [email protected] [mailto:[email protected]] De la part
> de [email protected]
> Envoyé : vendredi 1 juin 2007 18:40
> À : [email protected]
> Objet : [the_gdf] Re: PUSH packet !!
> 
> Quoting rakesh <[email protected]> from ml.gnutella.dev-forum:
> :Can we send a PUSH packet to a Gnutella ultra peer on socket
> connection(TCP) or
> :handshaking is require before sending any Gnutella specific packet ?
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.