RE: Re: PUSH packet !!

rakesh <[email protected]>
Newsgroups gmane.network.gnutella.devel
Message-ID <[email protected]>
Thanks for detailed and very informative reply.

Why do we need to send File Index in PUSH packet ? Because in any case requestor need to ask for a file ones a connection is established between a firewalled peer and requestor. It seems that file index is useless in PUSH packet.It gives  wrong impression to requestor that he  will get the file for that file  index ones firewalled servant connect back !!

Am I correct ?

Thanks.
-Rakesh. 


Philippe Verdy <[email protected]> wrote:                                  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 ?
 
 
     
                       

  
---------------------------------
Looking for earth-friendly autos? 
 Browse Top Cars by "Green Rating" at Yahoo! Autos' Green Center.  

[Non-text portions of this message have been removed]
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.