RE: Re: Does the Push message still exist?
"Philippe Verdy" <[email protected]>
| Newsgroups | gmane.network.gnutella.devel |
|---|---|
| Organization | Ordinateur Personnel |
| Message-ID | <007d01c86da2$64393760$0a01a8c0@HARNON> |
> -----Message d'origine----- > De : [email protected] [mailto:[email protected]] > De la part de wwiltse25150 > Envoyé : mardi 12 février 2008 14:55 > À : [email protected] > Objet : [the_gdf] Re: Does the Push message still exist? > > Thanks for the good information. I believed that using UDP > was a programmer's preference and not an accepted standard > for certain messages. I used TCP exclusively in my > application so it makes sense I wouldn't see UDP PUSH > messages. That brings up a few more questions for me: > > 1. What port do I listen to so I might catch a UDP message? > Is it the same port I'm connected to other ultrapeers on via TCP? Normally the same port. > 2. Is there any difference in the PUSH message structure sent > vis UDP? I'm just wondering if there will need to be any > changes in my code that increases the hops and decreases the > TTL value. Same structure, but there's an extra header in UDP datagrams to indicate that they are transporting Gnutella protocol (because there's no initial session) > 3. When the firewalled servent receives the PUSH message, > will they respond to the requesting computer using TCP or UDP? A Push message (whever it comes from UDP or TCP) is a request to connect back to a remote host. The response is a connection back with a TCP session to the host indicated in the push message. This connection may be used for allowing the remote host to start, after accepting the TCP session, a HTTP request or a Gnutella connection, or any type of request that requires a session (including chat), as if this remote host sending the Push had initiated the session itself to you agent. Initially the PUSH message was used to reply only to a file transfer request, now it is a more general mecanism to open any kind of TCP session. The sender of the push message once it accepts the back connection, can imediately act as if this was a fresh outgoing session, even though the session is effectively incoming. If you accept a push message and initiate the requested TCP session, just connnect to that host and then act as if it was a new incoming TCP session: wait for the HTTP GET request, or the GNUTELLA CONNECT request, or any kind of TCP session you currently accept. The "raison d'être" of PUSH message is to reach hosts that are otherwise not reachable directly. It is now rare in Gnutella, because setup of firewalled agents is greatly eased by providing help to users about their current "firewalled" status, by autoconfiguring some firewalls using UPNP. Push messages are the nearly last chance, after failures to reach a host. If this even fails, the last possibility is to use another agent acting as a proxy for all the session.