Employing an efficient routing algorithm in satellite networks is a critical issue, because satellite network resources are costly and must be managed in an optimal and effective manner. Because of the particular features of satellite networks, such as dynamic topology, non-homogeneous traffic distribution, limited power and processing capabilities, and high propagation delays, new routing approaches should be developed. In this article, we first examine these properties with particular emphasis on their effect on the routing objectives. Subsequently, we provide a survey of various routing protocols that aims to address the crucial issues stemming from these properties of satellite systems. We classify these protocols according to their objectives, and discuss their advantages and disadvantages. We also elaborate on relevant technical aspects.