Flooding is a basic routing protocol where each node forwards incoming packets to all neighboring nodes, except the node it was received from. This ensures all paths are tried but results in many duplicate packets. Improvements involve adding a hop count or node remembering already forwarded packets to limit duplicates. Flooding provides robustness and optimal paths but is inefficient. Distance vector routing uses neighbor-exchanged routing tables to calculate best paths. Each node maintains a table of distances and next hops to reach each destination. Link state routing involves each node learning neighbors, measuring costs to neighbors, constructing link state packets to share costs, and calculating shortest paths. Hierarchical routing addresses scaling by grouping nodes into regions to reduce routing table sizes at the cost of