Multicasting plays a crucial role in many applications of mobile ad hoc networks (MANETs). It can significantly improve the performance of these networks, the channel capacity (in mobile ad hoc networks, especially single-channel ones, capacity is a more appropriate term than bandwidth, capacity is measured in bits/s and bandwidth in Hz) and battery power of which are limited. In the past couple of years, a number of multicast routing protocols have been proposed. In spite of being designed for the same networks, these protocols are based on different design principles and have different functional features when they are applied to the multicast problem. This paper presents a coherent survey of existing multicasting solutions for MANETs. It presents various classifications of the current multicast routing protocols, discusses their operational features, along with their advantages and limitations, and provides a comparison of their characteristics according to several distinct features and performance parameters. Moreover, this paper proposes classifying the existing multicast protocols into three categories according to their layer of operation, namely, the network layer, the application layer, and the MAC layer. It also extends the existing classification system and presents a comparison between them.