A topology discovery process is used to discover all of the links in an ad hoc network and thereby ascertain the topology of the entire network. One of the nodes of the network, referred to as the coordinator, receives the topology information which can then be used to, for example, distribute a routing table to each other node of the network. The process has a Diffusion phase in which a k-resilient mesh, k>1, is created by propagating a topology request message through the network. Through this process, the nodes obtain information from which they are able to discern their local neighbor information. In a subsequent, Gathering phase, the local neighbor information is reported upstream from a node to its parents in the mesh and thence to the parents' parents and so forth back to the coordinator. The robustness of the Diffusion phase is enhanced by allowing a node to have more than one parent as well as by a number of techniques, including use of a so-called diffusion acknowledgement message. The robustness of the Gathering phase is enhanced by a number of techniques including the use of timeouts that ensure that a node will report its neighbor information upstream even if it never receives neighbor information from one or more downstream neighbors and the use of a panic mode that enhances the probability that a node will get its neighbor information, and its descendents' neighbor information, reported upstream even if that node has lost connectivity with all of its parents.