PUSH

From Gnutella2
Revision as of 23:06, 28 February 2014 by Ram (talk | contribs) (→‎Children: Added the /PUSH/TLS child)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Root Packets
CRAWLA - CRAWLR
HAW - LNI
KHL - KHLA - KHLR
PI - PO - PUSH
QKA - QKR
Q2 - QA - QH2 - QHT
UPROC - UPROD

/PUSH

The push packet is used to request that a node initiate a TCP connection to a specified node address. It is useful where the receiving node is unable to accept TCP connections naturally.

For more information about when to use PUSH packets: Reverse Connection (Push) Requests

Sending

An addressed /PUSH packet should be sent to a hub with direct or proxy access to the destination leaf node. It can be sent directly by a hub to one of its leaves without the need for addressing.

Receiving

Upon receiving a /PUSH packet, the local node should initiate a TCP connection to the elected node address and issue a "push handshake", documented below.

Payload

The network address of the node to contact, including of course the port number.

Children

This packet only one known children at the current time, however it is often used with the generic addressing child packet "/?/TO" to indicate that it should be forwarded to a destination:

  • TLS - sending host supports TLS connections

/PUSH/TLS - TLS support indication

If a /PUSH packet contains a /PUSH/TLS child marker, the sending host can accept TLS connections.

Payload

This packet has no payload at the current time.

Children

This packet has no known children at the current time.