Recent advances in unmanned aerial vehicles (UAVs), or drones, have made them able to communicate and collaborate, forming flying ad hoc networks (FANETs). FANETs are becoming popular in many application domains, including precision agriculture, goods delivery, construction, environment and climate monitoring, and military surveillance. These interesting new avenues for the use of UAVs are motivating researchers to rethink the existing research on FANETs. Therefore, this paper provides a comprehensive and thorough review of the different types of UAVs used in FANETs, their mobility models, main characteristics, and applications, as well as the routing protocols used in this type of network. Other important contributions of this paper include the investigation of emerging technologies integrated with FANETs.