When a Gnutella2 hub receives a /Q2 query packet from a search client, it needs to provide the client with acknowledgement for several reasons:
- To tell the search client that the query was accepted, and the hub is alive
- To tell the search client which hubs have now effectively been queried (effectively because the query has been tested against their hash tables, even if this did not result in a forward and local process operation)
- To provide the search client with additional hubs to try if it wishes to continue
The compact query acknowledgement lists the hubs which have been queried, and provides some hubs which could be queried later.