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]