Hi Peter
You should talk to people like Moak if you want to know the knitty gritty details. But I can answer some general questions.
Yes. searches are broadcasted to connected hosts. However, outgoing searches have a TTL (time to live - average is 7) that decreases in value (-1) every time This prevents network flooding. It's possible for a client to be programmed in such a way that the ttl is significantly higher, such as 20, but most clients downgrade it to the standard of 7 or so.
Search packets/pings are smaller than the pongs sent back by search results. Significantly larger, if I know my stuff. But I don't have any numbers for ya. sorry.
To initially connect to the network, you usually connect to a bootstrap server which finds other hosts for you (eg router.limewire.com).
Gnutella traffic is only routed to known nodes, and not to random addresses. Yes, the classic gnutella creates a ton of traffic by broadcasting exponentially, but it is limited by a TTL. But it doesn't send it to unknown addresses. That would be insane.
Occasionally you'll have the same host get the same search query more than once. But most clients ignore repeated pings.
I've told you about the 0.4 Gnutella protocol specs (only briefly, mind you). Something that works much better is the 0.6 protocol being developed by LimeWire. It's still being finalized, but once the quirks are out of it, I foresee many clients using it as opposed to the 0.4 specs. Let me know if you want to know more about the 0.6 protocol. Another reference to it is UltraPeers.
Hope this explained things a little. I would definitely recommend looking at the 0.4 specs. I think you can find them on LimeWire.com. Or search for it in an engine. It's pretty much everywhere.
:-) |