## 1 Introduction  
Wireless Sensor Networks (WSN) are intended for monitoring an environment. The main task of a wireless sensor node is to sense and collect data from a certain domain, process them and transmit it to the sink where the application lies. However, ensuring the direct communication between a sensor and the sink may force nodes to emit their messages with such a high power that their resources could be quickly depleted. Therefore, the collaboration of nodes to ensure that distant nodes communicate with the sink is a requirement. In this way, messages are propagated by intermediate nodes so that a route with multiple links or hops to the sink is established. Taking into account the reduced capabilities of sensors, the communication with the sink could be initially conceived without a routing protocol. With this premise, the flooding algorithm stands out as the simplest solution. In this algorithm, the transmitter broadcasts the data which are consecutively retransmitted in order to make them arrive at the intended destination. However, its simplicity brings about significant drawbacks. Firstly, an implosion is detected because nodes redundantly receive multiple copies of the same data message. Then, as the event may be detected by several nodes in the affected area, multiple data messages containing similar information are introduced into the network. Moreover, the nodes do not take into account their resources to limit their functionalities. One optimization relies on the gossiping algorithm [1]. Gossiping avoids implosion as the sensor transmits the message to a selected neighbor instead of informing all its neighbors as in the classical flooding algorithm. However, overlap and resource blindness are still present. Furthermore, these inconveniences are highlighted when the number of nodes in the network increases. Due to the deficiencies of the previous strategies, routing protocols become necessary in wireless sensor networks. Nevertheless, the inclusion of a routing protocol in a wireless sensor network is not a trivial task. One of the main limitations is the identification of nodes. Since wireless sensor networks are formed by a significant number of nodes, the manual assignation of unique identifiers becomes infeasible [2]. The use of potentially unique identifier such as the MAC (Medium Access Control) address or the GPS coordinates is not recommended as it forces a significant payload in the messages [3]. However, this drawback is easily overcome in wireless sensor networks since an IP address is not required to identify the destination node of a specific packet. In fact, attribute-based addressing fits better with the specificities of wireless sensor networks. In this case, an attribute such as node location and sensor type is used to identify the final destination. Once nodes are identified, routing protocols are in charge of constructing and maintaining routes between distant nodes. The different ways in which routing protocols operate make them appropriate for certain applications. In the related literature, there are plenty of proposals concerning routing algorithms in wireless sensor networks. This paper aims at describing the most relevant ones in order to facilitate the understanding of the different routing techniques that could be applied into wireless sensor networks. Specifically, the paper explains some attributed-based, geographic, hierarchical and multipath routing protocols. The most significant Spanish proposals are also described. The rest of the paper is structured as follows. Section 2 shows the basic communication paradigms that wireless sensor networks follow while Section 3 describes the main design constraints that routing protocols must face in wireless sensor networks. In Section 4, we present the most popular classification schemes for routing protocols in this kind of networks. Section 5 outlines the optimization procedures adopted by these routing protocols.